配置OpenSearch集群索引监控
索引监控功能用于监测集群索引的运行状态和变化趋势,帮助评估业务使用情况,并能够及时发现潜在风险,确保集群稳定运行。通过收集索引的stats信息,系统能够全面了解索引的性能和使用情况,为运维决策提供数据支持。
原理介绍
索引监控通过以下机制实现:
- 数据采集机制
- 定期收集索引的stats信息(如文档数量、存储大小、分片状态等)。
- 将数据写入监控索引“monitoring-eye-css-*”,按日期滚动存储。
- 默认保留周期为7天,超时后自动删除。
- 监控图表生成
- 通过OpenSearch Dashboards预置Dashboard和自定义Visualizations实现数据可视化。
- 支持时间序列分析、趋势对比、异常检测等场景。
约束限制
- OpenSearch集群仅2.19.0版本支持索引监控功能。
- 索引监控不会监控以“monitoring-eye-css-*”开头的索引,避免使用的该索引名称匹配到监控索引。
- 索引监控不允许删除“monitoring-eye-css-*”的index pattern,否则会导致监控图表异常。
登录OpenSearch Dashboards
登录OpenSearch Dashboards进入命令执行页面。OpenSearch集群支持多种客户端访问,本文仅以CSS服务集成的OpenSearch Dashboards为例介绍配置指导。
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > OpenSearch”。
- 在集群列表,选择目标集群,单击操作列的“Dashboards”,登录OpenSearch Dashboards。
- 在OpenSearch Dashboards左侧导航栏选择“Dev Tools”,进入操作页面。
控制台左侧是命令输入框,其右侧的三角形图标为执行按钮,右侧区域则显示执行结果。
启用索引监控
- 执行如下命令,打开索引监控开关。
PUT _cluster/settings { "persistent": { "css.monitoring.index.enabled": "true" } } - 当需要监控指定索引时,可以执行如下命令,设置监控的采集周期、监控的索引名称、监控索引的保留时间。
PUT _cluster/settings { "persistent": { "css.monitoring.index.enabled": "true", "css.monitoring.index.interval": "30s", "css.monitoring.index.indices": ["index_name"], "css.monitoring.history.duration": "3d" } }表1 索引监控的参数说明 参数
参数类型
描述
css.monitoring.index.enabled
Boolean
索引监控的控制开关,设置为true将打开集群索引监控功能。
默认值:false
css.monitoring.index.interval
Time
索引监控的采集周期。
最小值:1s
默认值:10s
css.monitoring.index.indices
String
监控的索引名称,默认监控所有索引,可以配置监控单个索引,也可以配置通配符监控某一类索引。
例如:
- “"css.monitoring.index.indices": ["index_name"]”表示只监控“index_name”索引。
- “"css.monitoring.index.indices": ["log_*"]”表示监控以“log_”开头的索引。
- “"css.monitoring.index.indices": ["index1", "index2"]”表示监控“index1”和“index2”两个索引。
默认值:*(表示监控所有索引)
css.monitoring.history.duration
Time
监控索引“monitoring-eye-css-*”的保留时间,默认保存一周。
最小值:1d
默认值:7d
查看索引读写流量
当集群启用了索引监控后,支持查询一段时间内的索引读写流量。
- 执行如下命令,查看所有索引读写流量。
GET /_cat/monitoring
- 执行如下命令,查看某一索引的读写流量。
GET /_cat/monitoring/{indexname}{indexName}为需要查看读写流量的索引名称。
- 执行如下命令,查看索引不同时间段的读写流量。
GET _cat/monitoring?begin=1650099461000 GET _cat/monitoring?begin=2022-04-16T08:57:41 GET _cat/monitoring?begin=2022-04-16T08:57:41&end=2022-04-17T08:57:41
|
参数 |
参数类型 |
说明 |
|---|---|---|
|
indexname |
String |
索引名称。 不支持查看系统索引,即以“.”开头的索引。 |
|
begin |
Date |
查看监控的起始时间,UTC时间,默认是当前时间的前5分钟。 支持时间格式:strict_date_optional_time|epoch_millis 默认值:当前时间减去5分钟。 |
|
end |
Date |
查看监控的结束时间,UTC时间,默认是当前时间。 支持时间格式: strict_date_optional_time|epoch_millis 默认值:当前时间。 |
返回信息示例:
index begin end status pri rep init unassign docs.count docs.deleted store.size pri.store.size delete.rate indexing.rate search.rate test 2022-03-25T09:46:53.765Z 2022-03-25T09:51:43.767Z yellow 1 1 0 1 9 0 5.9kb 5.9kb 0/s 0/s 0/s
|
参数 |
说明 |
|---|---|
|
index |
索引名称。 |
|
begin |
查看监控数据的起始时间。 |
|
end |
查看监控数据的结束时间。 |
|
status |
查询监控时间间隔内的索引状态。 |
|
pri |
查询监控时间间隔内的索引的shard数量。 |
|
rep |
查询监控时间间隔内的索引副本数量。 |
|
init |
查询监控时间间隔内的索引的初始化数量。 |
|
unassign |
查询监控时间间隔内的索引的未分配数量。 |
|
docs.count |
查询监控时间间隔内的文档数量。 |
|
docs.deleted |
查询监控时间间隔内的文档删除数量。 |
|
store.size |
查询监控时间间隔内存储的索引大小。 |
|
pri.store.size |
查询监控时间间隔内的索引主分片的大小。 |
|
delete.rate |
监控时间间隔内的索引每秒删除数量。 |
|
indexing.rate |
监控时间间隔内的索引每秒写入数量。 |
|
search.rate |
监控时间间隔内的索引每秒查询数量。 |
通过OpenSearch Dashboards图表查看索引监控
为了方便查看索引的监控信息,CSS服务的索引监控预置了OpenSearch Dashboards的Dashboard和Visualizations图表。
- 通过预置Dashboard图表查看索引监控。
- 单击OpenSearch Dashboards左侧导航栏的“Dashboard”,打开Dashboard界面。
- 单击 “[Monitoring] Index monitoring Dashboard”查看预置Dashboard。
图1 预置dashboard图表
预置dashboard展示集群的每秒读写数量和每秒读写数量前10的索引情况。
表4 预置图表说明 图表名称
说明
[monitoring] markdown
Markdown图表,简单说明dashboard表达的内容。
[monitoring] Indexing Rate (/s)
集群每秒写入文档数。
[monitoring] Search Rate (/s)
集群每秒查询次数。
[monitoring] indexing rate of index for top10
每秒写入文档数最多的Top10索引。
[monitoring] search rate of index for top10
每秒查询次数最多的Top10索引。
[monitoring] total docs count
集群总文档数量变化。
[monitoring] total docs delete
集群总的删除文档数量变化。
[monitoring] total store size in bytes
集群总文档所占用的存储空间变化。
[monitoring] indices store_size for top10
占用存储空间最多的Top10索引。
[monitoring] indices docs_count for top10
文档数量最多的Top10索引。
[monitoring] indexing time in millis of index for top10(ms)
单位时间内文档写入时延最大的Top10索引(ms)。
[monitoring] search query time in millis of index for top10(ms)
单位时间内索引查询时间最大的Top10索引(ms)。
[monitoring] segment count of index for top10
索引Segment数量最多的Top10索引。
[monitoring] segment memory in bytes of index for top10
索引Segment占用堆内存最大的Top10索引。
- 通过自定义Visualizations图表查看索引监控。
索引监控定期把index/stats信息存储到monitoring-eys-css索引中,通过使用OpenSearch Dashboards图表功能可以绘制自定义的图表。
下面以文档数据为例介绍通过图表查看文档数量的变化趋势的操作步骤。
- 单击OpenSearch Dashboards左侧导航栏的“Visualize”进入图形列表。
- 单击“Create visualization”,选择“TSVB” ,进入TSVB绘图页面。
- 设置图表参数,查看Visualizations。
- “Aggregation”选择“Max”,“Field”选择“index_stats.primaries.docs.count”表示主分片的文档数量。
- “Aggregation”选择“Derivative”表示聚合桶之间的差异,“Units”设置为“1s”表示使用每秒代替速率。
- “Aggregation”选择“Positive Only”避免数字重置后出现负数。
- 当需要区分不同索引的情况时,则将“Group by”设置为“Terms”,“By”设置为“index_stats.index”,最终得到的聚合结果将按照索引名称区分。
- 当需要查看不同时间段的数据时,则需要将时间聚合间隔设置好,否则将导致数据显示不完整。在“Panel options”页签,将“Interval”设置为“1m”或“30m”,即可调整“timestamp”的时间间隔。
图2 TSVB绘图页面
图3 设置时间间隔
常见问题:索引监控图表不显示时怎么办?
现象:集群无法查看到预置的Dashboard和Visualizations图表。
解决方案:
- 在集群列表确认集群是否启用安全模式。
图4 确认集群是否启用安全模式
- “安全模式”为“启用”,则切换为Global空间。
在OpenSearch Dashboards页面,单击右上方用户名,选择“Switch tenants”,在Select your tenant页面切换空间,单击“Confirm”,查看图表是否正常显示,如果依旧没有显示则继续执行下一步。
- “安全模式”为“未开启”,则执行下一步。
- “安全模式”为“启用”,则切换为Global空间。
- 在集群列表确认集群的镜像版本号是否大于或等于2.19.0_25.9.0_xxx。
- 集群的镜像版本号不低于2.19.0_25.9.0_xxx,则执行下一步重启索引监控开关。
- 集群的镜像版本号低于2.19.0_25.9.0_xxx,则先重启集群(所有节点)再执行下一步重启索引监控开关。重启操作指导请参见重启OpenSearch集群。
- 重启索引监控开关。
先将“css.monitoring.index.enabled”配置为“false”,再配置为“true”,等待5分钟左右,索引监控图表即可自动显示。
PUT _cluster/settings { "persistent": { "css.monitoring.index.enabled": "true" } }如果图表依旧未显示,则联系技术支持定位处理。