Mac で Prometheus と Alert Manager を起動して Slack に通知を行う

以下の記事を試させて頂いた時の作業メモです。

[Prometheus の監視で発生したアラートを Slack に投稿する](https://zenn.dev/empenguin/articles/721ba3164a2196)

詳細は上記を見て頂いた方が詳しいかと思います。

なお、本例は **Intel Mac** で記事執筆当時最新のバージョンでの確認となります。

# Prometheus を動かす

以下から Mac(darwin) 用のバイナリを取得するための URL を見つけてコピペします。

[DOWNLOAD](https://prometheus.io/download/)

```
wget https://github.com/prometheus/prometheus/releases/download/v2.33.2/prometheus-2.33.2.darwin-amd64.tar.gz


tar -zxvf prometheus-2.33.2.darwin-amd64.tar.gz

cd prometheus-2.33.2.darwin-amd64
```

`prometheus.yml` を以下のように編集

```prometheus.yml
global: # (1)
  scrape_interval:     15s
  evaluation_interval: 15s

alerting: # (2)
  alertmanagers:
  - static_configs:
    - targets:
      - localhost:9093

rule_files: # (3)
  - rules.yml

scrape_configs: # (4)
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
```

また、同じディレクトリで `rules.yml` というファイルも作成する。

```
groups:
  - name: test
    rules:
      - alert: DeadMansSwitch # アラート名
        expr: vector(1)
        for: 1m
        labels:
          severity: __severity__
        annotations:
          summary: テストアラート
          description: このアラートは常に発生します
```

上記場合、`vector(1)` なので常にアラートが発生する状態となる。

以下のコマンドを実行して Prometheus を起動します。

```
./prometheus
```

問題なければ Mac から `http://localhost:9090` にアクセスすることで式ブラウザ(expression browser)を見ることができる。

![Screen Shot 2022-02-12 at 8.05.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20193/d1a22bdb-d49a-e197-9185-8528065c3505.png)


# Slack の Incoming webhook を設定する

以下などをみて設定する。

[Slack での Incoming Webhook の利用](https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-%E3%81%A7%E3%81%AE-Incoming-Webhook-%E3%81%AE%E5%88%A9%E7%94%A8)

設定すると `curl` コマンドでの実行例が表示されるのでコピペして Post できるか確認する。
Post が成功したら `curl` 実行の際の URL(https://hooks.slack.com/services/xxxxxx というようなもの) についてメモしておく。

# Alertmanager を動かす

同じように Mac 用のバイナリ(darwin)をダウンロードして動作させる。

以下からバイナリを取得するための URL を見つけてコピペします。

[DOWNLOAD](https://prometheus.io/download/)

```
wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.darwin-amd64.tar.gz

tar -zxvf alertmanager-0.23.0.darwin-amd64.tar.gz

cd alertmanager-0.23.0.darwin-amd64

```

次に `alertmanager.yml` を編集。
今回は Slack の #general チャネルへの投稿とする。
`slack_api_url` には先程メモしておいた WebHook の URL を記載する。

```alertmanager.yml
global:
  slack_api_url: 'https://hooks.slack.com/services/xxxxxx'

route:
  receiver: 'slack-notifications' # (1)

receivers:
- name: 'slack-notifications' # (2)
  slack_configs:
  - channel: ''
    title: "title"
    text: "body"
```

以下で Alert Manager を起動

```
./alertmanager
```

今回のアラートは常に発生するので程なくすると Slack に通知が来る。

![Screen Shot 2022-02-12 at 7.59.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20193/3d80e5f5-7118-6ba3-f93d-edeec582e8e7.png)


`http://localhost:9093` にアクセスして Alert Manager の Web 画面でも以下のようになってアラート通知が合ったことが分かる。

![Screen Shot 2022-02-12 at 8.00.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20193/ba79d637-d160-1fbc-6ebd-2506f6f079f7.png)


また、Prometheus 側でも画面上部の「Alert」を選択することで状況が確認できる。

![Screen Shot 2022-02-12 at 8.02.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20193/18724d8d-0b3c-478d-2aba-ea1dc095953b.png)