

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# クエリと条件
<a name="v10-alerting-explore-rules-queries"></a>

****  
このドキュメントのトピックは、**Grafana バージョン 10.x** をサポートする Grafana ワークスペース向けです。  
Grafana バージョン 9.x をサポートする Grafana ワークスペースについては、「[Grafana バージョン 9 での作業](using-grafana-v9.md)」を参照してください。  
Grafana バージョン 8.x をサポートする Grafana ワークスペースについては、「[Grafana バージョン 8 での作業](using-grafana-v8.md)」を参照してください。

Grafana では、クエリは、MySQL や PostgreSQL などのデータベース、Prometheus、InfluxDB、Graphite などの時系列データベース、OpenSearch 、Amazon CloudWatch 、Azure Monitor、Google Cloud Monitoring などのサービスなど、サポートされているデータソースからのデータの取得と変換に重要な役割を果たします。

サポートされているデータソースの詳細については、「[データソースと Grafana アラート](v10-alerting-overview-datasources.md)」を参照してください。

クエリを実行するプロセスには、データソースの定義、取得するデータの特定、関連するフィルターまたは変換の適用が含まれます。選択したデータソースに固有のクエリ言語または構文は、これらのクエリのコンストラクトに使用されます。

アラートでは、測定するデータと、アラートルールを起動する前に満たす必要がある条件を取得するクエリを定義します。

アラートルールは、測定するデータを選択する 1 つ以上のクエリと式で構成されます。

クエリと式の詳細については、「[データのクエリと変換](v10-panels-query-xform.md)」を参照してください。

## データソースクエリ
<a name="v10-alerting-explore-rules-queries-data-source-queries"></a>

Grafana のクエリは、使用するデータソースとクエリ言語に応じて、さまざまな方法で適用できます。各データソースのクエリエディタには、独自の機能を活用するクエリの作成に役立つカスタマイズされたユーザーインターフェイスが用意されています。

クエリ言語の違いにより、各データソースクエリエディタの外観と関数は異なります。データソースによっては、クエリエディタが自動補完機能、メトリクス名、変数の提案、ビジュアルクエリ構築インターフェイスを提供する場合があります。

一般的なタイプのクエリコンポーネントには、次のようなものがあります。

**メトリクスまたはデータフィールド** – CPU 使用量、ネットワークトラフィック、センサー読み取りなど、取得する特定のメトリクスまたはデータフィールドを指定します。

**時間範囲** – 過去 1 時間、特定の日、カスタム時間範囲など、データを取得する時間範囲を指定します。

**フィルター** – フィルターを適用して、特定のタグ、ホスト、またはアプリケーションでデータをフィルタリングするなど、特定の基準に基づいてデータを絞り込みます。

**集計** - データを集計して、特定の期間の平均、合計、カウントなどのメトリクスを計算します。

**グループ分け** – データを特定のディメンションまたはタグでグループ化して、集計ビューまたは内訳を作成します。

**注記**  
Grafana は、テンプレート変数を使用したアラートクエリはサポートしていません。詳細については、Grafana Labs フォーラム内の[こちら](https://community.grafana.com/t/template-variables-are-not-supported-in-alert-queries-while-setting-up-alert/2514)を参照してください。

## クエリ式
<a name="v10-alerting-explore-rules-queries-expression-queries"></a>

Grafana では、式を使用して、クエリされたデータソースデータに対して計算、変換、または集計を実行します。これにより、数学演算、関数、または論理式に基づいてカスタムメトリクスを作成したり、既存のメトリクスを変更したりできます。

クエリ式を活用することで、ユーザーは 2 つの値間の変化率の計算、対数関数や三角関数などの関数の適用、特定の時間範囲やディメンションにわたるデータの集約、さまざまなシナリオを処理するための条件ロジックの実装などのタスクを実行できます。

アラートでは、Grafana 管理のアラートルールにのみ式を使用できます。式ごとに、Math、Reduce、リサンプリング式を選択できます。これらは、シリーズごとに個別のアラートを生成するため、多次元ルールと呼ばれます。

クラシック条件を使用して、条件が満たされたときに単一のアラートをトリガーするアラートルールを作成することもできます。そのため、複数のシリーズでアラート条件が満たされた場合でも、Grafana が送信するアラートは 1 件のみです。

**注記**  
クラシック条件は主に互換性上の理由から存在するため、可能であれば避けるようにしてください。

**[削減]**

選択した時間範囲の時系列値を 1 つの値に集約します。

**数値演算**

時系列および数値データに対して自由形式の数学関数/オペレーションを実行します。時系列データの事前処理や、数値データのアラート条件の定義に使用できます。

**[リサンプリング]**

時間範囲を新しいタイムスタンプのセットに再調整します。これは、タイムスタンプが一致しない異なるデータソースからの時系列データを比較する場合に役立ちます。

**Threshold**

時系列データがしきい値条件と一致するかどうかを確認します。

しきい値式を使用すると、2 つの単一の値を比較できます。条件が偽の場合 `0` と、条件が真の場合に `1` が返されます。次のしきい値関数が使用可能です。
+ Is above (x > y)
+ Is below (x < y)
+ Is within range (x > y1 AND x < y2)
+ Is outside range (x < y1 AND x > y2)

**クラシック条件**

時系列データがアラート条件と一致するかどうかを確認します。

**注記**  
クラシック条件クエリ式は、条件を満たす時系列の数に関係なく、常に 1 つのアラートインスタンスのみを生成します。クラシック条件は主に互換性上の理由から存在するため、可能であれば避けるようにしてください。

## 集計
<a name="v10-alerting-explore-rules-queries-aggregations"></a>

Grafana アラートでは、クエリをさらに絞り込むために、次の集計関数が用意されています。

これらの関数は、**削減** 式と**クラシック条件**式でのみ使用できます。


| 関数 | 式 | その内容 | 
| --- | --- | --- | 
| avg | 削減/クラシック | 値の平均を表示します | 
| min | 削減/クラシック | 最小値を表示します | 
| max | 削減/クラシック | 最大値を表示します | 
| sum | 削減/クラシック | すべての値の合計を表示します | 
| count | 削減/クラシック | 結果の値の数をカウントします | 
| last | 削減/クラシック | 最後の値を表示します | 
| median | 削減/クラシック | 中央値を表示します。 | 
| diff | クラシック | 最も新しい値と最も古い値の差を表示します。 | 
| diff\$1abs | クラシック | diff の絶対値を表示します。 | 
| percent\$1diff | Classic | 最も新しい値と最も古い値の差の割合値を表示します。 | 
| percent\$1diff\$1abs | Classic | percent\$1diff の絶対値を表示します | 
| count\$1non\$1null | Classic | 結果セット内の値のうち、null でない値の数を表示します。 | 

## アラート条件
<a name="v10-alerting-explore-rules-queries-alert-condition"></a>

アラート条件は、アラートが発射するかどうかを決定するクエリまたは式です。この条件は、アラートが生成する値に応じて決定されます。アラートのトリガーを決定する条件は 1 つだけです。

クエリや式を定義したら、そのいずれかをアラートルール条件として選択します。

クエリされたデータが定義された条件を満たすと、Grafana は関連付けられたアラートをトリガーします。このアラートは、E メール、Slack、PagerDuty などのさまざまなチャネルを介して通知を送信するように設定できます。通知は、満たされている条件について通知するため、適切なアクションを実行したり、根本的な問題を調査したりできます。

デフォルトでは、最後に追加された式がアラート条件として使用されます。

## 復旧しきい値
<a name="v10-alerting-explore-rules-queries-recovery-threshold"></a>

アラートのフラッピングのノイズを減らすには、アラートしきい値とは異なる復旧しきい値を設定します。

アラートのフラッピングは、メトリクスがアラートのしきい値条件を超えた場合に発生し、頻繁な状態の変化につながる可能性があり、生成される通知が多すぎます。

Grafana 管理のアラートルールは、特定の期間にわたって評価されます。各評価中、クエリの結果はアラートルールで設定されたしきい値に対してチェックされます。メトリクスの値がしきい値を超えると、アラートルールが生成され、通知が送信されます。値がしきい値を下回り、このメトリクスに対してアクティブなアラートがある場合、アラートが解決され、別の通知が送信されます。

ノイズの多いメトリクスのアラートルールを作成するのは難しい場合があります。つまり、メトリクスの値が継続的にしきい値を上回ったり下回ったりする場合です。これはフラッピングと呼ばれ、一連の発射 - 解決 - 発射通知とノイズの多いアラート状態履歴になります。

例えば、しきい値が 1000 ミリ秒のレイテンシーのアラートがあり、その数が 1000 の周囲 (例えば、980 ->1010 -> 990 -> 1020 など) で変動すると、それぞれが通知をトリガーします。

この問題を解決するには、 (カスタム) 復旧しきい値を設定できます。これは基本的に、1 つのしきい値ではなく 2 つのしきい値を持つことを意味します。アラートは、最初のしきい値を超えたときにトリガーされ、2 番目のしきい値を超えたときにのみ解決されます。

例えば、しきい値を 1000 ミリ秒、復旧しきい値を 900 ミリ秒に設定することができます。これにより、アラートルールは 900 ミリ秒未満になり、フラッピングが軽減された場合にのみ発射を停止します。