0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker環境でalertmanagerでslackにアラートする

Last updated at Posted at 2020-12-23

本記事でやること

 docker-composeを用いてPrometheusとalertmanagerのコンテナを起動して、Slackで受信されたアラートが確認しています。

Screen Shot 2020-12-24 at 8.11.31.png

環境

 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環境を構築します。

docker-compose.yaml
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を入れてください。

prometheus.yaml
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を選んでください。

alert_rule.yaml
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で設定された条件でアラートが送信されていることがわかります。
Screen Shot 2020-12-24 at 7.47.22.png

Slack

 Prometheusで表示されたアラートが、SlackのChannleで受信できていることがわかります。
Screen Shot 2020-12-24 at 7.40.55.png

所感

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?