1.集群监控
集群监控主要包括两个方面的内容,分别是集群健康情况和集群的运行状态。
集群健康状态可以通过以下api获取:
http://ip:9200/_cluster/health?pretty
关键指标说明:
status:
#集群状态,分为green、yellow和red。
number_of_nodes/number_of_data_nodes: #集群的节点数和数据节点数。
active_primary_shards: #集群中所有活跃的主分片数。
active_shards: #集群中所有活跃的分片数。
relocating_shards: #当前节点迁往其他节点的分片数量,通常为0,当有节点加入或者退出时该值会增加。
initializing_shards: #正在初始化的分片。
unassigned_shards: #未分配的分片数,通常为0,当有某个节点的副本分片丢失该值就会增加。
number_of_pending_tasks: #是指主节点创建索引并分配shards等任务,如果该指标数值一直未减小代表集群存在不稳定因素。
active_shards_percent_as_number: #集群分片健康度,活跃分片数占总分片数比例。
number_of_pending_tasks: #pending task只能由主节点来进行处理,这些任务包括创建索引并将shards分配给节点。
集群状态信息主要包含整个集群的一些统计信息,例如文档数、分片数、资源使用情况等。
集群状态信息可以由以下api获取:
http://ip:9200/_cluster/stats?pretty
关键指标说明:
indices.count:
#索引总数。
indices.shards.total: #分片总数。
indices.shards.primaries: #主分片数量。
docs.count: #文档总数。
store.size_in_bytes: #数据总存储容量。
segments.count: #段总数。
nodes.count.total: #总节点数。
nodes.count.data: #数据节点数。
nodes. process. cpu.percent: #节点CPU使用率。
fs.total_in_bytes: #文件系统使用总容量。
fs.free_in_bytes: #文件系统剩余总容量。
2.节点监控
节点监控主要针对各个节点,有很多指标对于保证ES集群的稳定运行非常重要。
可以通过以下api获取:
http://ip:9200/_nodes/stats?pretty
关键指标说明:
name:
#节点名。
roles:
#节点角色。
indices.docs.count: #索引文档数。
segments.count: #段总数。
jvm.heap_used_percent: #内存使用百分比。
thread_pool.{bulk, index, get, search}.{active, queue, rejected}: #线程池的一些信息,包括bulk、index、get和search线程池,主要指标有active(激活)线程数,线程queue(队列)数和rejected(拒绝)线程数量。
以下一些指标是一个累加值,当节点重启之后会清零。
indices.indexing.index_total: #索引文档数。
indices.indexing.index_time_in_millis: #索引总耗时。
indices.get.total: #get请求数。
indices.get.time_in_millis: #get请求总耗时。
indices.search.query_total: #search总请求数。
indices.search.query_time_in_millis: #search请求总耗时。indices.search.fetch_total:fetch操作总数量。
indices.search.fetch_time_in_millis: #fetch请求总耗时。
jvm.gc.collectors.young.collection_count: #年轻代垃圾回收次数。
jvm.gc.collectors.young.collection_time_in_millis: #年轻代垃圾回收总耗时。
jvm.gc.collectors.old.collection_count: #老年代垃圾回收次数。
jvm.gc.collectors.old.collection_time_in_millis: #老年代垃圾回收总耗时。
一些需要计算的指标: 节点监控的计算指标主要分为两类,分别为请求速率指标和请求处理延迟指标,下面作具体介绍。
index_per_min:
#每分钟索引请求数量。计算公式如下:
#索引请求率=(index_total两次采集差值)/(系统时间差值(ms))×60000 (公式1)
indexAverge_per_min: #索引请求处理延迟。计算公式如下: #索引延迟=(index_time_in_millis两次采集差值)/(index_total两次采集差值) (公式2)
get_per_min: #每分钟get请求数量,计算公式如(公式1),更改相应参数。
getAverage_per_min: #get请求处理延迟,计算公式如(公式2) ,更改相应参数。
merge_per_min: #每分钟merge请求数量,计算公式如(公式1),更改相应参数。
mergeAverage_per_min: #merge请求处理延迟,计算公式如(公式2) ,更改相应参数。
searchQuery_per_min: #每分钟query请求数量,计算公式如(公式1),更改相应参数。
searchQueryAverage_per_min: #query请求延迟,计算公式如(公式2) ,更改相应参数。
searchFetch_per_min: #每分钟fetch请求数量,计算公式如(公式1),更改相应参数。
searchFetchAverage_per_min: #fetch请求延迟,计算公式如(公式2) ,更改相应参数。
youngGc_per_min: #每分钟young gc数量,计算公式如(公式1),更改相应参数。
youngGcAverage_per_min: #young gc请求延迟,计算公式如(公式2) ,更改相应参数。
oldGc_per_min: #每分钟old gc数量,计算公式如(公式1),更改相应参数。
oldGcAverage_per_min: #old gc请求延迟,计算公式如(公式2) ,更改相应参数。
3.索引监控
索引监控指标主要针对单个索引,不过也可以通过“_all”对集群中所有索引进行监控。
索引监控指标可以通过以下api获取:
http://ip:9200/_stats?pretty
关键指标说明:
http://ip:9200/_stats?pretty。 #关键指标说明:
indexname.primaries.docs.count: #索引文档数量。
以下一些指标是一个累加值,当节点重启之后会清零。
indexname.primaries.indexing.index_total: #索引文档数。
indexname.primaries.indexing.index_time_in_millis: #索引总耗时。
indexname.primaries.get.total: #get请求数。
indexname.primaries.get.time_in_millis: #get请求总耗时。
indexname.primaries.search.query_total: #search总请求数。
indexname.primaries.search.query_time_in_millis: #search请求总耗时。indices.search.fetch_total:fetch操作总数量。
indexname.primaries.search.fetch_time_in_millis: #fetch请求总耗时。
indexname.primaries.refresh.total: #refresh请求总量。
indexname.primaries.refresh.total_time_in_millis: #refresh请求总耗时。
indexname.primaries.flush.total: #flush请求总量。
indexname.primaries.flush.total_time_in_millis: #flush请求总耗时。
理解了上面的指标
就可以使用Prometheus和Grafana进行监控展示
下面是我们测试环境的Grafana上展示的Elasticsearch集群的状态
可以看到prometheus采集到的的指标信息还是比较全面的





