Echobell

Grafana 連携 - リアルタイムインフラ監視アラート

GrafanaアラートをEchobellと統合してインフラ監視の即時通知を受け取るための完全ガイド。ステップバイステップのセットアップ、アラートテンプレート、webhook設定、Grafanaアラートのベストプラクティス。

Grafana 連携

Grafana は、メトリクス、ログ、トレースの可視化に何千もの組織で使用されている人気のオープンソース分析・監視ソリューションです。Grafana を Echobell と統合することで、メトリクスがアラートをトリガーした際に即時通知を受け取ることができます。高い CPU 使用率、メモリ圧迫、失敗したサービス、その他の監視対象の状態など。

この包括的なガイドでは、基本的な設定から高度なアラート管理戦略まで、Grafana アラートと Echobell のセットアップ方法を説明します。

前提条件

開始前に、以下を確認してください:

  • 少なくとも 1 つのチャンネルが作成された Echobell アカウント(こちらから開始
  • Grafana インスタンスへのアクセス(バージョン 8.0 以降推奨、最高の互換性にはバージョン 9.0+)
  • Grafana でアラート通知を設定する管理者権限(通常、Admin または Editor ロールが必要)
  • Grafana ダッシュボードとメトリクスの基本的な理解
  • 監視インフラストラクチャとアラート要件への精通

セットアップの概要

統合プロセスは、通常 10-15 分で完了する 5 つの主要なステップで構成されています:

  1. Echobell チャンネルの作成 - Grafana アラート専用のチャンネルを設定
  2. 通知テンプレートの設定 - デバイス上でアラートがどのように表示されるかをデザイン
  3. Webhook URL の取得 - チャンネルの固有の webhook エンドポイントを取得
  4. Grafana コンタクトポイントの設定 - Echobell にアラートを Grafana を設定
  5. Grafana でアラートルールを作成 - 通知をトリガーする条件を定義

設定後、アラートは自動的に Grafana からデバイスにリアルタイムで流れます。

ステップバイステップガイド

Echobell チャンネルの作成

  1. Echobell アプリを開く
  2. 新しいチャンネルを作成(例:「Grafana アラート」)
  3. 識別しやすい色を選択

通知テンプレートの設定

Grafana アラートを効果的にフォーマットするテンプレートを設定します:

タイトルテンプレート:

{{alertName}} - {{status}}

本文テンプレート:

🔔 アラート: {{alertName}}
📊 メトリクス: {{metric}}
📈 値: {{value}}
⏰ 時刻: {{time}}
ℹ️ メッセージ: {{message}}

これらのテンプレートは Grafana のアラートペイロード構造と連携します。

Webhook URL の取得

  1. チャンネル設定で、トリガーセクションを探す
  2. 提供された webhook URL をコピー
  3. この URL は Grafana の設定で使用するため、安全に保管

Grafana コンタクトポイントの設定

  1. Grafana で、アラート設定コンタクトポイントに移動
  2. 新規コンタクトポイントをクリック
  3. 以下を設定:
    • 名前:「Echobell」
    • タイプ:「Webhook」
    • URL:Echobell の webhook URL
    • HTTP メソッド:POST
    • コンテンツタイプ:application/json
  4. メッセージテンプレートを設定:
{
  "alertName": "{{ .alertName }}",
  "status": "{{ .status }}",
  "metric": "{{ .metric }}",
  "value": "{{ .value }}",
  "time": "{{ .time }}",
  "message": "{{ .message }}",
  "externalLink": "{{ .dashboardURL }}"
}

アラートルールの作成

  1. アラート設定アラートルールに移動
  2. 新しいアラートルールを作成または既存のものを編集
  3. ルール設定で:
    • メトリクスに適切な条件を設定
    • 「Echobell」コンタクトポイントを選択
    • アラート評価基準を設定

連携のテスト

セットアップの確認:

  1. すぐにトリガーされる条件でテストアラートルールを作成
  2. 条件が満たされるまで待機
  3. Echobell アプリでアラート通知を確認
  4. すべてのアラート変数が正しく表示されているか確認
  5. 通知をクリックして、リンクされた Grafana ダッシュボードにアクセス

アラート通知タイプ

Grafana アラートチャンネルを購読する際、以下の重要な通知タイプを設定:

  • 時間重視を緊急システムアラートや緊急通知に使用
  • 通話を重大な障害、重要なしきい値超過、または緊急アラートに使用
  • 通常を標準的な情報アラートと定期通知に使用

アラート管理のベストプラクティス

アラートテンプレートの整理

すべてのチャンネルでアラートテンプレートを明確で一貫性のあるものに保つ:

タイトル: {{alertName}} - {{status}}
本文:
サーバー: {{instance}}
メトリクス: {{metric}}
現在値: {{value}}
しきい値: {{threshold}}
  • 構造化されたフォーマットを使用 - 明確なラベルで情報を整理
  • 重要な情報を含める - メトリクス名、値、しきい値、影響を受けるシステム
  • 絵文字は控えめに - 🚨 は重大、⚠️ は警告、✅ は解決済み
  • タイトルは簡潔に - 問題を即座に伝える 5-8 語を目指す
  • テンプレートをテスト - デプロイ前にテストアラートを送信してフォーマットを確認

重要アラートの設定

通知疲れを避けるため適切なアラートしきい値を設定:

  • 過剰なアラートを避ける - しきい値は興味深いレベルではなく、対処可能なレベルに設定
  • ヒステリシスを使用 - アラートと回復で異なるしきい値を設定
  • 関連するアラートをグループ化 - 関連する条件を単一のアラートルールにまとめる
  • 適切な評価間隔を設定 - 応答性とノイズ削減のバランスを取る
  • 時間ウィンドウを考慮 - アラート前に複数の条件チェックを使用

しきい値戦略の例:

# 悪い例: CPU 50%でアラート(感度が高すぎる)
cpu_usage > 50

# 良い例: 5分間80%でアラート
avg_over_time(cpu_usage[5m]) > 80

# 最良の例: 段階的なアラート
# 70%継続で警告、90%で重大

意味のあるアラート名を使用

すぐに以下を伝える説明的な名前をアラートに付ける:

  • 何が監視されているか(CPU、メモリ、ディスク)
  • どこで発生しているか(本番、ステージング、特定のインスタンス)
  • なぜ重要か(ユーザー向けサービス、重要なデータベース)

良い例:

  • "本番データベース - 高い接続プール使用率"
  • "API ゲートウェイ - 応答時間の低下"
  • "ワーカーノード 3 - ディスク容量が重大"

避けるべき例:

  • "アラート 1"、"テストアラート"、"高い CPU"

十分なコンテキストを含める

アラートメッセージは以下に答えるべき:

  • 何が起こったか? トリガーされた特定の条件
  • どこで? どのシステム、サービス、またはインスタンス
  • どの程度深刻か? 現在の値 vs しきい値
  • いつ? アラートのタイムスタンプ
  • 次は何? 関連するダッシュボードまたはランブックへのリンク

優先度レベルの設定

Echobell の通知タイプを戦略的に使用:

  • 通常: 情報アラート、解決通知、緊急ではない警告
  • 時間重視: 数時間以内に注意が必要な重要なアラート
  • 通話: 即座の対応が必要な重大な本番問題

Grafana の重大度レベルを通知タイプにマッピング:

重大 + 本番 → 通話
高 + 本番 → 時間重視
中 → 時間重視
低 → 通常
情報/解決済み → 通常

アラートセキュリティ

監視インフラストラクチャを保護:

  • Webhook URL を秘密に保つ - 認証なしで通知を送信するアクセスを提供
  • 環境変数を使用 - Grafana プロビジョニングファイルにハードコードしない
  • Webhook を定期的にローテーション - 特にチームメンバーが離れる時
  • Webhook 配信を監視 - 失敗した配信を追跡し、異常を調査
  • アラート設定を監査 - 誰がアラートを変更するアクセス権を持っているか定期的にレビュー
  • アラートソースを検証 - コンタクトポイントに Grafana の組み込み認証を使用

アラートライフサイクル管理

健全なアラート衛生を維持:

  1. 定期的なレビュー - 四半期ごとにアラートを監査し、古いルールを削除
  2. アラートを文書化 - 各アラートが存在する理由を説明する説明を追加
  3. アラート履歴を追跡 - 最も頻繁に発生するアラートを監視
  4. しきい値を調整 - 履歴データと誤検知率に基づいて調整
  5. 古いアラートをアーカイブ - 廃止されるサービスのルールは無効化しても保持
  6. バージョン管理 - Grafana プロビジョニングを使用してアラート変更を追跡

パフォーマンスの考慮事項

  • アラートストームを避ける - 適切なグループ化とタイミングを設定
  • 通知ポリシーを使用 - 異なる重大度を適切なチャンネルにルーティング
  • 待機/繰り返し間隔を設定 - 重複通知を防止
  • 類似するアラートをグループ化 - 集約で通知量を削減
  • 時間帯を考慮 - 営業時間フィルタリングに条件を使用

実践的な例

高 CPU 使用率アラート

タイトル: {{instance}} CPU 重大
本文: CPU使用率: {{cpu_percent}}%
継続時間: {{duration}}
時刻: {{time}}
ダッシュボード: {{dashboard_url}}

メモリ圧迫

タイトル: メモリ警告 - {{hostname}}
本文: 利用可能: {{available_mb}}MB ({{percent_free}}%)
しきい値: {{threshold_mb}}MB
アクション: メモリ集約的なプロセスを確認

サービス停止

タイトル: 🚨 {{service_name}} 到達不能
本文: ヘルスチェック失敗
最終成功: {{last_successful_check}}
影響: {{affected_users}} ユーザーが影響を受けています
ランブック: {{runbook_url}}

一般的なユースケース

インフラストラクチャ監視

  • CPU、メモリ、ディスク使用率のしきい値
  • ネットワークスループットとパケットロス
  • サービスの可用性とヘルスチェック
  • コンテナとポッドのステータス監視

アプリケーションパフォーマンス

  • 応答時間の低下
  • エラー率の増加
  • データベース接続プールの枯渇
  • キュー深度と処理遅延

ビジネスメトリクス

  • トランザクション量の異常
  • 分あたり収益の低下
  • アクティブユーザー数の変化
  • API レート制限への接近

セキュリティ監視

  • 認証失敗の試行
  • 異常なアクセスパターン
  • 証明書有効期限の警告
  • ファイアウォールルール違反

Grafana 通話通知に関するブログ投稿で統合戦略の詳細を学びましょう。

トラブルシューティング

アラートを受信できない場合、以下の診断手順を実行してください:

Webhook が通知をトリガーしない

  1. Webhook URL が正しくコピーされているか確認

    • Echobell チャンネル → トリガー → Webhook に移動
    • https://hook.echobell.one/t/を含む完全な URL をコピー
    • Grafana に貼り付ける際に余分なスペースや文字が追加されていないことを確認
  2. チャンネルがアクティブか確認

    • Echobell アプリを開く
    • Grafana アラートチャンネルに移動
    • 誤って削除またはアーカイブされていないことを確認
  3. アクティブな購読者がいるか確認

    • 通知を受け取るには少なくとも 1 人が購読している必要があります
    • チャンネルの購読者リストを確認
    • 個人の購読がアクティブであることを確認
  4. Grafana のコンタクトポイント設定を確認

    • Grafana で Alertting → Contact points に移動
    • Echobell コンタクトポイントを開く
    • URL がチャンネルの webhook と一致することを確認
    • HTTP メソッドが POST に設定されているか確認
    • Content-Type が application/json であることを確認
  5. Grafana のアラートルール設定を確認

    • Alerting → Alert rules に移動
    • トリガーすべき特定のルールを開く
    • ルールが Echobell コンタクトポイントにリンクされていることを確認
    • 通知ポリシーが正しいコンタクトポイントにルーティングされているか確認
  6. Grafana のアラート履歴を確認

    • Alerting → Alert rules に移動
    • ルールをクリック → 履歴を表示
    • アラートが実際に発火しているか確認(保留状態ではない)
    • 評価エラーがないか確認

アラートが発火しているが配信されない

  1. Webhook を直接テスト

    curl -X POST https://hook.echobell.one/t/YOUR_TOKEN \
      -H "Content-Type: application/json" \
      -d '{"alertName": "Test", "status": "firing"}'

    これから通知を受け取るが Grafana からは受け取らない場合、問題は Grafana の設定にあります。

  2. Grafana の通知ポリシーを確認

    • Alerting → Notification policies に移動
    • ルールのラベルがポリシーのルーティングルールと一致するか確認
    • タイミングの問題を確認(グループ化の待機時間、繰り返し間隔)
  3. Grafana ログを確認

    • Grafana のログで webhook 配信エラーを探す
    • HTTP ステータスコードを確認(200 であるべき)
    • タイムアウトまたは接続エラーを調査

通知が正しくレンダリングされない

  1. テンプレート変数が Grafana のペイロードと一致しない

    • Grafana は.alertName.statusなどの特定のフィールド名を送信
    • テンプレート変数がペイロード構造と一致することを確認
    • Grafana の「テスト」ボタンでテストして実際のペイロードを確認
  2. 通知に情報が欠けている

    • アラート設定によっては一部の Grafana 変数が空の場合があります
    • テンプレートにフォールバック値を追加:{{alertName || "不明なアラート"}}
    • 利用可能なテンプレート変数について Grafana ドキュメントを確認
  3. JSON パースエラー

    • Grafana のメッセージテンプレートが有効な JSON であることを確認
    • エスケープされていない引用符や特殊文字を確認
    • オンライン JSON バリデーターを使用してペイロード構造を確認

アラートのタイミング問題

  1. アラート受信の遅延

    • ネットワーク接続を確認
    • Grafana が Echobell のサーバーに到達できることを確認
    • Grafana の評価間隔を確認(遅延を引き起こす可能性)
    • 通知ポリシーのタイミング設定を確認
  2. 重複通知

    • 通知ポリシーの繰り返し間隔設定を確認
    • 同じ条件で複数のルールが発火していないか確認
    • チャンネルに 1 つのコンタクトポイントのみが設定されていることを確認
  3. 静かな時間帯の通知

    • iOS フォーカスモードが通知配信に影響する可能性
    • 時間重視と通話通知は一部のフォーカスモードをバイパス可能
    • デバイスの通知設定を確認

プライバシーとデータ取り扱い

Echobell のプライバシーファーストなアプローチ:

  • アラートコンテンツはデバイスにローカル保存
  • サーバーには必要な設定データのみ保存
  • webhook URL は機密情報として扱う
  • Echobell サーバーにアラートデータは保持されない

追加リソース

目次