云原生监控告警实战

Posted xingoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生监控告警实战相关的知识,希望对你有一定的参考价值。

继昨天的监控之后,就需要针对特殊指标定义告警。在云原生生态中,可以直接基于Prometheus的另一个组件alertmanager来实现告警机制。

alertmanager原理

原理上,prometheus会根据告警规则判断并检测告警信息,然后发送到alertmanager;alertmanager根据配置决定如何处理告警。

云原生监控告警实战

1 API组件:负责接收prometheus发送的请求信息
2 Alert Provider组件:负责把告警信息存储起来
3 Dispatcher组件:通过订阅的方式从provider获取告警,根据yaml配置分发到不同分组
4 Notifier Pipeline组件:基于责任链模式维护抑制、静默、去重等逻辑
5 Silence Provider组件:存储告警并去重
6 Noify Provider组件:记录日志并广播给其他的alertmanager避免重复告警

prometheus配置

global:
  scrape_interval: 15s 
  evaluation_interval: 15s 
alerting:
  alertmanagers:
    - static_configs:
        - targets: [ 'localhost:9093' ]
rule_files:
  - "job_rules.yml"
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: [ 'localhost:9090' ]
  - job_name: 'flink'
    static_configs:
      - targets: [ 'jobmanager:9999''taskmanager:9999']

配置job_rules.yml文件,设置告警规则:

groups:
 - name: test-rules
   rules:
   - alert: JobDown # 告警名称
     expr: data_operator_session > 0 # 告警的判定条件,参考Prometheus高级查询来设定
     for: 30s # 满足告警条件持续时间多久后,才会发送告警
     labels: #标签项
      team: node
     annotations: # 解析项,详细解释告警信息
      summary: "{{$labels.xxx}}"
      description: "{{$labels.xxx}}"

注意,$labels是prometheus中指标的引用,比如触发告警的指标如下:test{a=1,b=2,} 3,那么就可以使用$labels.a来使用变量a。

然后使用docker命令启动prometheus:

docker run -p 9090:9090 
-v prometheus.yml:/etc/prometheus/prometheus.yml 
-v job_rules.yml:/etc/prometheus/job_rules.yml 
prom/prometheus:v2.25.0

alertmanager配置

alertmanager.yaml配置如下:

global:
  resolve_timeout: 5m
route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://xxxx:9091/'

启动命令如下:

docker run -p 9093:9093 
-v alertmanager.yml:/etc/alertmanager/alertmanager.yml 
prom/alertmanager:v0.21.0 
--config.file=/etc/alertmanager/alertmanager.yaml 
--cluster.advertise-address=0.0.0.0:9093


启动prometheus后可以看到alert页面有告警规则:

当触发告警后alertmanager页面会出现相应的内容消息:


以上是关于云原生监控告警实战的主要内容,如果未能解决你的问题,请参考以下文章

云原生架构-监控告警从openfalcon到Prometheus

云原生之Docker实战使用docker部署nightingale运维监控平台

云原生系列之使用prometheus监控redis集群实战

通过阿里云语音服务实现Zabbix电话告警实战

云原生promehtheus整合grafana实现可视化监控实战

云原生之Docker实战使用Docker部署Prometheus 服务监控系统