学会Elasticsearch中间件,看这篇就够了

更多技术文章,欢迎关注微信公众号“运维之美”

学会Elasticsearch中间件,看这篇就够了)

  • 01 索引相关
  • 02 分片操作
  • 03 集群相关
  • 04 关于ES的监控
  • 05 常用的Elasticsearch管理工具

Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。本篇不探究原理,只总结运维干货,对于运维es来说,掌握本篇es常用的命令和监控,就基本够用了,快来学习吧 。

注:
下面所有curl命令后默认都有-u :认证

  • v参数用于展示请求的详细信息
  • pretty参数:用于它用于格式化响应结果,使其更易读。通过将pretty参数设置为true,可以在响应中的缩进和换行符都格式化展示

01 索引相关

创建索引

[root@localhost~]#curl -u user:'' -X PUT 'http://localhost:9200/test'
{"acknowledged":true,"shards_acknowledged":true,"index":"test"}

查看所有索引

[root@localhost~]# curl -u user:'' -X GET -H 'Content-Type:application/json' 'http://localhost:9200/_cat/indices?v'
health status index             uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   test              SSuzKOqIT_mkc_FFYxs84Q   1   1          0            0       416b           208b

查看指定索引

[root@localhost~]#curl -u user:'' -XGET 'http://172.26.182.102:9200/test'
{"test":{"aliases":{},"mappings":{},"settings":{"index":{"creation_date":"1699602932566","number_of_shards":"1","number_of_replicas":"1","uuid":"D2nxEYndS563x5q0cqQA6g","version":{"created":"7090399"},"provided_name":"test"}}}}

删除指定索引

[root@localhost~]# curl -u user:'' -X DELETE 'http://localhost:9200/test'
{"acknowledged":true}

索引操作命令

/_stats?pretty”  #查看索引的统计信息
/_cluster/health?level=indices&pretty  #查看索引健康状态

02 分片操作

/_cluster/health?level=shards&pretty #查看分片健康状态
/_cat/shards/xxxx?v&pretty #获取索引的分片信息
/_cat/shards #查询分片分配情况,这将返回索引的分片分配情况,
包括每个分片所在的节点和分片状态等。

说明:shard是分片序号,prirep是分片类型 r备分片 p主分片,store是分片大小,如下就是p主分片和r备分片放在不同节点

root@localhost ~]# curl -u user:'password' -H 'Content-Type:application/json'  -XGET 'http://localhost:9200/_cat/shards/test?v&pretty'
index shard prirep state   docs store ip           node
test  0     p      STARTED    0  208b 172.27.1.127 es-host3.default
test  0     r      STARTED    0  208b 172.27.0.192 es-host2.default

设置自动分片平衡

PUT /_cluster/settings  
{  
  "transient": {  
    "cluster.routing.allocation.enable": "all"  
  }  
}  

这将启用自动分片平衡,使Elasticsearch自动在节点之间迁移分片以实现负载均衡。需要注意的是,分片迁移可能会对集群的性能产生影响,特别是在大规模的集群和大量数据的情况下。在进行分片迁移操作之前,建议先进行充分的规划和测试.

当然你也可以手动迁移分片,将index_name替换为要迁移的索引名称,shard_number替换为要迁移的分片编号,from_node替换为源节点的ID,to_node替换为目标节点的ID。这将手动将分片从一个节点移动到另一个节点。

迁移不可将同一个分片的主备分片都存放一个节点

迁移示例

curl -H 'Content-Type:application/json' -XPOST -u user:'password' 'http://localhost:9200/_cluster/reroute' -d
{
  "commands": [
    {
      "move": {
        "index": "filesys",
        "shard": 8,
        "from_node": "3BSzb9B",
        "to_node": "tahW8VN"
      }
    }
  ]
}

#迁移索引filesys的8号分片从“3BSzb9B”节点到“tahW8VN”节点
#节点名称可以从 /_cat/node?v 接口获取

03 集群相关

命令汇总

GET /_cat/nodes:查看所有节点
GET /_cat/master:查看主节点
GET /_cat/health:查看 es 健康状况 
GET /_nodes/stats   #查看节点统计信息
GET /_nodes/hot_threads #查询节点热线程:这将返回节点的热线程信息,
用于识别导致节点性能问题的线程。
GET /_cluster/health  #查看节点健康状况
GET /_cluster/stats #查看集群统计信息
GET /_cluster/settings  #查看集群设置
GET /_cat/nodes?h=heap.max #查看节点堆内存

green

所有的主分片和副本分片都已分配。你的集群是 100% 可用

  • yellow

所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果更多的 分片消失,你就会丢数据了。把 yellow 想象成一个需要及时调查的警告。

  • red

至少一个主分片(以及它的全部副本)都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。

  • number_of_nodes 和 number_of_data_nodes 这个命名完全是自描述的。
  • active_primary_shards 指出你集群中的主分片数量。这是涵盖了所有索引的汇总值。
  • active_shards 是涵盖了所有索引的_所有_分片的汇总值,即包括副本分片。
  • relocating_shards 显示当前正在从一个节点迁往其他节点的分片的数量。通常来说应该是 0,不过在 Elasticsearch
    发现集群不太均衡时,该值会上涨。比如说:添加了一个新节点,或者剔除了一个节点。
  • initializing_shards 是刚刚创建的分片的个数。比如,当你刚创建第一个索引,分片都会短暂处于 initializing
    状态。这通常会是一个临时事件,分片不应该长期停留在 initializing 状态。你还可能在节点刚重启的时候看到
    initializing 分片:当分片从磁盘上加载后,它们会从 initializing 状态开始。
  • unassigned_shards
    是已经在集群状态中存在的分片,但是实际在集群里又找不着。通常未分配分片的来源是未分配的副本。比如,一个有 5 分片和 1
    副本的索引,在单节点集群上,就会有 5 个未分配副本分片。如果你的集群是 red 状态,也会长期保有未分配分片(因为缺少主分片)

04 关于ES的监控

Elasticsearch可以通过在prometheus中安装es_exporter实现各种指标监控

  • elasticsearch容器状态监控
 - alert: elasticsearch容器服务异常
    expr: up{job="es_exporter"} == 0
    for: 2m
    labels:
      severity: warning
    annotations:
      summary:  ""节点:{{ $labels.node_ip }} 上的es容器服务异常
      description: "节点:{{ $labels.node_ip }} 上的es容器服务异常,请检查"
  • elasticsearch集群健康状态yellow监控
 - alert: ElasticsearchClusterYellow
    expr: elasticsearch_cluster_health_status{color="yellow"} == 1
    for: 0m
    labels:
      severity: warning
    annotations:
      summary: Elasticsearch Cluster Yellow (instance {{ $labels.instance }})
      description: "Elastic Cluster Yellow status\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
  • elasticsearch集群健康状态red监控
 - alert: ElasticsearchClusterRed
    expr: elasticsearch_cluster_health_status{color="red"} == 1
    for: 0m
    labels:
      severity: critical
    annotations:
      summary: Elasticsearch Cluster Red (instance {{ $labels.instance }})
      description: "Elastic Cluster Red status\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
  • elasticsearch集群节点数量<3
 - alert: ElasticsearchHealthyNodes
    expr: elasticsearch_cluster_health_number_of_nodes < 3
    for: 0m
    labels:
      severity: critical
    annotations:
      summary: Elasticsearch Healthy Nodes (instance {{ $labels.instance }})
      description: "Missing node in Elasticsearch cluster\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
  • elasticsearch数据磁盘使用率超过90%
  - alert: ElasticsearchDiskOutOfSpace
    expr: elasticsearch_filesystem_data_available_bytes / elasticsearch_filesystem_data_size_bytes * 100 < 10
    for: 0m
    labels:
      severity: critical
    annotations:
      summary: Elasticsearch disk out of space (instance {{ $labels.instance }})
      description: "The disk usage is over 90%\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}

更多监控指标

https://samber.github.io/awesome-prometheus-alerts/rules

05 常用的Elasticsearch管理工具

通过命令行管理es集群,通常对于运维人员能力要求较高,Elasticsearch也有很多的管理和监控工具,用于简化和便捷地管理Elasticsearch集群。以下是一些常用的Elasticsearch管理工具

  • Kibana:Kibana是一个开源的数据可视化平台,可以用于管理和监控Elasticsearch集群。它提供了一个用户友好的Web界面,用于创建和管理索引、执行查询、创建仪表板和可视化等。

  • Elasticsearch Curator:Elasticsearch
    Curator是一个用于管理和维护Elasticsearch集群的工具。它可以用于定期清理过期的索引、优化索引、快照和还原等操作。

  • Elasticsearch HQ:Elasticsearch

    HQ是一款开源的解决方案,基于Web的图形化界面,用于监控和管理Elasticsearch集群。它提供了实时的集群状态、节点健康状况、索引和分片信息、查询性能等。

  • Elasticsearch Head:Elasticsearch

    Head是一个基于Web的图形化界面,用于浏览和管理Elasticsearch集群。它可以查看索引、文档、映射、查询等信息,并提供一些简单的操作功能。

  • Elastic Cloud:Elastic

    Cloud是Elasticsearch官方提供的托管服务,用于简化Elasticsearch集群的部署和管理。它提供了一个易于使用的控制台,可以轻松地创建、扩展和监控Elasticsearch集群。

感兴趣的朋友可以安装试用一下,有用的话记得关注点赞哦!

你可能感兴趣的:(Linux,运维,中间件,elasticsearch,中间件,大数据)