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;
}
- 效果
2. docker方式
3. k8s方式
请看k8s章节