最近遇到的一个case,记录下来:
假设有1套ES集群,包括3个节点
192.168.31.181:9200
192.168.31.182:9200
192.168.31.183:9200
如果使用的的监控方法是连接elasticsearch_exporter到单个es节点,采集全部节点的指标 :
即如下写法:
./elasticsearch_exporter --es.uri="http://192.168.31.181:9200" --web.listen-address=:9944 --es.timeout=5s --es.all
这种情况下,可能会遇到下面这种情况:
1、192.168.31.181:9200 这个ES的负载太高或者宕机了,elasticsearch_exporter采集到的数据会很少,从 elasticsearch_node_stats_up 这个值是否等于0判断出当前被采集的节点是否异常
2、非192.168.31.181:9200 的其余的ES节点宕机了,从监控指标看不一定能反映出来(例如这个节点上没有任何索引,因此节点宕机也可能不会触发reblance,也就是不会出现集群变黄的情况)
这种情况下,有2个建议的方案:
方案1:给每个es节点都配一个elasticsearch_exporter
./elasticsearch_exporter --es.uri="http://192.168.31.181:9200" --web.listen-address=:9944 --es.timeout=5s --es.node="_local"
./elasticsearch_exporter --es.uri="http://192.168.31.182:9200" --web.listen-address=:9945 --es.timeout=5s --es.node="_local"
./elasticsearch_exporter --es.uri="http://192.168.31.183:9200" --web.listen-address=:9946 --es.timeout=5s --es.node="_local"
然后,加一个告警规则: elasticsearch_node_stats_up{} != 1 就触发告警 (具体告警表达式的过滤规则根据实际情况调整)
方案2: 使用blackbox_exporter的tcp_connect探测去监控每个es节点的9200端口
然后,加一个告警规则: probe_success{} == 0 就触发告警 (具体告警表达式的过滤规则根据实际情况调整)
下面简单介绍下方案2的配置方法:
假设prometheus和blackbox_exporter等相关的监控组件都部署在 192.168.31.110 上
1 启动blackbox_exporter:
./blackbox_exporter --web.listen-address :19094
2、添加prometheus采集target
# cat prometheus.yml
- job_name: 'elasticsearch_port'
scrape_interval: 15s
scrape_timeout: 5s
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets: ['192.168.31.181:9200','192.168.31.182:9200','192.168.31.183:9200']
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.31.110:19094
3、添加告警规则
# cat rules/tcp_port.yml
groups:
- name: probe_success
rules:
- alert: probe_success
expr: probe_success == 0
for: 1m
labels:
severity: critical
annotations:
summary: "接口/主机/端口 {{ $labels.instance }} 无法联通"
description: "请尽快检测"
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。