0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kibana Alertにおけるアラートとは

0
Posted at

この記事はKibana Alertについての連続記事の一部です。

Alertの概念・ライフサイクル・保存形式について解説します。

Alertとは

Kibana AlertingにおけるAlertとは、Ruleの条件が満たされたときに生成されるインスタンスです。RuleがAlertを「生成する」という表現をしますが、正確には「アラートの状態を管理する」というイメージに近く、条件が継続している間はアラートがアクティブな状態として追跡されます。

AlertとActionの違い

AlertとActionは混同されやすいですが、役割が異なります。

  • Alert: 「条件が現在満たされているか」という状態を表すオブジェクト
  • Action: Alertの状態変化をトリガーとして実行される処理(メール送信、Webhookなど)

Ruleの評価サイクルごとにAlertの状態が更新され、Actionはその状態変化に応じて実行されます。Snoozeを設定してActionを止めてもAlertは生成され続けるのはこのためです。

AlertインスタンスとインスタンスID

一つのRuleが複数のAlertを同時に生成することがあります。たとえば「複数のホストのCPU使用率を監視するルール」では、ホストAとホストBがそれぞれ独立したAlertインスタンスとして管理されます。

各AlertインスタンスはRule Type固有のインスタンスIDで識別されます。インスタンスIDは何をキーとして使うかRule Typeによって異なります。

Rule Type インスタンスIDの例
Metric threshold(インフラメトリクス) ホスト名、Kubernetesポッド名など
Log threshold(ログ) 検出したログのグループ値
Index threshold / ES Query 固定ID(query matchedなど)
SLO burn rate SLO ID
Security: Custom Query Rule ドキュメントのフィールド値

Alertのライフサイクル

AlertはRuleの評価ごとに状態が遷移します。

状態の種類

ステータス 説明
active Ruleの条件が満たされており、アラートが発生中
recovered 以前アクティブだったが、条件を満たさなくなった
untracked Ruleの削除・無効化などにより追跡対象から外れた

状態遷移の流れ

[条件を満たす]
    ↓
  active ──────────────────────────────────────→ untracked
    ↓(条件を満たさなくなる)                        ↑
  recovered                            (Ruleの削除・無効化)
    ↓(次の評価でも条件を満たさない場合)
  (Elasticsearchから削除 or 保持期間経過後に自動削除)

アクティブアラートの引き継ぎ

Ruleは評価のたびにElasticsearchからTask Managerのタスク状態にアクティブなAlertインスタンスの情報(インスタンスID・状態・最終通知時刻・フラッピング履歴など)を保持しています。次の評価サイクルではこの情報を引き継いで「前回もアクティブだったか」「状態が変わったか」を判断します。

Untrackedへの遷移

以下のタイミングでAlertが untracked に遷移します。

  • Ruleが削除されたとき
  • Ruleが無効化(disabled)されたとき
  • アクティブなAlertが長期間放置され、自動クリーンアップの対象になったとき

untracked になると kibana.alert.end に現在時刻が記録され、Actionは実行されなくなります。

Alertのアクショングループ(Action Group)

Alertには**アクショングループ(Action Group)**という概念があります。これはAlertの「状態の種類」をより細かく表現するもので、どのActionを実行するかの分岐に使われます。

組み込みアクショングループ

グループ 説明
(Rule Type固有のデフォルトグループ) Alertがアクティブなとき
recovered Alertが回復したとき(自動回復が有効な場合)

カスタムアクショングループの例

Rule TypeによってはAlertの重大度などに応じた複数のグループを定義できます。たとえばMetric threshold ruleでは criticalwarning などのグループを定義して、それぞれに異なるActionを設定できます。

アクショングループが変化した場合(例: warningcritical)、Action Frequencyを onActionGroupChange に設定していると通知がトリガーされます。

autoRecoverAlerts

Rule Typeのオプションで autoRecoverAlerts が有効(デフォルト)の場合、条件を満たさなくなったAlertは自動的に recovered グループに遷移し、recover用のActionが実行されます。一部のRule Type(Security Solutionなど)はこの自動回復を無効にして、手動でのワークフロー管理を前提とした設計になっています。

Alertの保存形式

AlertはElasticsearchのインデックスに直接ドキュメントとして保存されます。保存先のインデックスはRule Typeのカテゴリによって異なります。

インデックスの命名規則

Alert用インデックスは以下のパターンで命名されます。

.alerts-{registrationContext}.alerts-{namespace}

実際のデータは以下の内部インデックスに書き込まれ、エイリアス経由でアクセスします。

(書き込み先)  .internal.alerts-{registrationContext}.alerts-{namespace}-000001
(エイリアス)  .alerts-{registrationContext}.alerts-{namespace}

カテゴリ別の保存先

カテゴリ インデックス例
management(Stack rules) .alerts-stack.alerts-default
observability(APM) .alerts-observability.apm.alerts-default
observability(Logs) .alerts-observability.logs.alerts-default
observability(Metrics) .alerts-observability.metrics.alerts-default
observability(SLO) .alerts-observability.slo.alerts-default
observability(Uptime/Synthetics) .alerts-observability.uptime.alerts-default
securitySolution .alerts-security.alerts-default

default の部分はKibanaスペースIDになります。スペース production を使っている場合は *.alerts-production となります。

なお一部の古いRule Type(Stack MonitoringのクラスターヘルスチェックなどStack Managementに含まれる監視系)はこの仕組みを使わず、Event Logにのみ記録されます。

Alertドキュメントの検索例

以下のクエリでアクティブなAlertを取得できます。

GET .alerts-*/_search
{
  "query": {
    "term": {
      "kibana.alert.status": "active"
    }
  }
}

特定のRuleのAlertに絞る場合は kibana.alert.rule.uuid を使います。

GET .alerts-*/_search
{
  "query": {
    "bool": {
      "filter": [
        { "term": { "kibana.alert.rule.uuid": "<rule-id>" } },
        { "term": { "kibana.alert.status": "active" } }
      ]
    }
  }
}

主要フィールド

フィールド 説明
kibana.alert.status アラートのステータス(active / recovered / untracked
kibana.alert.instance.id アラートインスタンスのID(ホスト名など)
kibana.alert.uuid アラートのUUID(アクティブ期間ごとに新たに採番)
kibana.alert.start アラートが初めてアクティブになった日時
kibana.alert.end アラートが回復またはuntracked化した日時
kibana.alert.duration.us アラートの継続時間(マイクロ秒)
kibana.alert.action_group 現在のアクショングループID
kibana.alert.reason アラートの理由(人間が読める説明文)
kibana.alert.flapping フラッピング状態かどうか
kibana.alert.maintenance_window_ids 適用されているMaintenance WindowのID
kibana.alert.workflow_status ワークフロー状態(open / acknowledged / closed
kibana.alert.rule.uuid 親RuleのID
kibana.alert.rule.name 親Ruleの名前
kibana.alert.rule.type_id Rule TypeのID
kibana.alert.rule.category Rule Typeの表示名
kibana.alert.rule.consumer Ruleのコンシューマ(stackAlertsなど)
kibana.alert.rule.execution.uuid 直近のRule実行UUID
kibana.space_ids Ruleが属するKibanaスペースID
kibana.version Alert生成時のKibanaバージョン

KibanaでのAlertの閲覧

Alertの閲覧場所はRuleのカテゴリによって異なります。

Stack Management(managementカテゴリ)

Stack Management > Alerts and Insights > Alerts から閲覧できます。このページではすべてのカテゴリのAlertを横断的に表示できます。

Observabilityアプリ(observabilityカテゴリ)

Observability > Alerts からObservabilityカテゴリのAlertを閲覧できます。APM・インフラ・ログ・SLOなどのObservabilityルールが生成したAlertがここに表示されます。

Elastic Securityアプリ(securitySolutionカテゴリ)

Security > Alerts からSecurityカテゴリのAlertを閲覧できます。Security専用のトリアージ機能(ワークフロー管理、ケースへの追加、調査機能など)が利用できます。

Alertの共通UI機能

どの閲覧場所でも以下の操作が共通して利用できます。

  • アラートのステータスによるフィルタリング
  • ルール・期間・重大度などでの絞り込み
  • アラートの詳細表示(発生日時・ルール情報・アクショングループなど)
  • インスタンス単位のミュート設定
  • ケース(Cases)への追加
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?