阿里云Elasticsearch为运行中的集群提供了多项基础监控指标(例如集群状态、集群查询QPS、节点CPU使用率、节点磁盘使用率等),还提供了高级监控报警中的多项指标(例如Cluster、Index、Note Resource等),用来监测集群的运行状况。您可以根据这些指标,实时了解集群的运行状况,及时处理潜在风险,保障集群稳定运行。本文介绍如何查看集群监控详情,以及各监控指标含义、异常原因和异常处理建议。

查看集群监控详情

  1. 登录阿里云Elasticsearch控制台
  2. 在左侧导航栏,单击Elasticsearch实例
  3. 在顶部菜单栏处,选择资源组和地域,然后在实例列表中单击目标实例ID。
  4. 在左侧导航栏,单击集群监控
  5. 查看监控详情。

集群状态

  • 指标含义
    集群状态监控指标展示了集群的健康度,数值为0.00时表示正常。此监控指标必须配置,配置方法请参见配置集群告警。指标各数值的含义如下。
    数值 颜色 状态 说明
    2.00 红色 不是所有的主分片都可用。 表示该集群中某个或某几个索引的主分片丢失(unassigned)。
    1.00 黄色 所有主分片可用,但不是所有副本分片都可用。 表示该集群中某个或某几个索引的副本分片丢失(unassigned)。
    0.00 绿色 所有主分片和副本分片都可用。 表示该集群中的所有索引都很健康,不存在丢失(unassigned)的分片。
    说明 表中的颜色是指在实例的基本信息页面所看到的集群状态的颜色。
  • 指标异常原因
    监控期间,当指标数值不为0.00时,表示集群状态异常,常见原因如下:
    • 节点的CPU或HeapMemory使用率过高,甚至达到100%。
    • 节点的磁盘使用率过高(例如节点磁盘使用率超过85%),甚至达到100%。
    • 节点的load_1m负载过高。
    • 集群中索引的健康度出现过非健康(非绿色)状态。
  • 异常处理建议
    • Kibana控制台的Monitoring页面查看监控信息,或者查看实例的日志,获取问题的具体信息,并排查解决(例如索引占用内存太大,可删除一些索引)。
    • 对于磁盘使用率过高导致集群异常的情况,建议参见集群磁盘使用率过高和read_only问题的排查与处理方法排查解决。
    • 对于1核2 GB规格的实例,遇到实例状态不正常的问题时,建议先按照1:4(CPU:Mem)的规格升配集群,增大实例规格。升配后,如果状态依然异常,建议参见以上两种方案排查解决。

慢查询耗时分布

  • 指标含义

    该指标展示了集群在每500ms内,慢查询的数量分布。

    例如:获取2021.10.15~2021.10.16区间内慢查询分布,0ms≤search_time_ms(慢查询耗时)<500ms,此区间分布了10000条慢查询日志;500ms≤search_time_ms(慢查询耗时)<1000ms,此区间分布了20000条慢查询日志。耗时分布时间按照500ms间隔进行累加。

  • 指标异常原因
    监控期间,当区间慢查询耗时,查询数量增大时,服务异常,常见原因如下:
    指标异常原因 说明
    QPS 查询QPS写入QPS流量突增或波动较大,集群压力大,相对单条查询耗时久。
    有agg查询或者有脚本查询 聚合查询场景,需要耗用大量的计算资源做数据聚合,尤其是内存,在使用时请注意。
    term查询数值字段 大批量的数值型byte、short、integer、long字段做term查询时,在构造docid集合的bitset很费时,会影响查询速度。如果该数值字段没有range和agg聚合需求,建议改为keyword类型字段。
    模糊匹配 通配符和正则表达式、模糊查询,需要遍历倒排索引中的词条列表来找到所有的匹配词条,进而逐个词条地收集对应的文档ID。尤其在未压测的前提下,大批量的查询,会耗用大量的计算资源,建议使用前结合场景压测,选择合适的量级。
    存在个别慢查询或慢写入请求 此情况下,查询和写入QPS流量波动较小或不明显,可在阿里云Elasticsearch控制台中的查询日志页面,单击searching慢日志查看分析。
    集群中存在大量索引或总分片数量非常多 由于Elasticsearch会监控集群中的索引并写入日志,因此当总索引或总分片数量过多时,容易引起CPU或HeapMemory使用率过高,或load_1m负载过高,影响整个集群查询速度。
    在集群上执行过Merge操作 Merge操作会消耗CPU资源,对应节点的Segment Count会突降,可在Kibana控制台中节点的Overview页面查看。
    执行过gc操作 gc操作会尝试释放内存(例如full gc),消耗CPU资源,可能会导致CPU使用率突增,影响查询速度。
    执行过定时任务 数据备份或其他自定义任务,需要占用大量的IO资源,影响查询速度。

集群写入QPS(Count/Second)

注意 如果写入QPS流量突增,可能引起CPU使用率、HeapMemory使用率或load_1m负载过高,影响集群服务,请尽量避免这种情况。

指标含义

集群写入QPS监控指标展示了集群每秒写入文档的数量。具体说明如下:
  • 如果1秒内,客户端向集群发送了1个只包含单个文档的写入请求,则对应1个写入QPS。如果1秒内发送了多个写入请求,则累加统计。
  • 如果1秒内,通过_bulk API在一个写入请求中批量写入了多个文档,则写入QPS参考该请求中批量推送的总文档个数。如果1秒内发送了多个_bulk API批量写入请求,则累加统计。

集群查询QPS(Count/Second)

注意 如果查询QPS流量突增,可能引起CPU使用率、HeapMemory使用率或load_1m负载过高,影响集群服务,请尽量避免这种情况。

指标含义

集群查询QPS监控指标展示了集群每秒执行的查询QPS数量,查询QPS数量与待查询索引的主分片个数有关。

例如:待查询索引有5个主分片,则一次查询请求对应5个QPS。

index写入QPS

  • 指标含义
    该监控指标展示了索引每秒写入文档的数量。具体说明如下:
    • 如果1秒内,客户端向该索引发送了1个只包含单个文档的写入请求,则对应1个写入QPS。如果1秒内发送了多个写入请求,则累加统计。
    • 如果1秒内,通过_bulk API在一个写入请求中批量写入了多个文档,则写入QPS参考该请求中批量推送的总文档个数。如果1秒内发送了多个_bulk API批量写入请求,则累加统计。
  • 指标异常原因
    监控期间,该指标可能存在没数据,常见原因如下:
    • 集群压力大,影响集群监控数据的正常采集。
    • 监控数据未成功推送。
    注意 索引写入QPS流量突增,可能就是该索引引起了集群CPU使用率、HeapMemory使用率或load_1m负载过高,影响整个集群服务,可以针对该索引进行优化。

index查询QPS

  • 指标含义

    该监控指标展示了索引每秒执行的查询QPS数量,查询QPS数量与待查询索引的主分片个数有关。

    例如:待查询索引有5个主分片,则一次查询请求对应5个QPS。

  • 指标异常原因
    监控期间,该指标可能存在没数据,常见原因如下:
    • 集群压力大,影响集群监控数据的正常采集。
    • 监控数据未成功推送。
    注意 索引查询QPS流量突增,可能就是该索引引起了集群CPU使用率、HeapMemory使用率或load_1m负载过高,影响整个集群服务,可以针对该索引进行优化。

节点CPU使用率(%)

  • 指标含义

    节点CPU使用率监控指标展示了集群中各节点的CPU使用率百分比。当CPU使用率较高或接近100%时,会影响集群服务。

  • 指标异常原因
    监控期间,当指标数值突增或波动较大时,服务异常,常见原因如下:
    指标异常原因 说明
    QPS 查询QPS写入QPS流量突增或波动较大。
    存在个别慢查询或慢写入请求 此情况下,查询和写入QPS流量波动较小或不明显,可在阿里云Elasticsearch控制台中的日志查询页面,单击searching慢日志查看分析。
    集群中存在大量索引或总分片数量非常多 由于Elasticsearch会监控集群中的索引并写入日志,因此当总索引或总分片数量过多时,容易引起CPU或HeapMemory使用率过高,或load_1m负载过高。
    在集群上执行过Merge操作 Merge操作会消耗CPU资源,对应节点的Segment Count会突降,可在Kibana控制台中节点的Overview页面查看。
    执行过gc操作 gc操作会尝试释放内存(例如full gc),消耗CPU资源。可能会导致CPU使用率突增。
    执行过定时任务 数据备份或其他自定义任务。

节点HeapMemory使用率(%)

  • 指标含义

    节点HeapMemory使用率监控指标展示了集群中各节点的HeapMemory使用率百分比。当HeapMemory使用率较高或存在较大的内存对象时,会影响集群服务,也会自动触发gc操作。

  • 指标异常原因
    监控期间,当指标数值突增或波动较大时,服务异常,常见原因如下:
    指标异常原因 说明
    QPS 查询QPS写入QPS流量突增或波动较大。
    存在个别慢查询或慢写入请求 此情况下,查询和写入QPS流量波动较小或不明显,可在阿里云Elasticsearch控制台中的日志查询页面,单击searching慢日志查看分析。
    存在大量慢查询或慢写入请求 此情况下,查询和写入QPS流量波动较大或很明显,可在阿里云Elasticsearch控制台中的日志查询页面,单击indexing慢日志查看分析。
    集群中存在大量索引或总分片数量非常多 由于Elasticsearch会监控集群中的索引并写入日志,因此当总索引或总分片数量过多时,容易引起CPU或HeapMemory使用率过高,或load_1m负载过高。
    在集群上执行过Merge操作 Merge操作会消耗CPU资源,对应节点的Segment Count会突降,可在Kibana控制台中节点的Overview页面查看。
    执行过gc操作 gc操作会尝试释放内存(例如full gc),消耗CPU资源。可能会导致HeapMemory使用率突降。
    执行过定时任务 数据备份或其他自定义任务。

节点load_1m

  • 指标含义
    节点load_1m监控指标展示了集群中各节点在1分钟内的负载情况,表示各节点的系统繁忙程度。该指标的正常数值,应该低于对应节点规格的CPU核数。以单核的Elasticsearch节点为例,指标各数值的含义如下。
    节点load_1m 说明
    <1 没有等待的进程。
    =1 系统无额外的资源运行更多的进程。
    >1 进程拥堵,等待资源。
  • 指标异常原因
    监控期间,当指标数值超过节点规格的CPU核数时,服务异常,常见原因如下:
    • 节点的CPU或HeapMemory使用率过高,甚至达到100%。
    • 查询QPS写入QPS流量突增或上涨较大。
    • 存在耗时较大的慢查询。

      可在阿里云Elasticsearch控制台中的日志查询页面,打开对应日志查看分析。

节点磁盘使用率(%)

指标含义

节点磁盘使用率监控指标展示了集群中各节点的磁盘使用率百分比。建议将磁盘使用率报警阈值控制在75%以下,不要超过85%。否则默认数据节点的磁盘使用率可能会出现以下情况,影响集群服务。
节点磁盘使用率 说明
>85% 新的shard无法分配。
>90% 集群会尝试将节点中的shard,迁移到其他磁盘使用率较低的数据节点中。
>95% Elasticsearch会为集群中的每个索引强制设置read_only_allow_delete属性,此时索引将无法写入数据,只能读取和删除。
注意 强烈建议您配置该监控指标,以便在发生报警时,及时扩容磁盘和节点,或清理索引数据等,避免影响集群服务。

old区使用

  • 指标含义

    该指标展示了集群中各节点堆内存old区的使用大小。当old区占用较高或存在较大的内存对象,会影响集群服务,会自动触发gc操作,大对象回收可能会出现gc耗时较长或full gc。

  • 指标异常原因
    监控期间,当指标数值突增或波动较大时,服务异常,常见原因如下:
    指标异常原因 说明
    QPS 查询QPS写入QPS流量突增或波动较大。
    有agg查询或者有脚本查询 聚合查询场景,需要耗用大量的计算资源做数据聚合,尤其是内存,在使用时请注意。
    term查询数值字段 大批量的数值型byte、short、integer、long字段做term查询时,在构造docid集合的bitset很费时,会影响查询速度。如果该数值字段没有range和agg聚合需求,建议改为keyword类型字段。
    模糊匹配 通配符和正则表达式、模糊查询,需要遍历倒排索引中的词条列表来找到所有的匹配词条,进而逐个词条地收集对应的文档ID。尤其在未压测的前提下,大批量的查询,会耗用大量的计算资源,建议使用前结合场景压测,选择合适的量级。
    存在个别慢查询或慢写入请求 此情况下,查询和写入QPS流量波动较小或不明显,可在阿里云Elasticsearch控制台中的查询日志页面,单击searching慢日志查看分析。
    存在大量慢查询或慢写入请求 此情况下,查询和写入QPS流量波动较小或不明显,可在阿里云Elasticsearch控制台中的查询日志页面,单击indexing慢日志查看分析。
    集群中存在大量索引或总分片数量非常多 由于Elasticsearch会监控集群中的索引并写入日志,因此当总索引或总分片数量过多时,容易引起CPU或HeapMemory使用率过高,或load_1m负载过高。
    在集群上执行过Merge操作 Merge操作会消耗CPU资源,对应节点的Segment Count会突降,可在Kibana控制台中节点的Overview页面查看。
    执行过gc操作 gc操作会尝试释放内存(例如full gc),消耗CPU资源,可能会导致HeapMemory使用率突降。
    执行过定时任务 数据备份或其他自定义任务。

old gc频次

  • 指标含义

    集群中各个节点old区gc回收数量,当old区占用较高或存在较大的内存对象,会影响集群服务,会自动触发gc操作,大对象回收可能会出现gc耗时较长或full gc。

  • 指标异常原因

    请参见old区使用的指标异常原因。

old gc耗时

  • 指标含义

    集群中各个节点old区gc回收平均耗时,当old区占用较高或存在较大的内存对象,会自动触发gc操作,大对象回收可能会出现gc耗时较长或full gc。

  • 指标异常原因

    请参见old区使用的指标异常原因。

fielddata内存使用

  • 指标含义

    集群中fielddata内存占用情况,监控曲线越高,说明堆内存存在大量的fielddata数据缓存,过大的fielddata内存占用会触发fielddata内存熔断,影响集群稳定性。

  • 指标异常原因
    监控期间,当指标占用大量的堆内存时,可能会出现服务异常,常见原因如下:
    • 查询中存在大量对字符串(text)字段做排序或者聚合的操作,该类查询fielddata默认不会被回收,建议使用数值型字段类型。
    • 查询QPS写入QPS流量突增或波动较大,fielddata数据频繁的进行缓存。
    • 集群中存在大量索引或总分片数量非常多。由于Elasticsearch会监控集群中的索引并写入日志,因此当总索引或总分片个数过多时,容易引起CPU或HeapMemory使用率过高,或load_1m负载过高。

FullGc次数(个)

注意 当系统出现频繁full gc时,会影响集群服务。
  • 指标含义

    FullGc次数监控指标展示了集群中1分钟内的gc总次数。

  • 指标异常原因
    监控期间,当指标数值不为0时,服务异常,常见原因如下:
    • HeapMemory使用率较高。
    • 存在较大的内存对象。

Exception次数(个)

  • 指标含义

    Exception次数监控指标展示了集群的主日志中,一分钟内出现的警告级别日志的总个数。

  • 指标异常原因
    监控期间,当指标数值不为0时,服务异常,常见原因如下:
    • 查询请求可能存在异常。
    • 写入请求可能存在异常。
    • Elasticsearch执行任务时,遇到异常。
    • 执行过gc操作。
  • 异常处理建议
    可在阿里云Elasticsearch控制台中的日志查询页面,单击主日志。在主日志页面,根据时间点查看详细异常信息,并分析异常原因。
    说明 如果主日志中有gc记录,也会在Exception次数监控指标中统计展示。

快照状态

  • 指标含义
    快照状态监控指标展示了Elasticsearch控制台中,自动备份功能的快照状态。当指标数值为-1或0时,表示服务正常。指标各数值的含义如下。
    快照状态 说明
    0 有快照。
    -1 没有快照。
    1 正在进行快照。
    2 快照任务失败。
  • 指标异常原因
    指标数值为2时,服务异常,常见原因如下:
    • 节点磁盘使用率很高或接近100%。
    • 集群不健康。