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
posted @ 2024-07-30 17:39  klvchen  阅读(145)  评论(0)    收藏  举报