アラートの基本
このドキュメントのトピックは、Grafana バージョン 8.x をサポートする Grafana ワークスペース向けです。
Grafana バージョン 10.x をサポートする Grafana ワークスペースについては、「Grafana バージョン 10 での作業」を参照してください。
Grafana バージョン 9.x をサポートする Grafana ワークスペースについては、「Grafana バージョン 9 での作業」を参照してください。
このセクションでは、Grafana アラートの基本概念について説明します。
アラートの概念
以下の表では、Grafana アラート機能の主要な概念について説明しています。
主要な概念または機能 | 定義 |
---|---|
アラートに使用するデータソース |
メトリクス、ログ、トレースをクエリおよび視覚化するデータソースを選択します。 |
スケジューラー |
アラートルールを評価するコンポーネントで、データソースに対して定期的にクエリを実行します。これは Grafana が管理するルールにのみ適用されます。 |
アラートマネージャー |
アラートインスタンスのルーティングとグループ化を管理します。 |
アラートルール |
アラートルールを発動させる評価基準のセット。アラートルールは、1 つ以上のクエリと式、条件、評価の頻度、その条件の持続時間で構成されます。アラートルールは、複数のアラートインスタンスを生成できます。 |
アラートインスタンス |
アラートインスタンスは、アラートルールのインスタンスです。1 次元アラートルールには 1 つのアラートインスタンスがあります。多次元アラートルールには 1 つ以上のアラートインスタンスがあります。複数の結果に一致する単一のアラートルール、たとえば 10 台の仮想マシンに対する CPU の監視は、複数 (この場合は 10) のアラートインスタンスとしてカウントされます。この数は時間の経過とともに変動する場合があります。たとえば、システム内のすべての仮想マシンの CPU 使用率を監視するアラートルールは、仮想マシンを追加するとアラートインスタンスが増加します。アラートインスタンスのクォータの詳細については、クォータ到達エラー を参照してください。 |
アラートグループ |
アラートマネージャーは、ルート通知ポリシーのラベルを使用して、デフォルトでアラートインスタンスをグループ化します。これにより、コンタクトポイントに送信される重複排除とアラートインスタンスのグループが制御されます。 |
コンタクトポイント |
アラートルール発生時の通知先への通知方法を定義します。 |
メッセージテンプレート |
コンタクトポイント使用する再利用可能なカスタムテンプレートを作成します。 |
通知ポリシー |
アラートがどこで、いつ、どのようにグループ化され、コンタクトポイントにルーティングされるかを定義するルールのセット。 |
ラベルとラベル照合機能 |
ラベルはアラートルールを識別するための一意な識別子です。ラベルによってアラートルールが通知ポリシーとサイレンスに紐づけられ、どのポリシーで処理されるか、どのアラートルールをサイレンス対象にするかを決定します。 |
サイレンス |
1 つ以上のアラートインスタンスからの通知を停止します。サイレンスとミュートタイミングの違いは、サイレンスは指定した時間帯の間だけ有効であるのに対し、ミュートタイミングは繰り返しのスケジュールに基づいて発生する点です。アラートインスタンスをサイレンス対象とするにはラベル照合機能を使用します。 |
ミュートタイミング |
通知を新たに生成または送信しない時間間隔を指定します。メンテナンス期間など、繰り返し発生する期間中にアラート通知を停止することができます。既存の通知ポリシーにリンクする必要があります。 |
アラートのデータソース
Grafana 管理のアラートは、アラートが有効になっている以下のバックエンドデータソースをクエリします。
-
ビルトイン、または Grafana によって開発、維持管理されているデータソース:
Alertmanager
、Graphite
、Prometheus
(Amazon Managed Service for Prometheus を含む)、Loki
、InfluxDB
、Amazon OpenSearch Service
、Google Cloud Monitoring
、Amazon CloudWatch
、Azure Monitor
、MySQL
、PostgreSQL
、MSSQL
、OpenTSDB
、Oracle
、Azure Monitor
。
数値データのアラート
時系列形式でない数値データは、サーバー側の式に渡したり、直接アラートすることができます。これにより、データソース内の処理と効率が向上し、アラートルールを簡素化することができます。時系列データではなく数値データを基にアラートを送信する場合、ラベル付きの各時系列を 1 つの数値に集約する必要はありません。代わりに、ラベル付き番号が Grafana に返されます。
表形式のデータ
この機能は、MySQL 、Postgres、MSSQL、Oracle などの SQL データソースを含む表形式のデータをクエリするバックエンドデータソースでサポートされています。
Grafana 管理のアラートまたはサーバー側の式を含むクエリは、これらのデータソースでは数値として扱われます。
-
データソースのクエリで
Format AS
オプションがTable
に設定されている場合。 -
クエリから Grafana に返されたレスポンステーブルの数値列 (int、double、float など) が 1 列だけの場合 (その他文字列が返されている場合も含みます)。
文字列がある場合、それらの列はラベルになります。列の名前はラベル名になり、各行の値は対応するラベルの値になります。複数の行が返された場合、各行はラベルによって一意に識別される必要があります。
例
例えば、次のような MySQL のテーブル「Diskspace」があるとします。
時間 | ホスト | ディスク | PercentFree |
---|---|---|---|
2021 年 6 月 7 日 |
web1 |
/etc |
3 |
2021 年 6 月 7 日 |
web2 |
/var |
4 |
2021 年 6 月 7 日 |
web3 |
/var |
8 |
… |
… |
… |
… |
データを時間でフィルタリングしてクエリを実行できますが、時間系列は Grafana に返す必要はありません。例えば、空き容量が 5% 未満の場合、ホスト、ディスクごとにアラートを発生させる場合は次のようになります。
SELECT Host, Disk, CASE WHEN PercentFree < 5.0 THEN PercentFree ELSE 0 END FROM ( SELECT Host, Disk, Avg(PercentFree) FROM DiskSpace Group By Host, Disk Where __timeFilter(Time)
このクエリでは、次のようなレスポンステーブルが返されます。
ホスト | ディスク | PercentFree |
---|---|---|
web1 |
/etc |
3 |
web2 |
/var |
4 |
web3 |
/var |
0 |
このクエリがアラートルールの[条件]として使用されると、値がゼロでない場合にアラートが発生します。その結果、次の表のように 3 つのアラートインスタンスが生成されます。
ラベル | ステータス |
---|---|
{Host=web1,disk=/etc} |
アラート |
{Host=web2,disk=/var} |
アラート |
{Host=web3,disk=/var} |
普通 |
アラートマネージャー
Grafana にはビルトインで Prometheus アラートマネージャーのサポートが含まれています。アラートマネージャーはアラートルールをグループ化し管理する役割を果たし、アラートエンジンの上にオーケストレーション機能を追加します。デフォルトでは、Grafana 管理のアラートの通知は、Grafana の基本機能の一部として組み込まれているアラートマネージャーによって処理されます。アラートマネージャードロップダウンから Grafana オプションを選択することで、Grafana アラート UI からアラートマネージャーのコンタクトポイント、通知ポリシー、テンプレートを設定できます。
Grafana のアラート機能は、外部アラートマネージャー設定をサポートしています (外部データソースとしてのアラートマネージャーの詳細については、「アラートマネージャーデータソースに接続する」を参照してください)。外部アラートマネージャーを追加すると、アラートマネージャードロップダウンに使用可能な外部アラートマネージャーデータソースのリストが表示されます。データソースを選択して、スタンドアロンの Cortex または Loki データソースのアラートを作成および管理します。
アラートルールの状態と正常性
アラートルールの状態と正常性は、アラートに関するいくつかの主要なステータスインジケータを理解するのに役立ちます。主な構成内容は、「アラートの状態」、「アラートルール状態」、「アラートルールの正常性」の 3 つです。これらは関連していますが、それぞれ異なる情報を伝達します。
アラートルールの状態
-
[普通] – 評価エンジンから返された時系列のいずれも
Pending
またはFiring
の状態でない。 -
[保留中]– 評価エンジンから返された時系列の少なくとも 1 つに
Pending
がある。 -
[発動中] — 評価エンジンから返された時系列の少なくとも 1 つに
Firing
がある。
アラートの状態
-
[普通] – 評価エンジンから返されたすべての時系列に対して、アラートルールの条件が [偽] である。
-
[アラート] – 評価エンジンから返された時系列のうち、1 つ以上のアラートルールの条件が [真] である。アラートが発生するために必要な、条件がである持続時間が設定されていて、その持続時間を経過した、または超えている。
-
[保留中] – 評価エンジンから返された時系列のうち、1 つ以上のアラートルールの条件が [真] である。アラートが発生するために必要な、条件がである持続時間が設定されていて、その持続時間を経過していない。
-
[NoData] – アラートルールが時系列を返していない、時系列のすべての値が null、または時系列のすべての値がゼロ。
-
[エラー] - アラートルールを評価しようとしてエラーが発生した。
アラートルールの正常性
-
OK – アラートルールの評価時にエラーがなかった。
-
[エラー] – アラートルールの評価時にエラーがあった。
-
[NoData] – ルール評価中に返された少なくとも 1 つの時系列にデータが存在しない。