本記事でやること
docker-composeを用いてPrometheusとalertmanagerのコンテナを起動して、Slackで受信されたアラートが確認しています。
環境
docker環境で、以下のアプリケーションが動くコンテナを作成します。
- Prometheus: 2.23.0
- alertmanager: 0.21.0
環境構築
本記事では、docker-composeを使用して、Prometheusとalertmanagerを構築する。まずファイル構成を以下のように作成します。
docker-compose.yaml
prometheus
-- prometheus.yaml
-- alert_rules.yaml
alertmanager
-- alertmanager.yaml
次にdocker network create --subnet=172.19.0.0/19 prom_netでdocker networkを構築します。設定ファイルとdocker neworkを構築後、以下のdocker-compose.yamlでdocker環境を構築します。
version: '2.2'
# define services
services:
prometheus:
image: prom/prometheus
container_name: prometheus
volumes:
- ./prometheus:/etc/prometheus
command: "--config.file=/etc/prometheus/prometheus.yaml --storage.tsdb.retention.time=10m"
ports:
- 9090:9090
restart: "no"
alertmanager:
image: prom/alertmanager
container_name: alertmanager
volumes:
- ./alertmanager:/etc/alertmanager
command: "--config.file=/etc/alertmanager/alertmanager.yaml"
ports:
- 9093:9093
restart: "no"
# define network
networks:
default:
external:
name: prom_net
Prometheus設定
Prometheusの設定ファイルは以下になります。slack_api_url: '< Your channel on Slack >'に関しては作成した任意のSlackのWebhook URLを入れてください。
global:
slack_api_url: '< Your channel on Slack >'
route:
receiver: slack
routes:
- match:
receiver: 'slack'
receivers:
- name: slack
slack_configs:
- channel: '< Channel Name >'
text: '< Optional Text>'
次に以下が、PrometheusがMertricに関してアラートを送信する設定になります。アラートを送信する条件に関しては適当なMetricsを選んでいるので、各自好きなMetricsを選んでください。
groups:
- name: prometheus_build
rules:
- alert: test
expr: prometheus_build_info == 1
for: 10s
labels:
severity: notice
annotations:
text: testsing alert
テスト
最後に、各アプリケーションのコンテナを起動させ、PrometheusとSlackで送信されたアラートを確認します。ちなみに、以下がdocker-composeで構成されたコンテナの起動・停止のコマンドになります。
docker-compose up
docker-compose down
Prometheus
以下、画像からalert_rule.yamlで設定された条件でアラートが送信されていることがわかります。

Slack
Prometheusで表示されたアラートが、SlackのChannleで受信できていることがわかります。

所感
Prometheusとalertmanagerを用いて、Slackでアラートが受信できているか確認しました。今後はElasticsearchにアラートを送信して、Kibanaでログを確認できる構成をしたいと考えています。本記事では、アラートが送信できているか確認するために、SlackのChannelを使いました。
