注意
本記事のコマンドは Ubuntu 24.04.4 LTS(Docker公式イメージ ubuntu:24.04)と grafana/grafana 公式イメージ(起動して取得した実バージョンは Grafana v13.0.2 / commit 3fcdbc5a)で検証しています。Grafana 13 系では一部のアラート用APIが新しいものへ移行しているため、古いバージョンとは画面構成やAPIの仕様が変わる場合があります(2026-06-15 時点)。
GrafanaでCPU使用率やメモリの監視はできているのに、「アラートの通知設定がよくわからない」という声はよく聞きます。GrafanaにはSlack・メール・PagerDutyなど多様な通知先(Contact Points)を設定できますが、画面の構成が独特で、初めて触ると迷いやすいのが正直なところです。
本記事では GrafanaのアラートをSlack WebhookとSMTPメールに通知する設定を、Ubuntu 24.04 の Docker 環境で実際に動かして確認しました。Grafana 13.0.2 のUnified Alertingで、Contact Pointの作成・通知ポリシーの設定までを、実際に取得したAPIレスポンスと画面のスクリーンショット付きで解説します。
この記事のポイント
docker run一発でGrafanaを起動し、/api/healthでversion 13.0.2を実測確認- SlackはWebhook URLを貼るだけ。メール(SMTP)はGmailアプリパスワードと組み合わせ、起動時の環境変数で設定できる
- Contact Points(通知先)と通知ポリシー(振り分け)の役割の違いを理解すると設定がスムーズ
- 初期状態ではルートの通知ポリシーの送信先が
empty(未割当)になっており、ここを差し替える必要がある(実測で判明) - Slackの Webhook URL はGrafana内部で
secureFieldとして秘匿され、APIでも[REDACTED]表示になる
目次
- 動作確認済み環境
- GrafanaをDockerで起動する
- Grafanaアラートの仕組みを理解する
- Slack通知を設定する(Contact Points)
- メール(SMTP)通知を設定する
- 通知ポリシーを設定する
- アラートルールを作成する
- よくあるエラーと解決策
- まとめ
動作確認済み環境
| 項目 | 内容 |
|---|---|
| OS | Ubuntu 24.04.4 LTS(Docker公式イメージ ubuntu:24.04) |
| Grafana | v13.0.2(commit 3fcdbc5a・Open Source edition)— /api/health と /api/frontend/settings で実測確認 |
| Docker | 20.10.12 |
| 検証日 | 2026-06-15 |
今回はDockerを使ってGrafanaを起動します。VPS(Vultr・DigitalOcean等)で動かす場合も、Dockerさえ入っていれば同じ手順でセットアップできます。
GrafanaをDockerで起動する
手順1:Grafanaコンテナを起動する
docker run でコンテナをバックグラウンド起動し、数秒待ってから /api/health でヘルスチェックします。実際に動かしたときの出力がこちらです。

–name grafana \
-p 3000:3000 \
-e GF_SECURITY_ADMIN_PASSWORD=yourpassword \
grafana/grafana:latest
1487ed7c26a1e3b3af3cb5e2d2504a1bfbf737f650aae9a83cb6183a32c80ce8
# 数秒待ってからヘルスチェック
$ curl -s http://localhost:3000/api/health
{“database”:”ok”,”version”:”13.0.2″,”commit”:”3fcdbc5a”}
"database":"ok" が返ってきたらGrafanaの起動成功です。今回の実測では version: 13.0.2(commit 3fcdbc5a・Open Source edition)が確認できました。ブラウザで http://localhost:3000 にアクセスしてみましょう。
手順2:ブラウザでログインする

ログイン画面が表示されたら、ユーザー名 admin、パスワード yourpassword(起動時に GF_SECURITY_ADMIN_PASSWORD で設定した値)でサインインします。画面下部に Grafana v13.0.2 (3fcdbc5a) とバージョンが表示されているのも確認できます。初回ログイン時にパスワード変更を促されますが、スキップも可能です。
Grafanaアラートの仕組みを理解する
設定を始める前に、Grafanaのアラートがどう動くかを把握しておくと、設定の見通しがよくなります。

ポイントは3つの構成要素です:
- アラートルール:「CPUが80%を一定時間超えたら発火する」という条件を定義する
- Contact Points(通知先):SlackのWebhook URLやメールの宛先を登録する
- 通知ポリシー:どのアラートをどのContact Pointへ送るかを振り分けるルール
正直、この3つを別々に設定する必要があるのが最初は煩雑に感じます。ただ、慣れると「Slackには開発チーム向けアラートだけ」「メールには深刻度Criticalのみ」という細かい振り分けができるので、運用が楽になります。
Slack通知を設定する(Contact Points)
手順1:Slack Incoming Webhookを取得する
まずSlack側でWebhook URLを発行します。Slackのワークスペースで「アプリ」→「Incoming Webhooks」を有効化し、通知を送りたいチャンネルを選択するとURLが発行されます。URLの形式は https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXX のようになります。
注意
Webhook URLは外部に漏れると誰でも通知を送れてしまいます。GitリポジトリやDockerfileに直接書かないようにしましょう。なお、Grafanaに登録したWebhook URLは内部で secureField として扱われ、APIで読み出しても [REDACTED] と表示されて中身は見えません(後述の実測で確認しています)。
手順2:GrafanaでContact Pointを追加する
左サイドバーから「Alerting(ベルのアイコン)」→「Contact points」を開きます。今回はProvisioning API経由でも作成して動作を確認しましたが、GUIでは「+ Add contact point」ボタンから以下のように設定します。

| 設定項目 | 入力値 |
|---|---|
| Name | slack-server-alerts(任意の名前) |
| Integration(種類) | Slackを選択 |
| Webhook URL | Slackで発行したWebhook URL |
| Recipient(Channel) | #server-alerts(通知を送るチャンネル) |
| Username | Grafana Alert Bot(表示名) |
実際にAPIで slack-server-alerts(Slack)と email-oncall(Email)の2件を作成したところ、上のスクリーンショットのとおりContact points画面に並びました。読み戻すと、Slackの設定は recipient: #server-alerts / username: Grafana Alert Bot が保存され、URLだけが [REDACTED] と秘匿表示されているのが分かります。


設定が完了したら、Contact pointの「⋮(More)」メニューから「Test」を選ぶとテストメッセージを送信できます。Slackにメッセージが届けば設定成功です。
メール(SMTP)通知を設定する
手順1:GrafanaのSMTP設定を有効にする
メール通知にはGrafana側にSMTPサーバーの情報を設定する必要があります。Dockerで起動している場合は環境変数で渡すのがシンプルです。
–name grafana \
-p 3000:3000 \
-e GF_SECURITY_ADMIN_PASSWORD=yourpassword \
-e GF_SMTP_ENABLED=true \
-e GF_SMTP_HOST=smtp.gmail.com:587 \
-e GF_SMTP_USER=youraddr@gmail.com \
-e “GF_SMTP_PASSWORD=xxxxxxxxxxxxxxxx” \
-e GF_SMTP_FROM_ADDRESS=youraddr@gmail.com \
-e “GF_SMTP_FROM_NAME=Grafana Alert” \
grafana/grafana:latest
設定が正しく反映されたかは、管理者でログインした状態で /api/admin/settings の smtp セクションを見ると確認できます。今回実際に取得した値が以下です。enabled: true / host: smtp.gmail.com:587 がきちんと反映されており、password はGrafana側で自動的に ********* にマスクされて返ってきました。

Gmailを使う場合は「アプリパスワード」(16桁の英数字)を使いましょう。通常のGoogleアカウントパスワードではSMTP認証がはじかれます。アプリパスワードはGoogleアカウント → セキュリティ → 2段階認証 から発行できます。
手順2:Contact Pointにメールを追加する
Contact pointsの画面で「+ Add contact point」→ Integrationに Email を選択します:
| 設定項目 | 入力値 |
|---|---|
| Name | email-oncall(任意) |
| Integration(種類) | Emailを選択 |
| Addresses | 通知先メールアドレス(カンマ区切りで複数指定可) |
| Single email | 複数アドレスへ1通にまとめて送る場合はチェックを入れる |
今回作成した email-oncall は addresses: oncall@example.com / singleEmail: false で登録され、Contact points画面にも「Email」アイコン付きで表示されました。メールが届かない場合はSMTP設定かファイアウォールの問題が多いです(後述のトラブルシューティング参照)。
通知ポリシーを設定する
通知ポリシーは「どのアラートをどのContact Pointへ送るか」を決める振り分けルールです。左サイドバー「Alerting」→「Notification policies」を開きます。

ここで一つ、実際に触って分かった大事なポイントがあります。起動直後のルート(Default policy)の送信先は、APIで確認すると receiver: empty(=未割当)になっていました。つまり、Contact Pointを作っただけでは通知は飛びません。Default policyの送信先を自分で差し替える必要があります。
同じくAPIと画面で確認した Default policy の既定タイミングは次のとおりでした(Grafana 13.0.2 実測):
| 設定 | 既定値 | 意味 |
|---|---|---|
| Group by | grafana_folder, alertname |
アラートをまとめる単位 |
| Group wait | 30s |
最初の通知をまとめるための待機時間 |
| Group interval | 5m |
同一グループの追加通知の間隔 |
| Repeat interval | 4h |
解消されないアラートを再通知する間隔 |
Slackをデフォルト通知先にする
Default policyの「Edit」から「Default contact point」を、先ほど作った slack-server-alerts に変更して保存します。これで(empty のままになっていた送信先が置き換わり)どのアラートも自動的にSlackへ届くようになります。
特定ラベルのアラートをメールに振り分ける
「+ Add nested policy」をクリックすると、条件付きのサブポリシーを追加できます。たとえば severity=critical のラベルがついたアラートだけメールに送る、という設定が可能です:
- Matching labels:
severity = critical - Contact point:
email-oncall
アラートルールを作成する
左サイドバー「Alerting」→「Alert rules」を開き、「+ New alert rule」をクリックします。Grafana 13 では、ルール作成画面が「①名前 → ②クエリと条件 → ③フォルダとラベル → ④評価の挙動」のステップ構成になっています。

手順1:クエリと条件を設定する
データソース(Prometheus / InfluxDB 等)が接続されていれば、ここでメトリクスのクエリを書きます。たとえばPrometheusでCPU使用率を監視する場合:
100 – (avg by(instance) (rate(node_cpu_seconds_total{mode=”idle”}[1m])) * 100)
# 条件: IS ABOVE 80
# Pending期間: 5m(5分間継続したら発火)
手順2:アラートの詳細を設定する
| 設定項目 | 推奨値 | 説明 |
|---|---|---|
| Rule name | High CPU Usage |
わかりやすい名前をつける |
| Folder | server-monitoring |
ルールを保存するフォルダ |
| Evaluate every | 1m |
1分ごとに評価 |
| Pending period | 5m |
5分間継続して初めて発火(誤検知を減らす) |
| Labels | severity=warning |
通知ポリシーの振り分けに使う |
Pending period を適切に設定するのがコツです。0にすると一瞬でも閾値を超えたら発火してしまい、ノイズが増えます。本番環境では5分〜10分に設定するのが一般的です。
注意
データソースに値が無いと、ルールは Firing ではなく No Data になります。この場合の挙動は「No data state」で変えられ、既定は NoData です。データが取れなくなること自体を検知したい場合は Alerting に変更しておくと安心です。
よくあるエラーと解決策
① Slackに通知が届かない
| 症状 | 原因 | 解決策 |
|---|---|---|
| Contact Pointは作ったのに通知が来ない | ルートポリシーの送信先が empty のまま |
Notification policiesでDefault contact pointをSlackに変更する |
invalid_payload エラー |
チャンネル名の形式が間違っている | Recipientを #channel-name 形式で入力する |
| VPS上のGrafanaから届かない | アウトバウンドHTTPS(443)がブロックされている | sudo ufw allow out 443 でポートを開放する |
② メール(SMTP)が届かない
| 症状 | 原因 | 解決策 |
|---|---|---|
connection refused |
SMTPポート(587/465)が閉じている | sudo ufw allow out 587 またはVPSのセキュリティグループを確認 |
authentication failed |
Gmailの通常パスワードを使っている | Googleのアプリパスワード(16桁)を使う |
/api/admin/settings で enabled: false |
GF_SMTP_ENABLED が渡っていない |
起動時の環境変数を見直してコンテナを作り直す |
③ 古いテストAPIが 410 エラーを返す
自動化のために古い /api/alertmanager/grafana/config/api/v1/receivers/test を叩くと、Grafana 13.0.2 では 410 Gone が返ります。実際のレスポンスがこちらです。
http://localhost:3000/api/alertmanager/grafana/config/api/v1/receivers/test …
HTTP/1.1 410 Gone
{“message”:”This endpoint has been removed. Please use
`/apis/notifications.alerting.grafana.app/v1beta1/namespaces/
{namespace}/receivers/{uid}/test` instead.”}
新しいKubernetesスタイルのAPIに移行しています。スクリプトでテスト送信を組む場合は、新エンドポイントを使ってください。普段はGUIの「Test」ボタンで十分なので、ほとんどの人は気にしなくて大丈夫です。
まとめ
GrafanaアラートのSlack/メール通知設定をまとめます。
- Grafana は
docker run -p 3000:3000 grafana/grafana:latestで起動し、/api/healthで version 13.0.2(commit 3fcdbc5a)を実測確認できた - 通知設定は Contact Points(通知先の登録)→ 通知ポリシー(振り分け)→ アラートルール(発火条件)の3ステップで構成される
- SlackはWebhook URLを貼るだけで設定完了。URLはGrafana内部で secureField として秘匿される
- メール(SMTP)はGrafana起動時の環境変数で設定するのが管理しやすい。Gmailはアプリパスワードが必須
- 初期状態ではルートの通知ポリシーが empty(未割当)なので、ここをContact Pointに差し替えないと通知は飛ばない
- 通知が届かないときは、まず送信先の割当とVPSのアウトバウンドポート(443/587)の開放を確認する
本格的にサーバーを監視したいなら、VPSにPrometheusとNode Exporterを入れてGrafanaと連携するのがお勧めです。まずはDockerでGrafanaを動かし、今回の通知設定で「アラートが届く」状態を作ってから、データソースを増やしていくとスムーズです。
VPSでGrafanaを本格運用するなら
- 固定IPがついた低コストVPSにDockerでGrafana + Prometheusを構築するのがお勧め
- Vultrの東京リージョン($5/月〜)はコスト・速度のバランスが取れていて入門に最適
- — VPSの選び方ガイドへ



コメント