Prometheus에서 발생하는 알람을 실제 사용자에게 전달하기 위해서는 alertmanager라는 Third-Party App을 사용해야 한다.
https://github.com/prometheus/alertmanager
tar -xvf alertmanager-0.24.0.linux-amd64.tar.gz
sudo useradd -m -s /bin/bash alertmanager
sudo vim /etc/sudoers
useradd 옵션
-m: 홈디렉토리 생성
-s: 사용할 쉘 지정
tar -xvf
chmod -R 755 ./*
sudo chown -R alertmanager:alertmanager ./alertmanager-0.24.0.linux-amd64
현재는 싱글 구조로 테스트 중이나, production 환경에서는 실행시 클러스터 구성 후 --cluster.* 플래그를 추가하여 실행해주어야 한다.
Description=Alert Manager
[Unit]
Description=Alert Manager
Documentation=https://prometheus.io/docs/alerting/latest/alertmanager/
After=network.target
[Service]
User=alertmanager
Restart=on-failure
[Service]
ExecStart=/home/alertmanager/alertmanager-0.24.0.linux-amd64/alertmanager --config.file=/home/alertmanager/alertmanager-0.24.0.linux-amd64/alertmanager.yml
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start alertmanager.service
YAML 파일 설정을 통해 prometheus의 알람을 Slack, E-mail, Webhook과 연동할 수 있다.
현재는 Slack, E-mail 연동을 시험했으며, production 환경에선 Webhook도 사용할 예정이다.
# The API URL to use for Slack notifications.
[ slack_api_url: "https://hooks.slack.com/services/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" ]
# [ slack_api_url_file: <filepath> ]
# The default HTTP client configuration
# [ http_config: <http_config> ]
## Slack integration
route:
receiver: 'slack id'
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 3h
routes:
- receiver: 'slack id'
group_wait: 10s
match_re:
service: dev
receivers:
- name: 'slack_receiver_name'
slack_configs:
- channel: 'prometheus-alerts'
text: "summary: {{ .CommonAnnotations.summary }}\ndescription: {{ .CommonAnnotations.description }}"
Alertmanager full configuration docs
https://prometheus.io/docs/alerting/latest/configuration