基於django的alertmanager釘釘告警及告警記錄

基於django的alertmanager釘釘告警及告警記錄

寫了個alertmanager的釘釘告警接口,圖貼不過來,可以去看readme

github: https://github.com/huangwjwork/dingding_robot_alertmanager

基於django實現的alertmanager釘釘告警消息推送,同時記錄推送的告警內容,包括告警名,實例,時間,次數,接收人等等

告警消息記錄在mysql中,通過grafana查詢mysql顯示不同規則下TOP10的告警,當前未解除告警,以及最近100條告警記錄

告警中只存儲了通用字段,自定義的labels如果需要保存請自行修改api/modules.py

單receiver可對應多個釘釘機器人,用來解決釘釘API每分鐘請求限制20次

目前還處於學習階段,實現的比較粗糙,也沒有做異常處理,有問題請在issue中指出

開發環境

python 3.7.3
django 2.1.8
mysql 5.7.27
alertmanager v0.18.0
prometheus v2.11.2

結構說明

dingding_robot_alertmanager/
├── api
│   ├── admin.py	# admin
│   ├── apps.py
│   ├── dingtalk.py	#釘釘函數
│   ├── __init__.py
│   ├── models.py	# 數據庫初始化
│   ├── templates
│   ├── test	# 測試內容,無意義
│   │   ├── 000alert.py
│   │   ├── alert-msg.json	# alert json
│   │   ├── post_firing.py	# alertmanager post firing
│   │   ├── post_resolved.py	# alertmanager post resolved
│   │   ├── test_prometheus.yaml	# k8s配置文件,prometheus alertmanager 及config
│   │   └── time_reverse.py		# 時間轉換,無意義
│   ├── tests.py
│   └── views.py	# api邏輯
├── dingding_robot_alertmanager
│   ├── __init__.py
│   ├── settings.py		# django配置文件
│   ├── urls.py
│   └── wsgi.py
├── grafana-dashboard	# grafana dashboard
│   └── alert-1566911356524.json
├── images	# 圖片
│   ├── admin-index.bmp
│   ├── admin-receivers.bmp
│   ├── alert.bmp
│   └── grafana.bmp
├── manage.py
├── README.md
└── requirements.txt	# pip依賴

部署

安裝Python3,並安裝依賴包

pip3 install -r requirements.txt

mysql創建數據庫

create database prometheus_alert default charset utf8;

mysql建表

python3 manage.py makemigrations api
python manage.py migrate

創建django admin後臺管理員賬號

python3 manage.py createsuperuser

啓動應用

python3 manage.py runserver 0.0.0.0:8000

django admin後臺 http://localhost:8000/admin

在後臺receivers中添加釘釘機器人,同一receiver可以添加多個webhook,用receiver_num進行區分和標記

alertmanager中添加receiver和route

example.yml

global:
templates: 
- '/etc/alertmanager/template/*.tmpl'
route:
  group_by: ['alertname','job']
  group_wait: 30s
  group_interval: 15s
  repeat_interval: 1m
  receiver: 'ops'
  routes:
  - match:
      job: 'prometheus'
    receiver: 'dev'
    
receivers:
- name: 'dev'
  webhook_configs:
  - send_resolved: true
    url: 'http://192.168.0.3:8000'
- name: 'ops'
  webhook_configs:
  - send_resolved: true
    url: 'http://192.168.0.3:8000'

最後,安裝grafana並導入dashboardgrafana-dashboard/alert-1566911356524.json,添加mysql數據源

rpm -ivh https://dl.grafana.com/oss/release/grafana-6.3.3-1.x86_64.rpm

釘釘告警

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章