概要 前回 Node Exporter 構築 しました。
今回は監視実施サーバで 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 でサーバ監視 Node Exporter 構築手順 + Prometheus から AWS オートスケール監視 Alertmanager 構築手順  
補足 フロントエンド Grafana 3.x 以降でデフォルトプラグインで Prometheus をサポートしていたりと
メトリクスを自作したり、Prometheus 独自のクエリを駆使して
My alerts.rules Learning 改めて自身で構築してみて
一助になれば何よりです。
以上です。