Docker-compose 部署 Prometheus + Grafana + Alertmanager + DingDing 告警 (一)
背景
需要在物理服务器上使用 Docker 部署一套简单的监控。
| 操作系统 | IP | 安装的组件 |
|---|---|---|
| CentOS Linux release 7.8.2003 | 172.16.16.119 | Node-exporter,Prometheus,Alertmanager,Grafana,prometheus-webhook-dingtalk |
| CentOS Linux release 7.8.2003 | 172.16.16.10 | Node-exporter |
部署 node-exporter
在 172.16.16.10 上操作
mkdir -p /data/docker-compose/node-exporter
cd /data/docker-compose/node-exporter
vi docker-compose.yml
version: '3.3'
services:
node-exporter:
image: bitnami/node-exporter:1.8.2
container_name: node-exporter
restart: always
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/host/root:ro
command:
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
- '--path.rootfs=/host/root'
environment:
- TZ=Asia/Shanghai
# 启动
docker-compose up -d
部署 prometheus-webhook-dingtalk
在 172.16.16.119 上操作
mkdir -p /data/docker-compose/prometheus-webhook-dingtalk
cd /data/docker-compose/prometheus-webhook-dingtalk
# 添加配置
vi config.yml
templates:
- /etc/prometheus-webhook-dingtalk/templates/templates.tmpl
targets: #配置多个接收方
devops:
url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxx // token 根据自身情况填写
#secret: 钉钉加签
# 配置 钉钉消息模板
vi dingtalk.tmpl
{{ define "__subject" }}
[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]
{{ end }}
{{ define "__alert_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}
**告警主题**: {{ .Annotations.summary }}
**告警类型**: {{ .Labels.alertname }}
**告警级别**: {{ .Labels.severity }}
**告警主机**: {{ .Labels.instance }}
**告警信息**: {{ index .Annotations "description" }}
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
{{ define "__resolved_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}
**告警主题**: {{ .Annotations.summary }}
**告警类型**: {{ .Labels.alertname }}
**告警级别**: {{ .Labels.severity }}
**告警主机**: {{ .Labels.instance }}
**告警信息**: {{ index .Annotations "description" }}
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
**恢复时间**: {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
{{ define "default.title" }}
{{ template "__subject" . }}
{{ end }}
{{ define "default.content" }}
{{ if gt (len .Alerts.Firing) 0 }}
**======== 侦测到{{ .Alerts.Firing | len }}个故障 =========**
{{ template "__alert_list" .Alerts.Firing }}
---
{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}
**======== 恢复{{ .Alerts.Resolved | len }}个故障 ========**
{{ template "__resolved_list" .Alerts.Resolved }}
{{ end }}
{{ end }}
{{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
{{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}
{{ template "default.title" . }}
{{ template "default.content" . }}
# 编写 docker-compose.yml
vi docker-compose.yml
version: '3.7'
services:
dingtalk:
image: timonwong/prometheus-webhook-dingtalk:latest
container_name: dingtalk
restart: always
command:
- '--config.file=/etc/prometheus-webhook-dingtalk/config.yml'
volumes:
- ./config.yml:/etc/prometheus-webhook-dingtalk/config.yml
- ./dingtalk.tmpl:/etc/prometheus-webhook-dingtalk/templates/templates.tmpl
- /etc/localtime:/etc/localtime:ro
ports:
- "8060:8060"
# 启动
docker-compose up -d

浙公网安备 33010602011771号