本文記錄一次練手項目的過程,主要用來理解prometheus的監控報警流程及配置,使用docker-compose 快速上手,實現微信以及email報警。本文的主要目的,一是記錄, 二時幫助新手來理解報警監控。 項目地址:https://github.com/kekek/prometheus-alert
這個項目監控了docker-compose管理的服務程序 target-go 手動停止后,prometheus 怎樣采集指標 , 上報錯誤,及報警處理。需要了解更多的指標監控, 請查看prometheus 文檔
本項目涉及到的知識點:
1. docker-compose 編排管理docker服務
2. prometheus 指標采集
3. prometheus 報警管理
文件目錄結構
.
├── alertmanager/
├── docker-compose.yml
├── grafana/
├── mysql/
├── mysql-export/
├── prometheus/
├── readme.md
└── target-go/
- alertmanager/ : prometheus 的 報警管理器,負責報警信息歸集,發送通知等
- prometheus/ : docker 啟動的 prometheus 服務, 收集監控信息,根據監控信息發送報警
- target-go/ : go 啟動的一個web服務,被監控對象,docker-compse中服務名稱為 kingtrader, 在這個項目中,可以通過啟動和停止 kingtrader,該項目來觀察 prometheus的監控和報警結果
- docker-compose.yml : 通過 docker-compose 管理管理上面的服務
修改配置
- 啟動docker, clone 倉庫到本地目錄,假如是prom
git clone https://github.com/kekek/prometheus-alert prom
- 修改 alertmanager 報警通知相關的配置文件
alertmanager/conf/alertmanager.yml
///////////////////////////// 發送郵件 /////////////////////////////
// 修改發送配置
smtp_from: '發送人'
smtp_smarthost: '發送服務器'
smtp_auth_username: '賬號'
smtp_auth_password: "密碼"
// 接收者
receivers:
- name: 'manager'
email_configs:
- send_resolved: false
to: 接收人email
///////////////////////////// 發送微信消息 /////////////////////////////
## 修改 wechat
# wechat_api_url: <string> | default = "https://qyapi.weixin.qq.com/cgi-bin/"
# wechat_api_secret: <secret>
# wechat_api_corp_id: <string>
運行并觀察
- 進入 prom,啟動服務
cd prom
docker-compose up
- 瀏覽器中 查看監控指標
job="kingtrader"服務啟動狀態 1
指標報警觸發狀態 綠色
- 停止 kingtrader 再次查看
docker-compose stop kingtrader
job="kingtrader"服務啟動狀態 0
指標報警觸發狀態 紅色
不出意外的話,過5分鐘就能收到報警信息啦
過程說明
prometheus 會不停的的采集 job=kingtrader 的狀態, 如果根據配置, 如果該值為0 , 則每個采集周期都是發送一條警告信息到 alertmanager去, 由altermanager來處理信息的歸集,過濾, 等, 然后發送報警信息