Ubuntu AlertManagerでPrometheusアラート通知を設定する【Slack連携】

モニタリング

Prometheusでサーバーを監視していても、アラートが発生したことに気づかなければ意味がありません。AlertManagerを使えば、Prometheusのアラートをグループ化・重複排除して、SlackやメールへリアルタイムにPush通知できます。

この記事では、Ubuntu 24.04 LTS の公式Dockerイメージに AlertManager を apt でインストールし、実際に取得したバージョン・設定ファイル・systemdユニット・Web UIのスクリーンショットをもとに、Slack 連携の手順を解説します。結論、sudo apt install prometheus-alertmanagerバージョン 0.26.0 が追加リポジトリなしで入ります(2026-06-15に ubuntu:24.04 で実測)。

この記事のポイント

  • sudo apt install prometheus-alertmanager で Ubuntu 24.04 に AlertManager 0.26.0+ds-1ubuntu0.3 が入る(universe リポジトリ、実測)
  • Slack の Incoming Webhook URL を /etc/prometheus/alertmanager.yml に書き、amtool check-config で構文チェックしてから反映する
  • AlertManager の Web UI(ポート9093)でアラート一覧・サイレンス・ステータスをブラウザから管理できる(実画面を掲載)
  • Ubuntu 22.04 はバージョン 0.23.0 止まり。しかも 0.23 と 0.26 で inhibit_rules の構文が違うため、移行時は書き換えが必要(両コンテナで実証)

目次

  1. 全体アーキテクチャ(Prometheus → AlertManager → Slack)
  2. 前提環境と準備
  3. AlertManager のインストール
  4. Ubuntu 22.04 と 24.04 のバージョン差を実測する
  5. alertmanager.yml の基本設定
  6. Slack Incoming Webhook の取得
  7. Slack 通知の設定と構文チェック
  8. systemd サービスとして起動する
  9. Prometheus と AlertManager を連携させる
  10. アラートルールを作成する
  11. AlertManager Web UI の使い方
  12. よくあるエラーと解決策
  13. まとめ

全体アーキテクチャ(Prometheus → AlertManager → Slack)

まず、AlertManager が Prometheus のどこに位置するかを確認しましょう。

Prometheus + AlertManager + Slack 連携フロー図
Prometheus + AlertManager + Slack 連携フロー図

Prometheus 自体はメトリクスの収集・評価を担当します。定義したアラートルール(.rules.yml)の条件を満たしたとき、AlertManager に対してアラートを送信します。AlertManager は受け取ったアラートをグループ化・重複排除・サイレンス処理してから、Slack や PagerDuty などの通知先に転送します。

この分離設計のおかげで、「同じアラートが100回届いてSlackが埋まる」という事態を防ぎ、深夜のアラートを時間帯でサイレンスにする、といったきめ細かい制御が可能になります。AlertManager はデフォルトでポート 9093 を待ち受けます。

前提環境と準備

動作確認済み環境

本記事のコマンドは Ubuntu 24.04 LTS(Noble Numbat)の公式Dockerイメージ ubuntu:24.04 で実行し、バージョンや設定ファイルの中身を実取得しています。Ubuntu 22.04 でも同じ apt 手順で使えますが、後述のとおり AlertManager のバージョンが 0.23.00.26.0 で異なります。本番環境では 24.04 が推奨です。

必要なもの:

  • Ubuntu 24.04 LTS が動作するサーバー(VPS・自宅サーバー・WSL2 いずれも可)
  • sudo 権限
  • Prometheus がインストール済みであること(未導入の場合は後述の連携手順を参照)
  • Slack ワークスペース(無料プランでも可)

AlertManager のインストール

手順1:パッケージを最新化してインストールする

Ubuntu 24.04 の universe リポジトリに AlertManager 0.26.0 が収録されています。追加のリポジトリ設定は不要です。実際に ubuntu:24.04 コンテナで実行したログがこちらです。




ubuntu@server: ~
$ sudo apt-get update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease

$ sudo apt-get install -y prometheus-alertmanager
Get:3 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 prometheus-alertmanager amd64 0.26.0+ds-1ubuntu0.3 [12.1 MB]
Selecting previously unselected package prometheus-alertmanager.
Unpacking prometheus-alertmanager (0.26.0+ds-1ubuntu0.3) …
Setting up prometheus-alertmanager (0.26.0+ds-1ubuntu0.3) …

パッケージ本体は 12.1 MB で、依存として addusertzdata が一緒に入ります。インストールが完了したらバージョンを確認します。




ubuntu@server: ~
$ /usr/bin/prometheus-alertmanager –version
alertmanager, version 0.26.0+ds (branch: debian/sid, revision: 0.26.0+ds-1ubuntu0.3)
build user: team+pkg-go@tracker.debian.org
build date: 20250718-06:31:52
go version: go1.22.2
platform: linux/amd64
apt install prometheus-alertmanager 実行ログとバージョン確認(実測)
apt install prometheus-alertmanager 実行ログとバージョン確認(実測)

インストールと同時に、バイナリが2つ /usr/bin/ に配置されます。ls -1 /usr/bin/ | grep -E 'alertmanager|amtool' で確認できます。

  • /usr/bin/prometheus-alertmanager:AlertManager 本体
  • /usr/bin/amtool:アラート・サイレンス操作と設定チェック用の CLI ツール(こちらも 0.26.0)

Ubuntu 22.04 と 24.04 のバージョン差を実測する

「22.04 でも apt で入るなら同じでは?」と思うかもしれませんが、ここが落とし穴です。実際に ubuntu:22.04ubuntu:24.04 の両コンテナで apt-cache policy を実行して比較しました。




ubuntu@server: ~
# Ubuntu 22.04(jammy)
$ apt-cache policy prometheus-alertmanager
prometheus-alertmanager:
Installed: (none)
Candidate: 0.23.0-4ubuntu0.3
… jammy-updates/universe Packages
# Ubuntu 24.04(noble)
$ apt-cache policy prometheus-alertmanager
prometheus-alertmanager:
Installed: (none)
Candidate: 0.26.0+ds-1ubuntu0.3
… noble-updates/universe Packages
Ubuntu 22.04 vs 24.04 AlertManagerバージョン比較表(実測)
Ubuntu 22.04 vs 24.04 AlertManagerバージョン比較表(実測)

Ubuntu 22.04 では 0.23.0 止まり、Ubuntu 24.04 では 0.26.0 が取得できます。これは単なる数字の違いではありません。0.23 と 0.26 では inhibit_rules(アラート抑制ルール)の構文が変わっているのです。両コンテナのデフォルト設定ファイルを実際に開いて確認したところ、0.23 は古い source_match/target_match、0.26 は新しい source_matchers/target_matchers がデフォルトで書かれていました。この差は記事末の「よくあるエラー」で詳しく扱います。

alertmanager.yml の基本設定

AlertManager の設定ファイルは /etc/prometheus/alertmanager.yml にあります(dpkg -L prometheus-alertmanager で確認できます)。インストール直後のデフォルトファイルを実際に開くと、サンプルとしてかなり作り込まれた内容が入っています(一部を抜粋)。




ubuntu@server: ~
$ cat /etc/prometheus/alertmanager.yml
# Sample configuration.
global:
smtp_smarthost: ‘localhost:25’
smtp_from: ‘alertmanager@example.org’
route:
group_by: [‘alertname’, ‘cluster’, ‘service’]
group_wait: 30s
group_interval: 5m
repeat_interval: 3h
receiver: team-X-mails
inhibit_rules:
– source_matchers: [severity=”critical”]
target_matchers: [severity=”warning”]
equal: [alertname, cluster, service]
receivers:
– name: ‘team-X-mails’
email_configs:
– to: ‘team-X+alerts@example.org’

このデフォルトはメール通知(SMTP)の例になっています。0.26.0 のデフォルト設定では inhibit_rules がすでに新しい source_matchers 構文で書かれている点に注目してください。これを Slack 通知に書き換えていきます。設定の主要キーワードを整理しておきます。

キー 役割 デフォルト値
group_wait 同一グループのアラートを最初にまとめるまでの待機時間 30秒
group_interval すでに通知済みのグループに新規アラートが来た場合の待機時間 5分
repeat_interval 解決していないアラートを再通知するまでの間隔 3時間
receiver デフォルトの通知先(receivers 内の name と一致させる) team-X-mails

Slack Incoming Webhook の取得

Slack への通知には Incoming Webhook URL が必要です。以下の手順で取得してください。

  1. Slack ワークスペースにログインし、Apps からアプリの管理ページを開く
  2. 「Incoming Webhooks」を検索して追加(または既存のものを選択)
  3. 「Add New Webhook to Workspace」をクリック
  4. 通知を送りたいチャンネル(例:#alerts)を選択して「許可する」
  5. 発行された Webhook URL をコピーする(例:https://hooks.slack.com/services/TXXXXXXXX/BXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX

注意

Webhook URL は シークレット情報です。Git リポジトリや公開場所にそのまま書かないようにしてください。環境変数や Vault、sops などのシークレット管理ツールの利用を推奨します。

Slack 通知の設定と構文チェック

手順2:alertmanager.yml を Slack 用に書き換える

デフォルトの設定を Slack 通知に書き換えます。sudo nano /etc/prometheus/alertmanager.yml で開き、以下のように編集します(Webhook URL は自分のものに変えてください)。

alertmanager.yml Slack設定例(mock)
alertmanager.yml Slack設定例(mock)



/etc/prometheus/alertmanager.yml
global:
resolve_timeout: 5m
route:
group_by: [‘alertname’, ‘instance’, ‘severity’]
group_wait: 30s
group_interval: 5m
repeat_interval: 3h
receiver: ‘slack-notifications’
receivers:
– name: ‘slack-notifications’
slack_configs:
– api_url: ‘https://hooks.slack.com/services/T…/B…/XXXX’
channel: ‘#alerts’
send_resolved: true
title: ‘{{ template “slack.default.title” . }}’
text: ‘{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}’
inhibit_rules:
– source_matchers: [severity=”critical”]
target_matchers: [severity=”warning”]
equal: [‘alertname’, ‘instance’]

send_resolved: true を設定すると、アラートが解消されたときにも Slack に「回復通知」が届きます。正直、これがあると夜中に起きたアラートが自動解消されたかどうかをすぐ確認できて助かります。

手順3:amtool で設定ファイルの構文チェックをする

amtool を使うと、AlertManager を再起動する前に設定ファイルの構文を確認できます。上の Slack 設定を ubuntu:24.04 上で実際にチェックした結果がこちらです。




ubuntu@server: ~
$ amtool check-config /etc/prometheus/alertmanager.yml
Checking ‘/etc/prometheus/alertmanager.yml’ SUCCESS
Found:
– global config
– route
– 1 inhibit rules
– 1 receivers
– 0 templates

SUCCESS が出て、1 inhibit rules1 receivers が認識されました(inhibit_rules を1つ、Slack receiver を1つ書いたので数が一致します)。ここで FAILED が出る場合はインデントや構文ミスがあるので、反映前に必ず直しましょう。

systemd サービスとして起動する

AlertManager は apt インストール時に systemd のサービスとして登録されます。実際にインストール後の ubuntu:24.04 でユニットファイルを開いて中身を確認しました。




ubuntu@server: ~
$ cat /lib/systemd/system/prometheus-alertmanager.service
[Unit]
Description=Alertmanager for prometheus
[Service]
Restart=on-failure
User=prometheus
EnvironmentFile=/etc/default/prometheus-alertmanager
ExecStart=/usr/bin/prometheus-alertmanager $ARGS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
AlertManager systemdサービスファイルと配置パス確認(実測)
AlertManager systemdサービスファイルと配置パス確認(実測)

ポイントは2つです。サービスは専用ユーザー prometheus で動き、起動引数は $ARGS という変数経由で環境変数ファイル /etc/default/prometheus-alertmanager から読み込まれます。設定を書き換えたらサービスを再起動して反映します。




ubuntu@server: ~
$ sudo systemctl restart prometheus-alertmanager
$ sudo systemctl enable prometheus-alertmanager
$ sudo systemctl status prometheus-alertmanager
● prometheus-alertmanager.service – Alertmanager for prometheus
Active: active (running)

Prometheus と AlertManager を連携させる

手順4:prometheus.yml に AlertManager のアドレスを設定する

Prometheus がアラートを AlertManager に送信するために、/etc/prometheus/prometheus.yml を編集します。




ubuntu@server: ~
$ sudo nano /etc/prometheus/prometheus.yml
# 既存の alerting セクションを以下に書き換え
alerting:
alertmanagers:
– static_configs:
– targets: [‘localhost:9093’]
rule_files:
– ‘/etc/prometheus/rules/*.rules.yml’

設定後、Prometheus を再起動し、ヘルスチェックで起動を確認します。




ubuntu@server: ~
$ sudo systemctl restart prometheus
$ curl -s http://localhost:9090/-/healthy
Prometheus Server is Healthy.

アラートルールを作成する

手順5:アラートルールファイルを作成する

まずルールファイルの保存先ディレクトリを作成します。




ubuntu@server: ~
$ sudo mkdir -p /etc/prometheus/rules
$ sudo nano /etc/prometheus/rules/server.rules.yml

以下は実用的なアラートルールの例です。CPU使用率が5分間90%を超えたらアラートが発火します。




/etc/prometheus/rules/server.rules.yml
groups:
– name: server_alerts
rules:
– alert: HighCPUUsage
expr: 100 – (avg by(instance) (rate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 90
for: 5m
labels:
severity: warning
annotations:
summary: “CPU使用率が90%を超えています”
description: “{{ $labels.instance }} のCPU使用率が高い状態です”
– alert: InstanceDown
expr: up == 0
for: 1m
labels:
severity: critical
annotations:
summary: “インスタンスがダウンしています”
description: “{{ $labels.instance }} が1分以上応答していません”

promtool check rules でルールファイルの構文チェックができます。amtool が AlertManager 用なのに対し、promtool は Prometheus 側のチェックツールです。




ubuntu@server: ~
$ promtool check rules /etc/prometheus/rules/server.rules.yml
Checking /etc/prometheus/rules/server.rules.yml
SUCCESS: 2 rules found

AlertManager Web UI の使い方

AlertManager は起動すると http://サーバーIP:9093 で Web UI を提供します。ここでは検証のために prom/alertmanager:v0.26.0 を Docker で起動し、ブラウザ(Playwright)で実際の画面を撮影しました。

アラート一覧ページ

AlertManager WebUI アラート一覧ページ(Playwright実撮影)
AlertManager WebUI アラート一覧ページ(Playwright実撮影)

発生中のアラートをグループ別に確認できます。起動直後はアラートがないため 「No alert groups found」 と表示されますが、Prometheus からアラートが届くとここにリアルタイムで表示されます。右上の「New Silence」ボタンからサイレンスを作成できる点にも注目してください。

サイレンス設定ページ

AlertManager Silencesページ(Playwright実撮影)
AlertManager Silencesページ(Playwright実撮影)

サイレンス(Silence)は特定のアラートを指定した時間帯に通知しない機能です。メンテナンス作業中に通知を止めたいときに非常に役立ちます。「New Silence」ボタンからラベルと有効期間を指定するだけで設定できます。

ステータス・設定確認ページ

AlertManager ステータスページ(Playwright実撮影)
AlertManager ステータスページ(Playwright実撮影)

Status ページでは、現在のバージョン(撮影した画面では Version: 0.26.0)やアップタイム、読み込まれている設定ファイルの内容を確認できます。設定変更後に意図どおりの内容が反映されているかをここで確認するのが確実です。AlertManager 0.26.0 では API バージョン v2 が採用されており、curl http://localhost:9093/api/v2/status からも JSON 形式でバージョン情報を取得できます(実際にこのAPIでも 0.26.0 を確認しました)。

よくあるエラーと解決策

エラー①:connect: connection refused




ubuntu@server: ~
level=error msg=”Error sending alerts” err=”Post http://localhost:9093/api/v2/alerts: dial tcp: connect: connection refused”

原因: AlertManager が起動していないか、ポートが一致していない。

解決策: sudo systemctl status prometheus-alertmanager でサービス状態を確認し、停止していれば sudo systemctl start prometheus-alertmanager で起動する。ポートは 9093 がデフォルトです。

エラー②:yaml: unmarshal errors(設定ファイル構文エラー)




ubuntu@server: ~
level=error component=configuration msg=”Loading configuration file failed” file=/etc/prometheus/alertmanager.yml err=”yaml: unmarshal errors”

原因: alertmanager.yml のインデントや記述ミス。YAML はインデントがずれるだけでエラーになります。

解決策: 反映前に amtool check-config /etc/prometheus/alertmanager.yml で必ず構文チェックする。前述のとおり SUCCESS と receivers/inhibit rules の数が表示されれば正常です。

エラー③:Slack に通知が来ない

設定を見直す前に、まず AlertManager から Slack への到達性を確認しましょう。Webhook URL に直接テスト通知を投げてみます。




ubuntu@server: ~
$ curl -X POST -H ‘Content-type: application/json’ \
–data ‘{“text”:”AlertManagerからのテスト通知”}’ \
‘https://hooks.slack.com/services/T…/B…/XXXX’
ok

このコマンドで ok が返れば Webhook URL は正しく、AlertManager の設定か Prometheus のアラートルールに問題があります。channel# を付け忘れている(例:alerts#alerts)ケースも多いです。

エラー④:matchers 構文エラー(Ubuntu 22.04 から移行した場合)

注意:Ubuntu 22.04 の設定ファイルをそのまま使うと失敗します

実際に両コンテナのデフォルト設定を確認したところ、Ubuntu 22.04(AlertManager 0.23.0)は古い source_match/target_match 構文、Ubuntu 24.04(0.26.0)は新しい source_matchers/target_matchers 構文でした。22.04 で書いた alertmanager.yml を 24.04 にそのまま持ち込むと、古い構文が原因で読み込みに失敗することがあります。移行時は inhibit_rules を書き換えてください。




/etc/prometheus/alertmanager.yml — 旧 vs 新
# ❌ 旧構文(Ubuntu 22.04 / 0.23系のデフォルト)
– source_match:
severity: ‘critical’
target_match:
severity: ‘warning’
# ✅ 新構文(Ubuntu 24.04 / 0.26系のデフォルト)
– source_matchers: [severity=”critical”]
target_matchers: [severity=”warning”]

まとめ

Ubuntu 24.04 への AlertManager のインストールと Slack 連携設定の手順をまとめます。

  • sudo apt install prometheus-alertmanager で AlertManager 0.26.0+ds-1ubuntu0.3 をインストール(universe リポジトリ、追加設定不要・実測)
  • /etc/prometheus/alertmanager.yml の receivers セクションに Slack Webhook URL を設定する
  • 反映前に amtool check-config で構文チェックする(SUCCESS と receivers/inhibit rules の数を確認)
  • サービスは User=prometheus で動き、systemctl restart で設定を反映する
  • AlertManager Web UI(ポート9093)でアラート確認・サイレンス設定・バージョン確認ができる
  • Ubuntu 22.04(0.23.0)からの移行時は source_match から source_matchers への構文変更が必要
  • Ubuntu 24.04 LTS はサポート期限が2029年4月まで。VPS で本番運用するなら24.04を選ぼう

AlertManager と Prometheus が動いている環境をVPS上に構築すると、自宅や外出先からでもサーバーの状態をリアルタイムに把握できます。月数百円〜のVPSでも十分動くので、本格的に監視環境を運用してみたい方は下記から選んでみてください。

著者アイコン
著者アイコン

AlertManagerとGrafanaを組み合わせると、ダッシュボードで可視化しながらアラートも自動通知できる最強の監視環境になります。Grafana 連携は Ubuntu に Grafana をインストールする方法の記事も参考にしてみてください。

コメント

タイトルとURLをコピーしました