本节重点介绍 :

  • 告警回调能用来做什么
  • 报警回调执行命令过程
  • 回调重启服务实战

告警回调能用来做什么

  • 重启服务
  • 抓火焰图
  • 硬件告警回调换配件工单

回调架构图

44.1 告警自愈之回调重启服务实战_重启

报警回调执行命令过程

  • prometheus配置rule规则生成报警发往alm
  • alm根据配置好的receive发往回调处理程序
  • 处理程序解析报警中的app ip等信息触发动作
  • 控制节点发送命令给目标机器

回调重启服务的playbook

- name: restart for {{ app }}
  hosts: all
  user: root
  gather_facts:  false
  become_user: root

  tasks:



      #重启服务
      - name: restart for {{ app }}
        systemd:  name={{ app }} state=restarted
        register: result
      - name: Show debug info
        debug: var=result verbosity=0

实验 效果

  • 通过告警触发,打给callback处理程序
  • callback处理程序解析字段 和标签,选择不同的playbook
  • 根据instance标签调ansible-api 执行动作

准备alertmanger.yml

global:
  resolve_timeout: 30m

route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'callback'
  routes:                                       #子路由,父路由的所有属性都会被子路由继承


receivers:
- name: 'callback'
  webhook_configs:
  - url: 'http://127.0.0.1:5004/alert/callback'

准备rule_callback.yml

groups:
 - name: g12
   rules:
   - alert: mem_callback
     expr: node_memory_MemTotal_bytes > 0
     for: 10s
     labels:
       app: prometheus
       severity: warning
     annotations:
       summary: "服务器: {{$labels.alertname}} 内存报警"
       description: "回调测试"
       value: "{{ $value }}"

启动告警回调处理程序 alert_callback.py

传入restart_service.yaml 变量执行restart服务

44.1 告警自愈之回调重启服务实战_ajax_02

44.1 告警自愈之回调重启服务实战_javascript_03

本节重点总结 :

  • 告警回调能用来做什么
  • 报警回调执行命令过程
  • 回调重启服务实战