Elasticsearch 监控核心指标主要从5个层面入手,分别是集群健康层面、JVM 层面、系统健康层面、请求层面和索引层面。Es 监控工具方面有很多种形式,传统的 zabbix 可以监控系统级别的数据、ES 公司推出的商业化监控方案 Marvel、查看索引数据的 head 工具、可视化查询及写入工具 Kibana 等等。
索引层面
索引(indexing)其实主要是针对数据的写入,写入操作又指新建、修改和删除文档,其中修改操作本质上是先删除,后新建。索引操作对应 es 底层主要就是 translog、refresh、flush 和 merge。
translog
translog 指写入到一个记录文件,类似于 MySQL 的 binlog 或 Redis 的 aof;当接到写请求或者修改请求的时候,就会写一份数据到 trasnlog 文件中。
当 es 发生故障时,es 通过 translog 恢复数据,其主要作用是保证数据的安全性。
如上图可以看出,对 es 的每次请求都会对 translog 进行操作,translog 再写入磁盘,默认情况下 translog 操作是实时的,非常频繁,所以对 translog 监控主要是为了进行性能方面的监控。
监控相关 API
Elasticsearch 中集群相关的健康、统计等相关的信息都是围绕着 cat
API 进行的。
通过 GET 请求发送 cat,下面列出了所有可用的 API:
GET /_cat
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
查看 es 集群的索引统计
cat 后面加 indices,更多内容查看 es 查看所有索引情况。
已指定字段的排序方式列出相关统计信息
通过加排序的参数 s 和排序方式 :{desc|asc} 形式返回统计信息,示例内容查看 es(Elasticsearch)以索引名(或指定字段值)进行排序返回。