数値データのアラート
このドキュメントのトピックは、Grafana バージョン 10.x をサポートする Grafana ワークスペース向けです。
Grafana バージョン 9.x をサポートする Grafana ワークスペースについては、「Grafana バージョン 9 での作業」を参照してください。
Grafana バージョン 8.x をサポートする Grafana ワークスペースについては、「Grafana バージョン 8 での作業」を参照してください。
このトピックでは、Grafana が時系列データではなく数値データのアラートを処理する方法について説明します。
特定のデータソースでは、時系列ではない数値データをサーバーサイド式 (SSE) で直接アラートしたり、渡したりすることができます。これにより、データソース内の処理と効率が向上し、アラートルールを簡素化することができます。時系列データではなく数値データを基にアラートを送信する場合、ラベル付きの各時系列を 1 つの数値に集約する必要はありません。代わりに、ラベル付き番号が Grafana に返されます。
表形式のデータ
この機能は、表形式データをクエリするバックエンドデータソースでサポートされています。
-
MySQL 、Postgres、MSSQL、Oracle などの SQL データソース。
-
Azure Kusto ベースのサービス: Azure Monitor (Logs)、Azure Monitor (Azure Resource Graph)、および Azure Data Explorer。
Grafana 管理のアラートまたは SSE を含むクエリは、以下の場合、これらのデータソースでは数値として扱われます。
-
データソースクエリの「Format AS」オプションが「テーブル」に設定されている。
-
クエリから Grafana に返されるテーブルレスポンスには、1 つの数値 (int、double、float など) 列と、オプションで追加の文字列列のみが含まれている。
文字列がある場合、それらの列はラベルになります。列の名前がラベル名になり、各行の値が対応するラベルの値になります。複数の行が返された場合、各行はラベルによって一意に識別される必要があります。
例
「DiskSpace」という名前の MySQL テーブルの場合:
時間 | ホスト | ディスク | 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)
このクエリでは、次のようなレスポンステーブルが Grafana に返されます。
ホスト | ディスク | PercentFree |
---|---|---|
web1 |
/etc |
3 |
web2 |
/var |
4 |
web3 |
/var |
0 |
このクエリがアラートルールの条件として使用されると、ゼロ以外のクエリはアラートになります。その結果、次の 3 つのアラートインスタンスが生成されます。
ラベル | ステータス |
---|---|
{Host=web1,disk=/etc} |
アラート |
{Host=web2,disk=/var} |
アラート |
{Host=web3,disk=/var} |
[普通] |