如何监控 Elasticsearch 集群节点磁盘使用率 #
简介 #
当系统磁盘使用率过高时,Elasticsearch 集群会出现数据写入不进去的情况,这样很可能导致数据丢失,所以监控 Elasticsearch 集群节点磁盘使用率是很有必要的。本文将介绍如何使用 INFINI Console 告警功能监控 Elasticsearch 集群节点磁盘的使用率。
准备 #
- 下载并安装最新版 INFINI Console
- 使用 INFINI Console 注册 Elasticsearch 集群
创建告警规则 #
在浏览器中打开 INFINI Console,点击左侧菜单 告警管理 > 规则管理
进入告警管理页,然后点击
新建
按钮进入创建告警规则页。按以下步骤创建告警规则:
- 选择集群(这里需要选择 INFINI Console 存储数据的 Elasticsearch 集群,也就是在配置文件
console.yml
配置的 Elasticsearch 集群,如果没有注册到 INFINI Console,请先注册) - 输入告警对象
.infini_metrics*
(选择 Elasticsearch 集群下的索引,或者输入索引 pattern,这里因为 INFINI Console 采集的监控数据存放在索引.infini_metrics
里面) - 输入筛选条件(Elasticsearch 查询 DSL)这里我们需要过滤监控指标类别为
node_stats
,DSL 如下:
{
"bool": {
"must": [
{
"term": {
"metadata.name": {
"value": "node_stats"
}
}
}
]
}
}
- 选择时间字段
timestamp
和统计周期用于做date histogram
聚合
- 输入规则名称
- 分组设置(可选,可配置多个),当统计指标需要分组的时候设置,由于所有注册到 INFINI Console
的 Elasticsearch 集群监控指标都存储在索引
.infini_metrics
里面,所以需要先根据集群 ID 分组,然后再根据节点 ID 分组, 这里我们选择metadata.labels.cluster_id
和metadata.labels.node_id
- 配置告警指标,选择聚合字段
payload.elasticsearch.node_stats.fs.total.free_in_bytes
,统计方法avg
。然后再添加一个告警指标,选择聚合字段payload.elasticsearch.node_stats.fs.total.total_in_bytes
,统计方法avg
。 - 配置指标公式(当配置了一个以上的告警指标的时候,需要设置一个公式来计算目标指标),这里公式
fx 配置为
((b-a)/b)*100
,意思是先用总的磁盘空间
减去剩余磁盘空间
得到磁盘的已使用空间
,然后用磁盘的已使用空间
除以总的磁盘空间
再乘以 100,得到磁盘的使用率
- 配置告警条件,这里配置三个告警条件,配置
持续一个周期
磁盘使用率 大于 80 的时候,触发P2(Medium)
告警;配置持续一个周期
磁盘使用率 大于 90 的时候,触发P1(High)
告警;配置持续一个周期
磁盘使用率 大于 95 的时候,触发P0(Critical)
告警 - 设置执行周期,这里配置一分钟执行一次检查
- 设置事件标题,事件标题是一个模版,可以使用模版变量,模版语法及模版变量用法参考 这里
- 设置事件内容,事件内容是一个模版,可以使用模版变量,模版语法及模版变量用法参考 这里
Priority:{{.priority}}
Timestamp:{{.timestamp | datetime}}
RuleID:{{.rule_id}}
EventID:{{.event_id}}
{{range .results}}
ClusterID:{{index .group_values 0}} ;
NodeID:{{index .group_values 1}} ;
Disk Usage:{{.result_value | to_fixed 2}}%;
Free Storage:{{.relation_values.a | format_bytes 2}};
{{end}}
- 打开配置告警渠道开关,选择右上角
add
快速选择一个告警渠道模版填充,关于怎么创建告警渠道模版请参考 这里 - 设置沉默周期 1 小时,即触发告警规则后,一个小时内只发送通知消息一次
- 设置接收时段,默认 00:00-23:59,即全天都可接收通知消息
设置完成之后点击保存按钮提交。
收到告警通知消息 #
等待一会儿,收到钉钉告警消息通知如下:
可以看到告警通知消息里面显示了磁盘使用率过高的 Elasticsearch 集群 ID,节点 ID,磁盘剩余空间。
查看告警消息中心 #
除了会收到外部通知消息外,INFINI Console 告警消息中心也会生成一条告警消息。点击菜单 告警管理 > 告警中心
进入
小结 #
通过使用 INFINI Console 告警功能, 可以很方便地监控 Elasticsearch 集群节点磁盘使用率。配置告警规则之后,一旦有任何 Elasticsearch 节点磁盘使用率超过设定的阈值就会触发告警并发送告警消息。