

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

# アラートの詳細
<a name="v9-alerting-explore"></a>

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

Grafanaアラートの実装を開始または拡張するかどうかにかかわらず、アラートの作成、管理、およびアクションの実行に役立つ主要な概念と利用可能な機能の詳細を確認し、問題を迅速に解決するチームの能力を向上させます。

まず、Grafana アラートが提供するさまざまなアラートルールタイプを見てみましょう。

## アラートルールタイプ
<a name="v9-alerting-explore-rule-types"></a>

**Grafana マネージドルール**

Grafana マネージドルールは、最も柔軟なアラートルールの種類です。これにより、サポートされている任意のデータソースのデータに対して動作するアラートを作成できます。複数のデータソースをサポートするだけでなく、式を追加してデータを変換し、アラート条件を設定することもできます。これは、単一のルール定義で複数のデータソースからのアラートを許可する唯一のルールタイプです。

**Mimir および Loki ルール**

Mimir または Loki アラートを作成するには、互換性のある Prometheus または Loki データソースが必要です。データソースをテストし、Ruler API がサポートされているかどうかを観察することで、データソースが Grafana 経由でルール作成をサポートしているかどうかを確認できます。

**記録ルール**

記録ルールは、互換性のある Prometheus または Loki データソースでのみ使用できます。記録ルールでは、頻繁に必要になる式や計算負荷の高い式を事前に計算し、その結果を新しい時系列セットとして保存できます。これは、集計データに対してアラートを実行する場合や、計算コストの高い式を繰り返しクエリするダッシュボードがある場合に便利です。

## 主な概念と特徴
<a name="v9-alerting-explore-features"></a>

次の表には、Grafana アラートを最大限に活用できるように設計された主要な概念、機能、およびそれらの定義の一覧を示します。


| 主要な概念または機能 | 定義 | 
| --- | --- | 
|  アラートに使用するデータソース  |  メトリクス、ログ、トレースをクエリおよび視覚化するデータソースを選択します。  | 
|  アラートのプロビジョニング  |  アラートリソースを管理し、ファイルプロビジョニングまたは Terraform を使用して Grafana システムにプロビジョニングします。  | 
|  アラートマネージャー  |  アラートインスタンスのルーティングとグループ化を管理します。  | 
|  アラートルール  |  アラートルールを発動させる評価基準のセット。アラートルールは、1 つ以上のクエリと式、条件、評価の頻度、その条件の持続時間で構成されます。アラートルールは、複数のアラートインスタンスを生成できます。  | 
|  アラートインスタンス  |  アラートインスタンスは、アラートルールのインスタンスです。1 次元アラートルールには 1 つのアラートインスタンスがあります。多次元アラートルールには 1 つ以上のアラートインスタンスがあります。複数の結果に一致する単一のアラートルール、たとえば 10 台の仮想マシンに対する CPU の監視は、複数 (この場合は 10) のアラートインスタンスとしてカウントされます。この数は時間の経過とともに変動する場合があります。たとえば、システム内のすべての仮想マシンの CPU 使用率を監視するアラートルールは、仮想マシンを追加するとアラートインスタンスが増加します。アラートインスタンスのクォータの詳細については、[クォータ到達エラー](v9-alerting-managerules-grafana.md#v9-alerting-rule-quota-reached) を参照してください。  | 
|  アラートグループ  |  アラートマネージャーは、ルート通知ポリシーのラベルを使用して、デフォルトでアラートインスタンスをグループ化します。これにより、コンタクトポイントに送信される重複排除とアラートインスタンスのグループが制御されます。  | 
|  コンタクトポイント  |  アラートルール発生時の通知先への通知方法を定義します。  | 
|  メッセージテンプレート  |  コンタクトポイント使用する再利用可能なカスタムテンプレートを作成します。  | 
|  通知ポリシー  |  アラートがどこで、いつ、どのようにグループ化され、コンタクトポイントにルーティングされるかを定義するルールのセット。  | 
|  ラベルとラベル照合機能  |  ラベルはアラートルールを識別するための一意な識別子です。ラベルによってアラートルールが通知ポリシーとサイレンスに紐づけられ、どのポリシーで処理されるか、どのアラートルールをサイレンス対象にするかを決定します。  | 
|  サイレンス  |  1 つ以上のアラートインスタンスからの通知を停止します。サイレンスとミュートタイミングの違いは、サイレンスは指定した時間帯の間だけ有効であるのに対し、ミュートタイミングはスケジュールに沿って繰り返される点です。アラートインスタンスをサイレンス対象とするにはラベル照合機能を使用します。  | 
|  ミュートタイミング  |  通知を新たに生成または送信しない時間間隔を指定します。また、メンテナンス期間など、繰り返し発生する期間中にアラート通知を停止することができます。既存の通知ポリシーにリンクする必要があります。  | 

# データソース
<a name="v9-alerting-explore-datasources"></a>

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

Grafana アラートと互換性のある[データソース](AMG-data-sources-builtin.md)は多数あります。各データソースはプラグインでサポートされています。以下に示す組み込みデータソースのいずれかを使用できます。

これらは、Amazon Managed Grafana と互換性があり、Amazon Managed Grafana でサポートされているデータソースです。
+ [アラートマネージャーデータソースに接続する](data-source-alertmanager.md)
+ [Amazon CloudWatch データソースへの接続](using-amazon-cloudwatch-in-AMG.md)
+ [Amazon OpenSearch Service データソースへの接続](using-Amazon-OpenSearch-in-AMG.md)
+ [AWS IoT SiteWise データソースに接続する](using-iotsitewise-in-AMG.md)
+ [An AWS IoT TwinMaker データソースに接続する](AMG-iot-twinmaker.md)
+ [Amazon Managed Service for Prometheus およびオープンソースの Prometheus データソースへの接続](prometheus-data-source.md)
+ [Amazon Timestream データソースへの接続](timestream-datasource.md)
+ [Amazon Athena データソースに接続する](AWS-Athena.md)
+ [Amazon Redshift データソースに接続する](AWS-Redshift.md)
+ [AWS X-Ray データソースに接続する](x-ray-data-source.md)
+ [Azure Monitor データソースへの接続](using-azure-monitor-in-AMG.md)
+ [Google Cloud Monitoring データソースへの接続](using-google-cloud-monitoring-in-grafana.md)
+ [Graphite データソースに接続する](using-graphite-in-AMG.md)
+ [InfluxDB ソースデータベースに接続するには](using-influxdb-in-AMG.md)
+ [Loki データソースに接続するには](using-loki-in-AMG.md)
+ [Microsoft SQL Server データソースに接続する](using-microsoft-sql-server-in-AMG.md)
+ [MySQL データソースに接続する](using-mysql-in-AMG.md)
+ [OpenTSDB データソースに接続する](using-opentsdb-in-AMG.md)
+ [PostgreSQL データソースに接続する](using-postgresql-in-AMG.md)
+ [Jaeger データソースへの接続](jaeger-data-source.md)
+ [Zipkin データソースへの接続](zipkin-data-source.md)
+ [Tempo データソースへの接続](tempo-data-source.md)
+ [テスト用 TestData データソースの設定](testdata-data-source.md)

# アラートルールについて
<a name="v9-alerting-explore-rules"></a>

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

アラートルールは、アラートインスタンスを起動するかどうかを決定する一連の評価基準です。アラートルールは、1 つ以上のクエリと式、条件、評価の頻度、およびオプションとしてその条件の持続時間で構成されます。

評価するデータセットを「クエリと式」で選択し、「条件」にアラートがアラートを発行するための基準 (しきい値) を設定します。

間隔は、アラートルールが評価される頻度を指定します。「持続時間」を設定した場合、その条件下にある状態の継続時間を示します。また、アラートルールでは、データがない場合のアラート動作も設定できます。

**Topics**
+ [アラートルールタイプ](v9-alerting-explore-rules-types.md)
+ [アラートインスタンス](v9-alerting-rules-instances.md)
+ [名前空間とグループ](v9-alerting-rules-grouping.md)
+ [通知テンプレートの作成](v9-alerting-rules-notification-templates.md)

# アラートルールタイプ
<a name="v9-alerting-explore-rules-types"></a>

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

Grafana は複数のアラートルールタイプをサポートしています。以下のセクションでは、そのメリットとデメリットについて説明します。この内容は、ユースケースに適したアラートタイプを選択するのに役立ちます。

Grafana マネージドルール

Grafana マネージドルールは、最も柔軟なアラートルールの種類です。これにより、既存の任意のデータソースのデータに対して動作するアラートを作成できます。

あらゆるデータソースをサポートするだけでなく、[[式]](v9-panels-query-xform-expressions.md)を追加してデータを変換し、アラート条件を表現できます。

Mimir、Loki、Cortex ルール

Mimir、Loki、または Cortex アラートを作成するには、互換性のある Prometheus データソースが必要です。データソースが互換性があるかどうかを確認するには、データソースをテストし、Ruler API がサポートされているかどうかの詳細を確認します。

記録ルール

記録ルールは、Mimir、Loki、Cortex などの互換性のある Prometheus データソースでのみ使用できます。

記録ルールを使用すると、式の結果を新しい時系列のセットに保存できます。これは、集計データに対してアラートを実行する場合や、同じ式を繰り返しクエリするダッシュボードがある場合に便利です。

Prometheus での[記録ルール](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/)の詳細については、こちらを参照してください。

# アラートインスタンス
<a name="v9-alerting-rules-instances"></a>

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

Grafana マネージドアラートは、多次元アラートをサポートします。各アラートルールは、複数のアラートインスタンスを作成できます。これは、1 つの式で複数のシリーズを観察する場合に強力です。

次の PromQL 式を検討してください。

```
sum by(cpu) (
  rate(node_cpu_seconds_total{mode!="idle"}[1m])
)
```

この式を使用するルールは、評価中に監視している CPU の数と同じ数のアラートインスタンスを作成し、単一のルールで各 CPU のステータスをレポートできるようにします。

# 名前空間とグループ
<a name="v9-alerting-rules-grouping"></a>

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

アラートは、Grafana マネージドルールのフォルダと、Mimir、Loki、または Prometheus のルールとグループ名の名前空間を使用して整理できます。

**名前空間**

Grafana マネージドルールを作成する場合、 フォルダを使用してアクセス制御を実行し、特定のフォルダ内のすべてのルールへのアクセスを許可または拒否できます。

**グループ**

グループ内のすべてのルールは、同じ**間隔**で評価されます。

グループ内のアラートルールと記録ルールは、常に**順番に**評価されます。つまり、同時に出現順に評価されるルールはありません。

**ヒント**  
ルールを異なる間隔で同時に評価したい場合は、異なるグループに保存することを検討してください。

# 通知テンプレートの作成
<a name="v9-alerting-rules-notification-templates"></a>

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

コンタクトポイントを介して送信される通知は、通知テンプレートを使用して構築されます。Grafana のデフォルトテンプレートは [Go テンプレートシステム](https://golang.org/pkg/text/template)に基づいており、一部のフィールドはテキストとして評価され、他のフィールドは HTML (エスケープに影響する可能性があります) として評価されます。

デフォルトのテンプレート [[default\$1template.go]](https://github.com/grafana/alerting/blob/main/templates/default_template.go) は、カスタムテンプレートの便利なリファレンスとして機能します。

コンタクトポイントに使用するほとんどのフィールドはテンプレート化できるため、再利用可能なカスタムテンプレートを作成し、複数のコンタクトポイントで使用すると良いでしょう。テンプレートを使用したカスタム通知の詳細については、「[通知のカスタマイズ](v9-alerting-notifications.md)」を参照してください。

**テンプレートのネスト**

テンプレートは他のテンプレートに埋め込むことができます。

例えば、 `define` キーワードを使用してテンプレートフラグメントを定義できます。

```
{{ define "mytemplate" }}
  {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved.
{{ end }}
```

その後、 `template` キーワードを使用して、このフラグメント内にカスタムテンプレートを埋め込むことができます。例えば、次のようになります。

```
Alert summary:
{{ template "mytemplate" . }}
```

以下の任意のビルトインのテンプレートオプションを使用して、カスタムテンプレートを埋め込むことができます。


| 名前 | 注意事項 | 
| --- | --- | 
|  `default.title`  |  全体的なステータス情報を表示します。  | 
|  `default.message`  |  発生中および解決済みのアラートの概要をフォーマット付きで提供します。  | 
|  `teams.default.message`  |  `default.messsage` と同様に、Microsoft Teams 用にフォーマットされています。  | 

**通知テンプレートの HTML**

アラート通知テンプレートの HTML はエスケープされます。結果の通知では、HTML のレンダリングはサポートされていません。

一部の通知機能は、結果の通知のルックアンドフィールを変更する代替方法をサポートしています。例えば、Grafana は `<grafana-install-dir>/public/emails/ng_alert_notification.html` に E メールをアラートするためのベーステンプレートをインストールします。このファイルを編集して、すべてのアラートメールの外観を変更できます。

# 数値データのアラート
<a name="v9-alerting-explore-numeric"></a>

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

このトピックでは、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 テーブルの場合:


| Time | ホスト | ディスク | 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 つのアラートインスタンスが生成されます。


| ラベル | ステータス | 
| --- | --- | 
|  \$1Host=web1,disk=/etc\$1  |  [アラート]  | 
|  \$1Host=web2,disk=/var\$1  |  [アラート]  | 
|  \$1Host=web3,disk=/var\$1  |  普通  | 

# ラベルと注釈
<a name="v9-alerting-explore-labels"></a>

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

ラベルと注釈には、アラートに関する情報が含まれています。ラベルと注釈はどちらも同じ構造であり、名前付き値のセットですが、用途は異なります。ラベルまたは同等の注釈の例は、`alertname="test"` である場合があります。

ラベルと注釈の主な違いは、ラベルはアラートを他のすべてのアラートと区別するために使用され、注釈は既存のアラートに追加情報を追加するために使用されるという点です。

例えば、2 つの高 CPU アラートを考えてみましょう。1 つは `server1` 用、もう 1 つは `server2` 用です。このような例では、最初のアラートに `server="server1"` というラベルがあり、2 番目のアラートに `server="server2"` というラベルがある、`server` というラベルがある場合があります。ただし、 `server1` や `75%` がサーバーの名前と CPU 使用率に置き換えられる `"The CPU usage for server1 is above 75%."` などの各アラートに説明を追加することもできます (これを行う方法については、[ラベルと注釈のテンプレート作成](v9-alerting-explore-labels-templating.md) のドキュメントを参照してください）。このような説明は、注釈としてより適しています。

## ラベル
<a name="v9-alerting-explore-labels-labels"></a>

ラベルには、アラートを識別する情報が含まれます。ラベルの例は `server=server1` です。各アラートには複数のラベルを含めることができ、アラートのラベルの完全なセットはラベルセットと呼ばれます。アラートを識別するのはこのラベルセットです。

例えば、アラートにラベルセット `{alertname="High CPU usage",server="server1"}` が設定されているのに対し、別のアラートにラベルセット `{alertname="High CPU usage",server="server2"}` が設定されている場合があります。`alertname` ラベルは同じですが、`server` ラベルは異なるため、これらは 2 つの別々のアラートです。

アラートのラベルセットは、データソースのラベル、アラートルールのカスタムラベル、`alertname` などの予約済みラベルの組み合わせです。

**カスタムラベル**

カスタムラベルは、アラートルールからの追加ラベルです。注釈と同様に、カスタムラベルには名前が必要です。その値には、アラートが発射したときに評価されるテキストコードとテンプレートコードの組み合わせを含めることができます。カスタムラベルをテンプレート化する方法については、 [こちら](v9-alerting-explore-labels-templating.md)を参照してください。

テンプレートでカスタムラベルを使用する場合、多数の個別のアラートが生成されるのを避けるため、ラベルの値がアラートルールの連続した評価間で変化しないようにすることが重要です。ただし、テンプレートが異なるアラートに対して異なるラベル値を生成しても問題ありません。例えば、値が変更されるたびに新しいアラートセットが作成されてしまうため、クエリの値をカスタムラベルに入れないでください。代わりに注釈を使用します。

また、アラートのラベルセットに同じ名前のラベルが 2 つ以上ないことを確認することも重要です。カスタムラベルの名前がデータソースのラベルと同じ場合は、そのラベルが置き換えられます。ただし、カスタムラベルの名前が予約済みラベルと同じ場合、カスタムラベルはアラートから省略されます。

## ‏注釈
<a name="v9-alerting-explore-labels-annotations"></a>

注釈は、既存のアラートに追加情報を追加する名前付きペアです。Grafana には、`description`、`summary`、`runbook_url`、`dashboardUId`、`panelId` など、推奨される注釈が多数あります。カスタムラベルと同様に、注釈には名前が必要です。その値には、アラートが発射したときに評価されるテキストコードとテンプレートコードの組み合わせを含めることができます。注釈にテンプレートコードが含まれている場合は、アラートが発生したときにテンプレートが 1 回評価されます。アラートが解決されても、再評価されません。注釈をテンプレートする方法については、[こちら](v9-alerting-explore-labels-templating.md)を参照してください。

# ラベル一致の仕組み
<a name="v9-alerting-explore-labels-matching"></a>

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

ラベルとラベルマッチャーを使用して、アラートルールを通知ポリシーとサイレンスにリンクできます。これにより、アラートインスタンスを柔軟に管理し、処理するポリシーとサイレンスするアラートを指定できます。

ラベルマッチャーは、**ラベル**、**値**、**演算子** の 3 つの異なる部分で構成されます。
+ **[ラベル]**フィールドは、一致するラベルの名前です。ラベル名と完全に一致する必要があります。
+ **[値]**フィールドは、指定された**ラベル**名の対応する値と一致します。一致方法は、**演算子**の値によって異なります。
+ **[演算子]** フィールドは、ラベル値と一致させる演算子です。利用できる演算子は次のとおりです。


| 演算子 | 説明 | 
| --- | --- | 
|  `=`  |  値と完全に等しいラベルを選択します。  | 
|  `!=`  |  値と等しくないラベルを選択します。  | 
|  `=~`  |  値と正規表現が一致するラベルを選択します。  | 
|  `!~`  |  値と正規表現が一致しないラベルを選択します。  | 

複数のラベルマッチャーを使用している場合は、AND 論理演算子を使用して組み合わせられます。つまり、ルールをポリシーにリンクするには、すべてのマッチャーが一致する必要があります。

**シナリオの例**

アラートに次のラベルセットを定義する場合：

```
{ foo=bar, baz=qux, id=12 }
```

次に：
+ `foo=bar` として定義されたラベルマッチャーは、このアラートルールと一致します。
+ `foo!=bar` として定義されたラベルマッチャーがこのアラートルールと一致*しません*。
+ `id=~[0-9]+` として定義されたラベルマッチャーは、このアラートルールと一致します。
+ `baz!~[0-9]+` として定義されたラベルマッチャーは、このアラートルールと一致します。
+ `foo=bar`と`id=~[0-9]+`として定義された 2 つのラベルマッチャーは、このアラートルールと一致します。

# Grafana アラートのラベル
<a name="v9-alerting-explore-labels-alerting"></a>

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

このトピックでは、ラベルがアラートの基本コンポーネントである理由について説明します。
+ アラートの完全なラベルセットは、Grafana アラート内のアラートを一意に識別するものです。
+ アラートマネージャーはラベルを使用して、通知ポリシーのサイレンスとアラートグループのアラートを照合します。
+ アラート UI には、そのルールの評価中に生成されたすべてのアラートインスタンスのラベルが表示されます。
+ コンタクトポイントには、通知を生成する際にラベルにアクセスして、そのアラートに固有の情報を含めることができます。
+ [アラートルール](v9-alerting-managerules.md)にラベルを追加できます。ラベルは手動で設定でき、テンプレート関数を使用し、他のラベルを参照できます。アラートルールに追加されたラベルは、ラベル間で競合が発生した場合に優先されます (Grafana の予約済みラベルの場合を除きます。詳細については、以下を参照してください)。

**外部アラートマネージャーの互換性**

Grafana の組み込みアラートマネージャーは、Unicode ラベルキーと値の両方をサポートしています。外部 Prometheus アラートマネージャーを使用している場合、ラベルキーは[[データモデル]](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels)と互換性がある必要があります。つまり、ラベルキーには、**ASCII 文字**、**数字**および**アンダースコア**のみが含まれ、正規表現 `[a-zA-Z_][a-zA-Z0-9_]*` と一致する必要があります。無効な文字は、Grafanaアラートエンジンによって削除または置換されてから、次の規則に従って外部アラートマネージャーに送信されます。
+ `Whitespace` は削除されます。
+ `ASCII characters` は、`_`に置き換えられます。
+ `All other characters` は、小文字の 16 進数表現に置き換えられます。これが最初の文字の場合、`_` というプレフィックスがつきます。

**注記**  
複数のラベルキーが同じ値にサニタイズされている場合、重複にはサフィックスとして追加された元のラベルの短いハッシュが付加されます。

**Grafana 予約済みラベル**

**注記**  
`grafana_` のプレフィックスがついたラベルは、Grafana によって特別な用途のために予約されています。`grafana_` で始まる手動で設定されたラベルが追加されると、競合時に上書きされます。

Grafana 予約済みラベルは、手動で設定されたラベルと同じ方法で使用できます。利用可能な予約済みラベルの現在のリストは次のとおりです。


| ラベル | 説明 | 
| --- | --- | 
|  grafana\$1folder  |  アラートを含むフォルダのタイトル。  | 

# ラベルと注釈のテンプレート作成
<a name="v9-alerting-explore-labels-templating"></a>

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

Grafana では、Prometheus と同じようにラベルと注釈をテンプレート化します。Prometheus を使用した経験がある場合は、アラートのラベルと値を含む `$labels` 変数と `$value` 変数に精通していると思います。アラートが Prometheus データソースを使用していない場合でも、Grafana で同じ変数を使用できます。以前に Prometheus を使用したことがない場合は、これらの変数のそれぞれとテンプレートの作成方法をこのページで説明するのでご安心ください。

## Go のテンプレート言語
<a name="v9-alerting-explore-labels-templating-go"></a>

ラベルと注釈のテンプレートは、Go のテンプレート言語 [ text/template ](https://pkg.go.dev/text/template)で記述されます。

**開始と終了のタグ**

テキスト/テンプレートでは、テンプレートが変数を印刷するか、if ステートメントなどのコントロール構造を実行するかに関係なく、テンプレートは `{{`で始まり、`}}` で終わります。これは、変数の出力に `{{` と `}}` を使用し、制御構造に `{%` と `%}` を使用する Jinja などの他のテンプレート言語とは異なります。

**印刷**

何かの値を印刷するには、`{{` と `}}` を使用します。関数の結果または変数の値を印刷できます。例えば、`$labels` 変数を印刷するには、次のように書き込みます。

```
{{ $labels }}
```

**ラベルを反復処理する**

`$labels` 内の各ラベルを反復処理するには、`range` を使用できます。ここでは、`$k` は名前を表し、`$v` は現在のラベルの値を表します。例えば、クエリがラベル `instance=test` を返した場合、 `$k` は `instance` になり、`$v` は `test` になります。

```
{{ range $k, $v := $labels }}
{{ $k }}={{ $v }}
{{ end }}
```

## ラベル、値、値変数
<a name="v9-alerting-explore-labels-templating-variables"></a>

**ラベル変数**

`$labels` 変数には、クエリのラベルが含まれます。たとえば、インスタンスがダウンしているかどうかを確認するクエリは、停止しているインスタンスの名前を含むインスタンスラベルを返す場合があります。例えば、インスタンスの 1 つが 5 分以上ダウンしたときに発生するアラートルールがあるとします。どのインスタンスがダウンしているかを知らせる概要をアラートに追加します。`$labels` 変数を使用すると、概要にインスタンスラベルを印刷する概要を作成できます。

```
Instance {{ $labels.instance }} has been down for more than 5 minutes
```

**ドット付きのラベル**

印刷するラベルに、テンプレート内の同じドットを使用して名前にドット (ピリオド) が含まれている場合、機能しません。

```
Instance {{ $labels.instance.name }} has been down for more than 5 minutes
```

これは、テンプレートが `$labels.instance` で `name` という既存のフィールドを使用しようとしているためです。代わりに、`index` 関数を使用する必要があります。この関数は、`$labels` 変数 `instance.name` にラベルを出力します。

```
Instance {{ index $labels "instance.name" }} has been down for more than 5 minutes
```

**値変数**

`$value` 変数の動作は Prometheus とは異なります。Prometheusでは、`$value` は式の値を含む浮動小数点数ですが、Grafana では、このアラートルールのすべてのしきい値、縮小式、数式およびクラシック条件のラベルと値を含む文字列です。クエリの結果は 10 から 10,000 行またはメトリクスのどこかに返される可能性があるため、含まれていません。

アラートの概要で `$value` 変数を使用する場合:

```
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $value }})
```

概要は、次のようになります。

```
api has an over 5% of responses with 5xx errors: [ var='B' labels={service=api} value=6.789 ]
```

ここでは、`var='B'` は RefID B を持つ式を指します。Grafana では、すべてのクエリと式は、アラートルール内の各クエリと式を識別する RefID によって識別されます。同様に、`labels={service=api}` はラベルを表し、`value=6.789` は値を表します。

RefID A がないことが観察された可能性があります。これは、ほとんどのアラートルールでは RefID A がクエリを参照し、クエリが多くの行や時系列を返す可能性があるため、`$value` に含まれていないためです。

**値変数**

`$value` 変数に必要以上の情報が含まれている場合は、代わりに `$values` を使用して個々の式のラベルと値を印刷できます。`$value` とは異なり、`$values` 変数は、各式のラベルと浮動小数点値を含むオブジェクトのテーブルで、RefID によってインデックス化されます。

アラートの概要に RefID `B` を使用して式の値を印刷する場合：

```
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ $values.B }}%
```

概要には、値のみが含まれます。

```
api has an over 5% of responses with 5xx errors: 6.789%
```

ただし、`{{ $values.B }}` は数字 6.789 を出力しますが、実際には RefID B のラベルと値の両方を含むオブジェクトを出力する文字列であり、B の浮動小数点値ではありません。RefID B の浮動小数点値を使用するには、`$values.B` の `Value` フィールドを使用する必要があります。アラートの概要の浮動小数点値をヒューマナイズする場合：

```
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanize $values.B.Value }}%
```

**データなし、ランタイムエラー、タイムアウト**

アラートルールのクエリがデータなしを返す場合、またはデータソースのエラーやタイムアウトが原因で失敗した場合、そのクエリを使用するしきい値、縮小式、または数式もデータやエラーを返しません。この場合、これらの式は `$values` には存在しません。使用する前に RefID が存在することを確認することをお勧めします。RefID が存在しない場合、クエリがデータやエラーを返さない場合にテンプレートが壊れます。これは、if ステートメントを使用して行うことができます。

```
{{ if $values.B }}{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanizePercentage $values.B.Value }}{{ end }}
```

## クラシック条件
<a name="v9-alerting-explore-labels-templating-classic"></a>

ルールがしきい値、縮小式、および数式の代わりにクラシック条件を使用する場合、`$values` 変数はクラシック条件の条件の Ref ID と位置の両方によってインデックス化されます。例えば、RefID B に 2 つの条件を含むクラシック条件がある場合、`$values` には 2 つの条件 `B0` と `B1` が含まれます。

```
The first condition is {{ $values.B0 }}, and the second condition is {{ $values.B1 }}
```

## 関数
<a name="v9-alerting-explore-labels-templating-functions"></a>

ラベルと注釈を展開するときにも、次の関数を使用できます。

**args**

`args` 関数は、オブジェクトのリストをキー arg0、arg1 などのマップに変換します。これは、複数の引数をテンプレートに渡せるようにすることを目的としています。

**例**

```
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
```

```
1 2
```

**externalURL**

`externalURL` 関数は、ini ファイル (複数可) で設定された Grafana サーバーの外部 URL を返します。

**例**

```
{{ externalURL }}
```

```
https://example.com/grafana
```

**graphLink**

`graphLink` 関数は、指定された式とデータソースの [Grafana バージョン 9 で探索する](v9-explore.md) のグラフィックビューへのパスを返します。

**例**

```
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```

```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]
```

**humanize**

`humanize` 関数は 10 進数をヒューマナイズします。

**例**

```
{{ humanize 1000.0 }}
```

```
1k
```

**humanize1024**

`humanize1024` は `humanize` と似ていますが、1000 ではなく 1024 をベースとして使用します。

**例**

```
{{ humanize1024 1024.0 }}
```

```
1ki
```

**humanizeDuration**

`humanizeDuration` 関数は、期間を秒単位でヒューマナイズします。

**例**

```
{{ humanizeDuration 60.0 }}
```

```
1m 0s
```

**humanizePercentage**

`humanizePercentage` 関数は、比率値をパーセンテージにヒューマナイズします。

**例**

```
{{ humanizePercentage 0.2 }}
```

```
20%
```

**humanizeTimestamp**

`humanizeTimestamp` 関数は Unix タイムスタンプをヒューマナイズします。

**例**

```
{{ humanizeTimestamp 1577836800.0 }}
```

```
2020-01-01 00:00:00 +0000 UTC
```

**match**

`match` 関数は、テキストを正規表現パターンと一致させます。

**例**

```
{{ match "a.*" "abc" }}
```

```
true
```

**pathPrefix**

`pathPrefix` 関数は、ini ファイル (複数可) で設定された Grafana サーバーのパスを返します。

**例**

```
{{ pathPrefix }}
```

```
/grafana
```

**tableLink**

`tableLink` 関数は、指定された式とデータソースの [Grafana バージョン 9 で探索する](v9-explore.md) の表形式ビューへのパスを返します。

**例**

```
{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```

```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]
```

**title**

`title` 関数は、各単語の最初の文字を大文字にします。

**例**

```
{{ title "hello, world!" }}
```

```
Hello, World!
```

**toLower**

`toLower` 関数はすべてのテキストを小文字で返します。

**例**

```
{{ toLower "Hello, world!" }}
```

```
hello, world!
```

**toUpper**

`toUpper` 関数は、すべてのテキストを大文字で返します。

**例**

```
{{ toUpper "Hello, world!" }}
```

```
HELLO, WORLD!
```

**reReplaceAll**

`reReplaceAll` 関数は、正規表現に一致するテキストを置き換えます。

**例**

```
{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
```

```
example.com:8080
```

# アラートルールの状態と正常性
<a name="v9-alerting-explore-state"></a>

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

アラートルールの状態と正常性は、アラートに関するいくつかの主要なステータスインジケータを理解するのに役立ちます。

*アラートルールの状態 *、*アラートインスタンスの状態*、*アラートルールの正常性*の 3 つの主要なコンポーネントがあります。それぞれに関連はありますが、各コンポーネントは微妙に異なる情報を伝達します。

**アラートルールの状態**

アラートルールは、次のいずれかの状態になります。


| State | 説明 | 
| --- | --- | 
|  普通  |  評価エンジンによって返される時系列のいずれも `Pending` または `Firing` 状態ではありません。  | 
|  保留中  |  評価エンジンから返される少なくとも 1 つの時系列は `Pending` です。  | 
|  発射  |  評価エンジンから返される少なくとも 1 つの時系列は `Firing` です。  | 

**注記**  
アラートは最初に `pending` に移行し、次に `firing` に移行します。そのため、アラートが発生する前に少なくとも 2 つの評価サイクルが必要になります。

**アラートインスタンスの状態**

アラートインスタンスは、次のいずれかの状態になります。


| State | 説明 | 
| --- | --- | 
|  普通  |  発射も保留中もなく、すべてが正しく機能しているアラートの状態。  | 
|  保留中  |  設定されたしきい値期間未満でアクティブであったアラートの状態。  | 
|  [アラート]  |  設定されたしきい値期間よりも長くアクティブであったアラートの状態。  | 
|  NoData  |  設定された時間枠のデータを受信しない状態。  | 
|  エラー  |  アラートルールの評価を試みたときに発生したエラー。  | 

**アラートルールの正常性**

アラートルールは、次のいずれかの正常性ステータスとなります。


| State | 説明 | 
| --- | --- | 
|  Ok  |  アラートルールを評価するときにエラーがありません。  | 
|  エラー  |  アラートルールの評価中にエラーが発生しました。  | 
|  NoData  |  ルール評価中に返される少なくとも 1 つの時系列にデータがありません。  | 

**`NoData` および `Error` [の特別なアラート]**

アラートルールの評価で状態 `NoData` または `Error` が生成されると、Grafana アラートは、次の追加ラベルを含むアラートインスタンスを生成します。


| ラベル | 説明 | 
| --- | --- | 
|  AlertName  |  状態に応じて、`DatasourceNoData` または `DatasourceError` のいずれか。  | 
|  datasource\$1uid  |  状態の原因となったデータソースの UID。  | 

これらのアラートは、サイレンスを追加したり、コンタクトポイントにルーティングしたりすることで、通常のアラートと同じ方法で処理できます。

# コンタクトポイント
<a name="v9-alerting-explore-contacts"></a>

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

コンタクトポイントを使用して、アラートルールが発生したときにコンタクトに通知する方法を定義します。コンタクトポイントは、E メール、Slack、ウェブフックなど、1 つ以上のコンタクトポイントタイプを持つことができます。アラートルールが発動すると、コンタクトポイントにリストされているすべてのコンタクトポイントタイプに通知が送信されます。Grafana アラートマネージャーと外部アラートマネージャーのコンタクトポイントを設定できます。

通知テンプレートを使用して、コンタクトポイントタイプの通知メッセージをカスタマイズすることもできます。

**サポートされているコンタクトポイントタイプ**

次の表に、Grafana でサポートされているコンタクトポイントのタイプを示します。


| 名前 | タイプ | 
| --- | --- | 
|  Amazon SNS  |  `sns`  | 
|  OpsGenie  |  `opsgenie`  | 
|  Pager Duty  |  `pagerduty`  | 
|  Slack  |  `slack`  | 
|  VictorOps  |  `victorops`  | 

コンタクトポイントの詳細については、「[コンタクトポイント (通知先) の使用](v9-alerting-contact-points.md)」と「[通知のカスタマイズ](v9-alerting-notifications.md)」を参照してください。

# 通知
<a name="v9-alerting-explore-notifications"></a>

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

Grafana はアラートマネージャーを使用して、アラートの発射と解決の通知を送信します。Grafana には、ユーザーインターフェイスで「Grafana」と呼ばれる独自のアラートマネージャーがありますが、[Prometheus アラートマネージャー](https://prometheus.io/docs/alerting/latest/alertmanager/)などの他のアラートマネージャーからの通知の送信もサポートしています。Grafana アラートマネージャーは、通知ポリシーと問い合わせポイントを使用して、通知の送信方法と送信先、通知の送信頻度、アラートをすべて同じ通知で送信するか、ラベルのセットに基づいてグループ化された通知で送信するか、個別の通知として送信するかを設定します。

## 通知ポリシー
<a name="v9-alerting-explore-notifications-policies"></a>

通知ポリシーは、通知の送信日時と送信場所を制御します。通知ポリシーでは、すべてのアラートを同じ通知でまとめて送信するか、ラベルのセットに基づいてグループ化された通知でアラートを送信するか、個別の通知としてアラートを送信するかを選択できます。各通知ポリシーを設定して、通知の送信頻度を制御するだけでなく、1 日の特定時刻および特定の曜日に通知を禁止するための 1 つ以上のミュートタイミングを設定することもできます。

通知ポリシーは、ツリーのルートにルートポリシーと呼ばれる通知ポリシーがあるツリー構造で構成されています。ルートポリシーは 1 つだけ設定でき、削除できません。

特定のルーティングポリシーはルートポリシーの子であり、一致するラベルのセットに基づいてすべてのアラートまたはアラートのサブセットを照合するために使用できます。通知ポリシーは、一致するラベルがアラート内のラベルと一致するときにアラートと一致します。

特定のルーティングポリシーには「ネストされたポリシー」と呼ばれる独自の子ポリシーを含めることができ、アラートの追加マッチングが可能になります。特定のルーティングポリシーの例としては、Ops チームにインフラストラクチャアラートを送信する場合があります。子ポリシーは、Pagerduty に高優先度アラートを送信し、Slack に低優先度アラートを送信することができます。

ラベルに関係なく、すべてのアラートはルートポリシーと一致します。ただし、ルートポリシーがアラートを受信すると、特定の各ルーティングポリシーが調査され、アラートに一致する最初の特定のルーティングポリシーにアラートが送信されます。特定のルーティングポリシーにさらに子ポリシーがある場合、ネストされたポリシーの 1 つとアラートとのマッチングを試行できます。ネストされたポリシーがアラートと一致しない場合、特定のルーティングポリシーが一致するポリシーになります。特定のルーティングポリシーがないか、アラートに一致する特定のルーティングポリシーがない場合、ルートポリシーは一致するポリシーです。

## コンタクトポイント
<a name="v9-alerting-explore-notifications-contacts"></a>

コンタクトポイントには、通知を送信するための設定が含まれています。コンタクトポイントは統合のリストであり、それぞれが特定の E メールアドレス、サービス、または URL に通知を送信します。コンタクトポイントには、同じ種類の複数の統合、または異なる種類の統合の組み合わせを含めることができます。例えば、コンタクトポイントには、Pager Duty 統合、Pager Duty と Slack 統合、または Pager Duty 統合、Slack 統合、および 2 つの Amazon SNS 統合を含めることができます。統合なしでコンタクトポイントを設定することもできますが、その場合、通知は送信されません。

コンタクトポイントは、通知ポリシーに追加されるまで通知を送信できません。通知ポリシーは 1 つのコンタクトポイントにのみアラートを送信できますが、複数の通知ポリシーに同時にコンタクトポイントを追加できます。アラートが通知ポリシーと一致すると、アラートはその通知ポリシーのコンタクトポイントに送信され、その通知ポリシーはその設定の各統合に通知を送信します。

**注記**  
コンタクトポイントでサポートされている統合の詳細については、「[コンタクトポイント](v9-alerting-explore-contacts.md)」を参照してください。

## 通知テンプレートの作成
<a name="v9-alerting-explore-notifications-templating"></a>

テンプレートを使用して通知をカスタマイズできます。例えば、テンプレートを使用して、Slack に送信される通知のタイトルとメッセージを変更することができます。

テンプレートは個々の統合やコンタクトポイントに限定されず、同じコンタクトポイント内の多数の統合や、異なるコンタクトポイント間の統合でも使用できます。例えば、Grafana ユーザーは、`custom_subject_or_title` というテンプレートを作成し、2 つの個別のテンプレートを作成することなく、Pager Duty のテンプレート件名と Slack メッセージのタイトルの両方に使用できます。

すべての通知テンプレートはアラートページの [コンタクトポイント] タブにあり、[[Go のテンプレート言語]](https://pkg.go.dev/text/template)で記述されます。

## サイレンス
<a name="v9-alerting-explore-notifications-silences"></a>

サイレンスを使用して、1 つ以上の発射ルールからの通知をミュートできます。サイレンスは、アラートの発射や解決を停止したり、ユーザーインターフェイスで発射アラートを非表示にしたりしません。サイレンスは、分、時間、日、月、または年で設定し、その期間だけ続きます。