概要 前回 Node Exporter 構築 しました。
Node Exporter 構築手順 + Prometheus からAWSオートスケール監視 - 長生村本郷Engineers'Blog
以下に移行しました。 kenzo0107.github.io
今回は監視実施サーバで Alertmanager 構築を実施します。
今回やること 3 行まとめ
Alertmanager インストール & 起動スクリプト作成
Prometheus 通知条件設定
Alertmanager で Slack 通知
Alertmanager の役割 アラートのレベルによって通知先をどの程度の頻度で送信するかを管理します。 あくまで、通知先の管理をします。
実際のアラート条件の設定は Prometheus Server でします。
環境
CentOS Linux release 7.3.1611 (Core)
Alertmanager インストール
1 2 3 4 5 $ cd /usr/local/src $ sudo wget https://github.com/prometheus/alertmanager/releases/download/v0.5.1/alertmanager-0.5.1.linux-amd64.tar.gz $ sudo tar -C /usr/local -xvf alertmanager-0.5.1.linux-amd64.tar.gz $ cd /usr/local $ sudo mv alertmanager-0.5.1.linux-amd64 alertmanager
1 2 3 4 5 6 7 8 $ sudo ln -s /usr/local/alertmanager/alertmanager /bin/alertmanager $ alertmanager --version alertmanager, version 0.5.1 (branch: master, revision: 0ea1cac51e6a620ec09d053f0484b97932b5c902) build user: root@fb407787b8bf build date: 20161125-08:14:40 go version: go1.7.3
Alert 通知先設定 以下 Slack へ通知設定です。
1 2 3 $ cd /usr/local/alertmanager $ git clone https://gist.github.com/kenzo0107/71574c2d4d70ba7a9efaa88b4ff1be1b $ mv 71574c2d4d70ba7a9efaa88b4ff1be1b/alertmanager.yml .
slack 通知箇所を適宜変更して下さい。
Alertmanager 起動 とりあえず起動するならこれだけ
1 $ sudo alertmanager -config.file alertmanager.yml
http://alertmanager_server:9093/#/alerts
にアクセスすると以下のような画面が表示されます。
Prometheus 同様、Alertmanager も起動スクリプトを作成しそこで起動管理をします。
起動スクリプト作成
1 2 3 $ cat << 'EOF' > /usr/local/alertmanager/option OPTIONS="-config.file /usr/local/alertmanager/alertmanager.yml" EOF
1 2 3 4 5 6 7 8 9 10 11 12 13 14 $ sudo cat << 'EOF' | sudo tee /usr/lib/systemd/system/alertmanager.service [Unit] Description=Prometheus alertmanager Service After=syslog.target prometheus.alertmanager.service [Service] Type=simple EnvironmentFile=-/usr/local/alertmanager/option ExecStart=/bin/alertmanager $OPTIONS PrivateTmp=false [Install] WantedBy=multi-user.target EOF
1 2 3 4 $ sudo systemctl daemon-reload $ sudo systemctl enable alertmanager.service $ sudo systemctl start alertmanager.service $ sudo systemctl status alertmanager.service -l
アラート通知条件設定 アラート通知条件は Prometheus Server 側で設定します。
Prometheus Official - ALERTING RULES
サンプルとして以下設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 $ cd /usr/local/prometheus-server $ cat << 'EOF' > alerts.rules # インスタンスに 5分以上(FOR) アクセスできない場合(IF up == 0) # severity = "critical" とラベル付けし通知 ALERT InstanceDown IF up == 0 FOR 5m LABELS { severity = "critical" } ANNOTATIONS { summary = "Instance {{ $labels.instance }} down", description = "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes.", } // Prometheus 設定ファイルチェック $ promtool check-config prometheus.yml Checking prometheus.yml SUCCESS: 1 rule files found Checking alerts.rules SUCCESS: 1 rules found
Prometheus Server で Alertmanager URL 設定 Prometheus の起動オプションで Alertmanager URL 設定します。
1 -alertmanager.url=http://localhost:9093
1 2 3 4 5 6 7 $ cd /usr/local/prometheus-server $ cat << 'EOF' > option OPTIONS="-config.file=/usr/local/prometheus-server/prometheus.yml -web.console.libraries=/usr/local/prometheus-server/console_libraries -web.console.templates=/usr/local/prometheus-server/consoles -alertmanager.url=http://localhost:9093" EOF // Prometheus 再起動 $ sudo systemctl restart prometheus.service
注意 今回 Alertmanager は Prometheus Server と同サーバ上に設定しているので
となっていますが、ドメインが異なる場合は適宜設定してください。
Prometheus Alerts ページアクセス 設定した通知条件が表示されています。
通知試験 監視対象サーバの node_exporter を停止してみます。
1 $ sudo systemctl stop node_exporter
すると…
Slack に通知が届きました!
http://alertmanager_server:9093/#/alerts
にアクセスすると通知内容一覧が表示されます。
以上で簡単ながら Prometheus からリモートサーバを監視しアラート通知するところまでを まとめました。
Prometheus でサーバ監視
Node Exporter 構築手順 + Prometheus から AWS オートスケール監視
Alertmanager 構築手順
補足 フロントエンド Grafana 3.x 以降でデフォルトプラグインで Prometheus をサポートしていたりと Prometheus のフロントは Grafana が導入しやすく相性が良かったです。
メトリクスを自作したり、Prometheus 独自のクエリを駆使して 様々なメトリクス監視が実現できます。
My alerts.rules
Learning 改めて自身で構築してみて Line Casual Talks #1, #2 を見直すと非常に理解が深まると思います。
一助になれば何よりです。
以上です。 ご静聴ありがとうございました。