Grafana で Azure Monitor をデータソースとして使用し、特定の条件に基づくアラートを設定する方法を解説します。
この例では、Kusto クエリ言語(KQL)を用いて、Azure のサインインログを分析し、アクセス成功率が過去 5 日間の平均の 85%未満に低下した場合にアラートを出す設定を行います。
前提条件
- Grafana に Azure Monitor データソースが追加されていること。
- Azure Monitor で Kusto クエリ言語(KQL)が利用可能であること。
ステップ 1: ダッシュボードとパネルの設定
- Grafana の左側のナビゲーションバーから「+」アイコンをクリックし、「ダッシュボード」を選択します。
- 「新しいパネル」をクリックして、クエリエディターを開きます。
ステップ 2: Azure Monitor データソースの設定
- パネルのデータソースとして「Azure Monitor」を選択します。
- 「Logs」タブを選択し、KQL を用いてサインインログのクエリを設定します。
ステップ 3: クエリの作成
-
クエリ A (本日のアクセス成功率)
// 当日のサインイン成功数と試行数を取得 let today_signins = SigninLogs | where TimeGenerated >= startofday(now()) and TimeGenerated < endofday(now()) | summarize successful_signins = countif(ResultType == 0), signin_attempts = count() by UserId; // 当日のサインイン成功率を計算 let today_success_rate = today_signins | project UserId, today_success_rate = todouble(successful_signins) / todouble(signin_attempts) * 100; // 当日のサインイン成功率 today_success_rate | project today_success_rate
-
クエリ B (過去 5 日間の平均アクセス成功率の85%)
// 過去5日間のサインイン成功数と試行数を取得 let past_5_days_signins = SigninLogs | where TimeGenerated >= startofday(now()) - 5d and TimeGenerated < startofday(now()) | summarize successful_signins = countif(ResultType == 0), signin_attempts = count() by UserId; // 過去5日間のサインイン成功率を計算 let past_5_days_success_rate = past_5_days_signins | summarize past_5_days_successful_signins = sum(successful_signins), past_5_days_signin_attempts = sum(signin_attempts) | project past_5_days_success_rate = todouble(past_5_days_successful_signins) / todouble(past_5_days_signin_attempts) * 100 * 0.85; // 過去5日間のサインイン成功率 past_5_days_success_rate | project past_5_days_success_rate
ステップ 4: アラートの設定
- パネル上部の「アラート」タブをクリックします。
- 「Create Alert」ボタンをクリックしてアラート設定を開始します。
- アラート名を設定し、以下のように条件を入力します。
- 「WHEN」セクションで、「avg()」を選択し、クエリ A の結果が「IS BELOW」クエリ B の ときにトリガーされるように設定します。
ステップ 5: 評価期間と通知チャネルの設定
- アラートの評価期間を「5m」や「10m」など、適切な間隔で設定します。
- 「Notifications」セクションで通知チャネルを選択し、アラート発生時に通知されるように設定します。
ステップ 6: アラートルールの保存
- 全ての設定を確認し、右上の「Save」ボタンをクリックしてアラートルールを保存します。