Skip to content

1. docker-compose方式

1.1 创建目录

bash
mkdir -p /data/monitor/prometheus/alertmanager/config
mkdir -p /data/monitor/prometheus/alertmanager/config

1.2 创建配置文件

yaml
cat > /data/monitor/prometheus/alertmanager/config/alertmanager.yml <<EOF
global:
  resolve_timeout: 1m
  smtp_smarthost: 'smtp.qq.com:465'     # 邮箱服务器的SMTP主机配置
  smtp_from: 'xx@qq.com'    # 发送邮件主题
  smtp_auth_username: 'xx@qq.com'      # 登录用户名
  smtp_auth_password: 'djubruffhuolbeee'    # 此处的auth password是邮箱的第三方登录授权密码,而非用户密码
  smtp_require_tls: false           # 有些邮箱需要开启此配置,这里使用的是企微邮箱,仅做测试,不需要开启此功能。
  #templates:
  #  - '/etc/alertmanager/*.tmpl'
route:
  group_by: ['env','instance','type','group','job','alertname','cluster']
  group_wait: 10s # 分组内第一个告警等待时间,10s内如有第二个告警会合并一个告警
  group_interval: 1m # 发送新告警间隔时间
  repeat_interval: 10m # 重复告警间隔发送时间,如果没处理过多久再次发送一次
  receiver: 'webhook'  #  默认接收人
  routes:
    - receiver: 'webhook'
      match:
        severity: critical
receivers:
  - name: 'webhook'
    webhook_configs:
      - url: 'http://prometheus-alert-center.monitor.svc:8080/prometheusalert?type=fs&tpl=prometheus-fs&fsurl=https://open.feishu.cn/open-apis/bot/v2/hook/51eb144c-cc6a-47f6-942e-de9f734c9b23&at=hanxiong'
        send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
EOF
cat > /data/monitor/prometheus/alertmanager/config/alertmanager.yml <<EOF
global:
  resolve_timeout: 1m
  smtp_smarthost: 'smtp.qq.com:465'     # 邮箱服务器的SMTP主机配置
  smtp_from: 'xx@qq.com'    # 发送邮件主题
  smtp_auth_username: 'xx@qq.com'      # 登录用户名
  smtp_auth_password: 'djubruffhuolbeee'    # 此处的auth password是邮箱的第三方登录授权密码,而非用户密码
  smtp_require_tls: false           # 有些邮箱需要开启此配置,这里使用的是企微邮箱,仅做测试,不需要开启此功能。
  #templates:
  #  - '/etc/alertmanager/*.tmpl'
route:
  group_by: ['env','instance','type','group','job','alertname','cluster']
  group_wait: 10s # 分组内第一个告警等待时间,10s内如有第二个告警会合并一个告警
  group_interval: 1m # 发送新告警间隔时间
  repeat_interval: 10m # 重复告警间隔发送时间,如果没处理过多久再次发送一次
  receiver: 'webhook'  #  默认接收人
  routes:
    - receiver: 'webhook'
      match:
        severity: critical
receivers:
  - name: 'webhook'
    webhook_configs:
      - url: 'http://prometheus-alert-center.monitor.svc:8080/prometheusalert?type=fs&tpl=prometheus-fs&fsurl=https://open.feishu.cn/open-apis/bot/v2/hook/51eb144c-cc6a-47f6-942e-de9f734c9b23&at=hanxiong'
        send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
EOF

1.3 创建docker-compose

yaml
version: '3'
services:
  alertmanager:
    image: prom/alertmanager:v0.27.0
    container_name: alertmanager
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "19093:9093"
    command:
      - '--config.file=/etc/alertmanager/alertmanager.yml'
      - '--storage.path=/alertmanager'
      - '--log.level=debug'
      - '--log.format=logfmt'
      #- '--web.external-url=http://alertmanager.xxx.net' #由于我这里是nginx代理,暂时不需要这个参数
    volumes:
      - /data/monitor/prometheus/alertmanager/config/alertmanager.yml:/etc/alertmanager/alertmanager.yml
version: '3'
services:
  alertmanager:
    image: prom/alertmanager:v0.27.0
    container_name: alertmanager
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "19093:9093"
    command:
      - '--config.file=/etc/alertmanager/alertmanager.yml'
      - '--storage.path=/alertmanager'
      - '--log.level=debug'
      - '--log.format=logfmt'
      #- '--web.external-url=http://alertmanager.xxx.net' #由于我这里是nginx代理,暂时不需要这个参数
    volumes:
      - /data/monitor/prometheus/alertmanager/config/alertmanager.yml:/etc/alertmanager/alertmanager.yml
  • 启动
bash
docker-compose up -d
docker-compose up -d

1.4 配置nginx

bash
   location ^~  /alert/ {
        proxy_pass     http://172.18.110.129:19093/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_http_version 1.1;
	proxy_set_header Connection "Keep-Alive";
	proxy_set_header Host $http_host;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection $connection_upgrade;
   }
   location ^~  /alert/ {
        proxy_pass     http://172.18.110.129:19093/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_http_version 1.1;
	proxy_set_header Connection "Keep-Alive";
	proxy_set_header Host $http_host;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection $connection_upgrade;
   }
  • 效果

image-20241211175125240

2. docker方式

3. k8s方式

请看k8s章节