为保证Elasticsearch集群的正常运行,需要对集群的CPU负载,JVM使用率,磁盘使用率等指标进行监控。当这些指标达到阈值时及时处理,保证Elasticsearch集群的正常运行。
Elasticsearch 提供了丰富的API可以获取集群的监控指标,可以参考[Elasticsearch Cat Api]。通过API拉取集群指标进行监控的方式,用户需要自行拉取关注的指标,并编写相应的处理逻辑,过程相对繁琐。Elasticsearch还提供了一种方便高效的集群指标监控方式--Elastic Altering。
Elastic Altering可以监控上报到Elasticsearch中数据的变化和异常,并执行相应的动作,参考Elasticsearch Altering。对于开启了集群监控的集群(未开启的参考configuring-monitoring),其监控数据已经上报到了Elasticsearch中,因此只需要添加对相应指标数据的altering即可实现对这些指标的监控。另外Altering还提供了如email, webhook等方式的告警处理动作,为用户通知和处理指标异常提供了快速便捷的方式。本文将实践对集群的节点CPU Load 1配置altering,并通过邮件方式发送邮件。
为了在触发告警时,使用Altering向用户发送邮件,需要至少为Elasticsearch集群配置一个邮箱账号。
本文使用Outlook邮箱,elasticsearch.yml中的配置如下:
xpack.notification.email.account:
outlook_account:
profile: outlook
email_defaults:
from: xxxxxxx@live.com
smtp:
auth: true
starttls.enable: true
host: smtp-mail.outlook.com
port: 587
user: xxxxxxxxx@live.com
password: xxxxxxxxx
这里需要注意以下几点问题
xpack.notification.email.account.outlook_account.smtp.secure_password
中email_defaults
,否则会收到如下报错
本次实践要配置的告警规则为:单节点CPU Load1 > 4
告警配置页面路径为:
Management-> Watcher -> create threshold alert, 如下图
点击create threshold alert后会出现如下界面
根据实际情况添加内容如下
Name: CPU_LOAD
Indices to query: .monitor-es-*
Time field: timestamp
Run watch every: 1 minitues
When: max()
OF: node_stats.os.cpu.load_average.1m
GROUPED BY: top 5 'source_node.name'
IS_ABOBE: 4
FOR THE LAST: 5minutes
To e-mail address: xxxx@live.com
subject: 日志ELK监控告警:集群CPU Load 超过阈值
Body: 节点{{ctx.payload.results.0.key}} CPU Load 为[{{ctx.payload.results.0.value}}] 超过阈值[{{ctx.metadata.watcherui.threshold}}]
其中邮件发送中使用的上下文变量参考:watch-execution-context
经过上述配置,当集群中出现节点CPU load1 超过4 并持续5分钟以上,便会发邮件到指定邮箱,从而实现对集群的监控。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。