

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

# Grafana バージョン 9 のアラート
<a name="v9-alerts"></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 アラートからは、システムの問題が発生した直後に、サービスの中断を最小限に抑えるための強力で実用的なアラートが提供されます。

Amazon Managed Grafana には最新のアラートシステム *[Grafana アラート]*が含まれており、アラート情報を一元的に管理、検索できるビューが用意されています。以下に、その機能の一部を紹介します。
+ Grafana アラートを一元的に作成および管理できるビュー。
+ Cortex と Loki 管理のアラートを作成および管理できる単一のインターフェイス。
+ Prometheus、Amazon Managed Service for Prometheus、およびその他のアラートマネージャー互換データソースからのアラート情報の表示。

Amazon Managed Grafana ワークスペースを作成するときは、Grafana アラートを使用するか、[従来のダッシュボードアラート](old-alerts-overview.md) を使用するかを選択できます。このセクションでは、Grafana アラートについて説明します。

**注記**  
Classic アラートを有効にしてワークスペースを作成し、Grafana アラートに切り替える場合は、[2 つのアラートシステム間で切り替える](v9-alerting-use-grafana-alerts.md)ことができます。

## Grafana アラートの制約事項
<a name="v9-alert-limitations"></a>
+ Grafana アラートシステムは、利用可能なすべての Amazon Managed Service for Prometheus、Prometheus、Loki、およびアラートマネージャーデータソースからルールを取得できますが、他のサポートされているデータソースからはルールを取得できない場合があります。
+ Prometheus ではなく Grafana で定義されたアラートルールは、複数の通知をコンタクトポイントに送信します。ネイティブ Grafana アラートを使用している場合は、新しい Grafana アラート機能を有効にせず、従来のダッシュボードアラートのまま使用することをお勧めします。Prometheus データソースで定義されたアラートを表示する場合は、Grafana アラートを有効にすることをお勧めします。これにより、Prometheus アラートマネージャーで作成されたアラートの通知が 1 つだけ送信されます。
**注記**  
この制限は、Grafana v10.4 以降をサポートする Amazon Managed Grafana ワークスペースの制限ではなくなりました。

**Topics**
+ [Grafana アラートの制約事項](#v9-alert-limitations)
+ [概要:](v9-alerting-overview.md)
+ [アラートの詳細](v9-alerting-explore.md)
+ [アラートの設定](v9-alerting-setup.md)
+ [従来のダッシュボードアラートを Grafana アラートに移行する](v9-alerting-use-grafana-alerts.md)
+ [アラートルールの管理](v9-alerting-managerules.md)
+ [アラート通知の管理](v9-alerting-managenotifications.md)

# 概要:
<a name="v9-alerting-overview"></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. **データソース**

   アラートで使用するデータに接続します。このデータは、アラートの時系列データであることが多く、モニタリングおよび分析するシステムの詳細を示します。詳細については、[[データソース]](AMG-data-sources-builtin.md) を参照してください。

1. **アラートルール**

   アラートルールは、アラートインスタンスを起動するかどうかを決定する一連の評価基準であり、データソースからデータをプルするための 1 つ以上のクエリと式、アラートの必要性を表す条件、評価の頻度、およびオプションでアラートが発せられるために条件を満たす必要がある期間で構成されます。

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

1. **ラベル**

   アラートルールとそのインスタンスを通知ポリシーとサイレンスに一致させます。また、アラートを重要度別にグループ化するためにも使用できます。

1. **通知ポリシー**

   アラートが発生したときにチームに通知するために、アラートがルーティングされる場所、タイミング、および方法を設定します。各通知ポリシーは、どのアラートを担当するかを示すラベルマッチャーのセットを指定します。通知ポリシーには、1 つ以上の通知者で構成されるコンタクトポイントが割り当てられます。

1. **コンタクトポイント**

   アラート発生時の通知先への通知方法を定義します。アラートがチームに適切に通知されるように、多数の ChatOps ツールをサポートしています。

## 機能
<a name="v9-alerting-features"></a>

**すべてのアラートを単一のページに**

Grafana が管理するアラートと、Prometheus 互換データソースに存在するアラートの両方が 1 つの Grafana アラートページに統合されます。

**多次元アラート**

アラートルールは、「多次元アラート」と呼ばれるアラートルールごとに複数の個別のアラートインスタンスを作成できるため、1 つのアラートルールだけでシステム全体の可視性を得るための機能と柔軟性が得られます。

**ルーティングアラート**

定義したラベルに基づいて、各アラートインスタンスを特定のコンタクトポイントにルーティングします。通知ポリシーは、アラートがどこで、いつ、どのようにコンタクトポイントにルーティングされるかを定義するルールのセットです。

**アラートのサイレンシング**

サイレンスを使用すると、1 つ以上のアラートルールからの永続通知の受信を停止できます。また、特定の基準に基づいてアラートを部分的に一時停止することもできます。サイレンスには、整理と可視性を向上させるための独自の専用セクションがあるため、メインアラートビューを乱すことなく一時停止したアラートルールをスキャンできます。

**ミュートタイミング**

ミュートタイミングでは、通知を新たに生成または送信しない時間間隔を指定できます。また、メンテナンス期間など、繰り返し発生する期間中にアラート通知を停止することができます。

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

# アラートの設定
<a name="v9-alerting-setup"></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)」を参照してください。

アラートの作成と管理に必要な機能と統合を設定します。

**Topics**
+ [外部アラートマネージャーの追加](v9-alerting-setup-alertmanager.md)
+ [Grafana アラートリソースのプロビジョニング](v9-alerting-setup-provision.md)

# 外部アラートマネージャーの追加
<a name="v9-alerting-setup-alertmanager"></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 アラート UI を使用して、サイレンス、コンタクトポイント、通知ポリシーを管理できます。これらのページのドロップダウンオプションを使用すると、アラートマネージャーを切り替えることができます。

**注記**  
Grafana 9.2 以降、アラートページの [管理] タブからの外部アラートマネージャーの URL 設定は廃止されました。これは、今後のリリースで削除されます。

外部アラートマネージャーは、メインの Grafana ナビゲーションメニューから Grafana 設定を使用してデータソースとして設定する必要があります。これにより、Grafana 内から外部アラートマネージャーの連絡先と通知ポリシーを管理できるようになり、以前は URL で外部アラートマネージャーを構成するときに表示されていた HTTP 基本認証資格情報も暗号化されます。

外部アラートマネージャーを追加するには、次のステップに従います。

1. [設定]、[データソース] を続けてクリックします。

1. アラートマネージャーを検索します。

1. 実装を選択し、必要に応じてページのフィールドに入力します。

   データソースをプロビジョニングする場合は、`jsonData` フィールドの `handleGrafanaManagedAlerts` フラグを `true` に設定して、Grafana が管理するアラートをこのアラートマネージャーに送信します。
**注記**  
アラートマネージャーの Prometheus、Grafana Mimir、および Cortex 実装がサポートされています。Prometheus の場合、Grafana アラート UI のコンタクトポイントと通知ポリシーは読み取り専用です。

1. [保存してテスト] をクリックします。

# Grafana アラートリソースのプロビジョニング
<a name="v9-alerting-setup-provision"></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 アラートプロビジョニングを使用すると、組織に最適な方法でアラートデータを作成、管理、維持できるため、このプロセスが容易になります。

選択できるオプションは 2 つあります。

1. アラートプロビジョニング HTTP API を使用してアラートリソースをプロビジョニングします。
**注記**  
通常、Grafana UI から API でプロビジョニングされたアラートルールを編集することはできません。  
編集を有効にするには、 API でアラートルールを作成または編集するときに、x-disable-provenance ヘッダーを次のリクエストに追加します。  

   ```
   POST /api/v1/provisioning/alert-rules
   PUT /api/v1/provisioning/alert-rules/{UID}
   ```

1. Terraform を使用してアラートリソースをプロビジョニングします。

**注記**  
現在、Grafana アラートのプロビジョニングでは、アラートルール、コンタクトポイント、ミュートタイミング、テンプレートがサポートされています。ファイルプロビジョニングまたは Terraform を使用してプロビジョニングされたアラートリソースは、それらを作成したソースでのみ編集でき、Grafana やその他のソース内から編集することはできません。例えば、ディスクからのファイルを使用してアラートリソースをプロビジョニングする場合、Terraform または Grafana 内からデータを編集することはできません。

**Topics**
+ [Terraform を使用したアラートリソースの作成と管理](v9-alerting-setup-provision-terraform.md)
+ [Grafana でのプロビジョニングされたアラートリソースの表示](v9-alerting-setup-provision-view.md)

# Terraform を使用したアラートリソースの作成と管理
<a name="v9-alerting-setup-provision-terraform"></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)」を参照してください。

Terraform の Grafana プロバイダーを使用してアラートリソースを管理し、Grafana システムにプロビジョニングします。Terraform プロバイダーによる Grafana アラートのサポートにより、Grafana アラートスタック全体をコードとして簡単に作成、管理、維持できます。

Terraform を使用してアラートリソースを管理する方法の詳細については、Terraform ドキュメントの [[Grafana プロバイダー]](https://registry.terraform.io/providers/grafana/grafana/latest/docs) ドキュメントを参照してください。

Terraform を使用してアラートリソースを作成および管理するには、次のタスクを実行します。

1. プロビジョニング用の API キーを作成します。

1. Terraform プロバイダーを設定します。

1. Terraform でアラートリソースを定義します。

1. `terraform apply` を実行して、アラートリソースをプロビジョニングします。

## 前提条件
<a name="v9-alerting-setup-provision-tf-prerequisites"></a>
+ grafana/grafana [[Terraform プロバイダー]](https://registry.terraform.io/providers/grafana/grafana/1.28.0) 1.27.0 以降があることを確認します。
+ また、Grafana 9.1 以降を使用していることを確認します。Grafana バージョン 9 で Amazon Managed Grafana インスタンスを作成した場合、これは当てはまります。

## プロビジョニング用の API キーの作成
<a name="v9-alerting-setup-provision-tf-apikey"></a>

[通常の Grafana API キーを作成して](Using-Grafana-APIs.md)、Grafana で Terraform を認証できます。API キーを使用する既存のツールのほとんどは、新しい Grafana アラートサポートと自動的に連携します。Terraform で使用するキーの作成の詳細については、[[Amazon Managed Grafana オートメーションでの Terraform の使用]](https://aws-observability.github.io/observability-best-practices/recipes/recipes/amg-automation-tf/)を参照してください。

**プロビジョニング用の API キーを作成するには**

1. CI パイプラインの新しいサービスアカウントを作成します。

1. ロール「アラートルールプロビジョニング API にアクセス」を割り当てます。

1. 新しいサービスアカウントトークンを作成します。

1. Terraform で使用するトークンに名前を付けて保存します。

または、基本認証を使用することもできます。サポートされているすべての認証形式を表示するには、Terraform ドキュメントの [[Grafana 認証]](https://registry.terraform.io/providers/grafana/grafana/latest/docs#authentication) を参照してください。

## Terraform プロバイダーの設定
<a name="v9-alerting-setup-provision-tf-configure"></a>

Grafana アラートのサポートは、[[Grafana Terraform プロバイダー]](https://registry.terraform.io/providers/grafana/grafana/latest/docs) の一部として含まれています。

以下は、Terraform プロバイダーの設定に使用できる例です。

```
terraform {
    required_providers {
        grafana = {
            source = "grafana/grafana"
            version = ">= 1.28.2"
        }
    }
}

provider "grafana" {
    url = <YOUR_GRAFANA_URL>
    auth = <YOUR_GRAFANA_API_KEY>
}
```

## コンタクトポイントとテンプレートのプロビジョニング
<a name="v9-alerting-setup-provision-tf-contacts"></a>

コンタクトポイントは、アラートスタックを外部に接続します。これは、外部システムに接続する方法と通知の配信先を Grafana に伝えます。選択できる[統合](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/contact_point#optional)は 15 種類以上あります。この例では、Slack コンタクトポイントを使用します。

**コンタクトポイントとテンプレートをプロビジョニングするには**

1. このコードブロックをローカルマシンの .tf ファイルにコピーします。*<slack-webhook-url>* を Slack Webhook URL (またはその他のコンタクトポイントの詳細) に置き換えます。

   この例では、アラート通知を Slack に送信するコンタクトポイントを作成します。

   ```
   resource "grafana_contact_point" "my_slack_contact_point" {
       name = "Send to My Slack Channel"
   
       slack {
           url = <slack-webhook-url>
           text = <<EOT
   {{ len .Alerts.Firing }} alerts are firing!
   
   Alert summaries:
   {{ range .Alerts.Firing }}
   {{ template "Alert Instance Template" . }}
   {{ end }}
   EOT
       }
   }
   ```

1. 通知のテキストをテキストフィールドに入力します。

   `text` フィールドは [Go 形式のテンプレート](https://pkg.go.dev/text/template)をサポートします。これにより、Terraform で Grafana アラート通知テンプレートを直接管理できます。

1. `terraform apply` コマンドを実行します。

1. Grafana UI に移動し、コンタクトポイントの詳細を確認します。

   UI から Terraform 経由でプロビジョニングされたリソースを編集することはできません。これにより、アラートスタックは常にコードと同期したままになります。

1. **[テスト]** をクリックして、コンタクトポイントが正しく機能することを確認します。

**注記**  
多くのコンタクトポイントで同じテンプレートを再利用できます。上記の例では、`{{ template "Alert Instance Template" . }}` ステートメントを使用して共有テンプレートが埋め込まれています  
その後、このフラグメントは Terraform で個別に管理できます。  

```
resource "grafana_message_template" "my_alert_template" {
    name = "Alert Instance Template"

    template = <<EOT
{{ define "Alert Instance Template" }}
Firing: {{ .Labels.alertname }}
Silence: {{ .SilenceURL }}
{{ end }}
EOT
}
```

## 通知ポリシーとルーティングのプロビジョニング
<a name="v9-alerting-setup-provision-tf-notifications"></a>

通知ポリシーは、アラートインスタンスをどこにルーティングするかではなく、どのようにルーティングするかを Grafana に指示します。ラベルとマッチャーのシステムを使用して、発動アラートを以前に定義したコンタクトポイントに接続します。

**通知ポリシーとルーティングをプロビジョニングするには**

1. このコードブロックをローカルマシンの .tf ファイルにコピーします。

   この例では、アラートは `alertname` によってグループ化されます。つまり、同じ名前のアラートから送信される通知は、同じ Slack メッセージにグループ化されます。

   特定の通知を別の方法でルーティングする場合は、サブポリシーを追加できます。サブポリシーを使用すると、ラベルマッチングに基づいて異なるアラートにルーティングを適用できます。この例では、ラベル a=b のすべてのアラートにミュートタイミングを適用します。

   ```
   resource "grafana_notification_policy" "my_policy" {
       group_by = ["alertname"]
       contact_point = grafana_contact_point.my_slack_contact_point.name
   
       group_wait = "45s"
       group_interval = "6m"
       repeat_interval = "3h"
   
       policy {
           matcher {
               label = "a"
               match = "="
               value = "b"
           }
           group_by = ["..."]
           contact_point = grafana_contact_point.a_different_contact_point.name
           mute_timings = [grafana_mute_timing.my_mute_timing.name]
   
           policy {
               matcher {
                   label = "sublabel"
                   match = "="
                   value = "subvalue"
               }
               contact_point = grafana_contact_point.a_third_contact_point.name
               group_by = ["..."]
           }
       }
   }
   ```

1. mute\$1timings フィールドで、ミュートタイミングを通知ポリシーにリンクします。

1. `terraform apply` コマンドを実行します。

1. Grafana UI に移動し、通知ポリシーの詳細を確認します。
**注記**  
Terraform からプロビジョニングされたリソースを UI から編集することはできません。これにより、アラートスタックは常にコードと同期したままになります。

1. **[テスト]** をクリックして、通知ポイントが正しく機能していることを確認します。

## ミュートタイミングのプロビジョニング
<a name="v9-alerting-setup-provision-tf-mutetiming"></a>

ミュートタイミングを使用すると、定義された期間のアラート通知をミュートできます。

**ミュートタイミングをプロビジョニングするには**

1. このコードブロックをローカルマシンの .tf ファイルにコピーします。

   この例では、アラート通知は週末にミュートされます。

   ```
   resource "grafana_mute_timing" "my_mute_timing" {
       name = "My Mute Timing"
   
       intervals {
           times {
             start = "04:56"
             end = "14:17"
           }
           weekdays = ["saturday", "sunday", "tuesday:thursday"]
           months = ["january:march", "12"]
           years = ["2025:2027"]
       }
   }
   ```

1. `terraform apply` コマンドを実行します。

1. Grafana UI に移動し、ミュートタイミングの詳細を確認します。

1. `mute_timings` フィールドを使用して、通知ポリシーで新しく作成したミュートタイミングを参照します。これにより、通知の一部またはすべてにミュートタイミングが適用されます。
**注記**  
Terraform からプロビジョニングされたリソースを UI から編集することはできません。これにより、アラートスタックは常にコードと同期したままになります。

1. **[テスト]** をクリックして、ミュートタイミングが正しく機能していることを確認します。

## アラートルールのプロビジョニング
<a name="v9-alerting-setup-provision-tf-rules"></a>

[アラートルール](v9-alerting-managerules.md)を使用すると、あらゆる Grafana データソースに対してアラートを実行できます。これは、既に設定済みのデータソースを使用することも、アラートルールとともに [[Terraform でデータソースを定義]](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/data_source)することもできます。

**アラートルールをプロビジョニングするには**

1. クエリするデータソースと、ルールを保存するフォルダを作成します。

   この例では、[テスト用 TestData データソースの設定](testdata-data-source.md) データソースが使用されます。

   アラートは Grafana の任意のバックエンドデータソースに対して定義できます。

   ```
   resource "grafana_data_source" "testdata_datasource" {
       name = "TestData"
       type = "testdata"
   }
   
   resource "grafana_folder" "rule_folder" {
       title = "My Rule Folder"
   }
   ```

1. アラートルールを定義します。

   アラートルールの詳細については、[[Grafana マネージドアラートの作成方法]](https://grafana.com/blog/2022/08/01/grafana-alerting-video-how-to-create-alerts-in-grafana-9/) を参照してください。

1. 1 つ以上のルールを含むルールグループを作成します。

   この例では、`grafana_rule_group` リソースグループが使用されます。

   ```
   resource "grafana_rule_group" "my_rule_group" {
       name = "My Alert Rules"
       folder_uid = grafana_folder.rule_folder.uid
       interval_seconds = 60
       org_id = 1
   
       rule {
           name = "My Random Walk Alert"
           condition = "C"
           for = "0s"
   
           // Query the datasource.
           data {
               ref_id = "A"
               relative_time_range {
                   from = 600
                   to = 0
               }
               datasource_uid = grafana_data_source.testdata_datasource.uid
               // `model` is a JSON blob that sends datasource-specific data.
               // It's different for every datasource. The alert's query is defined here.
               model = jsonencode({
                   intervalMs = 1000
                   maxDataPoints = 43200
                   refId = "A"
               })
           }
   
           // The query was configured to obtain data from the last 60 seconds. Let's alert on the average value of that series using a Reduce stage.
           data {
               datasource_uid = "__expr__"
               // You can also create a rule in the UI, then GET that rule to obtain the JSON.
               // This can be helpful when using more complex reduce expressions.
               model = <<EOT
   {"conditions":[{"evaluator":{"params":[0,0],"type":"gt"},"operator":{"type":"and"},"query":{"params":["A"]},"reducer":{"params":[],"type":"last"},"type":"avg"}],"datasource":{"name":"Expression","type":"__expr__","uid":"__expr__"},"expression":"A","hide":false,"intervalMs":1000,"maxDataPoints":43200,"reducer":"last","refId":"B","type":"reduce"}
   EOT
               ref_id = "B"
               relative_time_range {
                   from = 0
                   to = 0
               }
           }
   
           // Now, let's use a math expression as our threshold.
           // We want to alert when the value of stage "B" above exceeds 70.
           data {
               datasource_uid = "__expr__"
               ref_id = "C"
               relative_time_range {
                   from = 0
                   to = 0
               }
               model = jsonencode({
                   expression = "$B > 70"
                   type = "math"
                   refId = "C"
               })
           }
       }
   }
   ```

1. Grafana UI に移動し、アラートルールを確認します。

   アラートルールが発射しているかどうかを確認できます。また、アラートルールの各クエリステージを視覚化することもできます。

   アラートが発生すると、Grafana は定義したポリシーを通じて通知をルーティングします。

   例えば、コンタクトポイントとして Slack を選択した場合、Grafana の埋め込み[アラートマネージャー](https://github.com/prometheus/alertmanager)は Slack にメッセージを自動的に投稿します。

# Grafana でのプロビジョニングされたアラートリソースの表示
<a name="v9-alerting-setup-provision-view"></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 でプロビジョニングされたリソースを表示するには**

1. Grafana インスタンスを開きます。

1. アラートに移動します。

1. アラートルールなど、アラートリソースフォルダをクリックします。

   プロビジョニング済みのリソースには **[プロビジョニング済み]** というラベルが付けられているため、手動で作成されていないことがわかります。

**注記**  
Grafana からプロビジョニングされたリソースを編集することはできません。リソースプロパティを変更するには、プロビジョニングファイルを変更して Grafana を再起動するか、ホットリロードを実行します。これにより、ファイルが再度プロビジョニングされた場合やホットリロードが実行された場合に上書きされるリソースへの変更を防止します。

# 従来のダッシュボードアラートを Grafana アラートに移行する
<a name="v9-alerting-use-grafana-alerts"></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 アラートに切り替えるには、 機能にオプトインする必要があります。

、、 AWS CLIまたは Amazon Managed Grafana API を使用して AWS マネジメントコンソール、Grafana アラートを使用するように Amazon Managed Grafana インスタンスを設定できます。Grafana アラートのオン/オフの切り替えなど、Amazon Managed Grafana の設定方法の詳細については、「[Amazon Managed Grafana ワークスペースを設定する](AMG-configure-workspace.md)」を参照してください。

**注記**  
Grafana アラートを使用する場合、Grafana で定義されたアラートルールは、Prometheusではなく、複数の通知をコンタクトポイント (通知先) に送信します。ネイティブ Grafana アラートを使用している場合は、新しい Grafana アラート機能を有効にせず、従来のダッシュボードアラートのまま使用することをお勧めします。Prometheus データソースで定義されたアラートを表示する場合は、Grafana アラートを有効にすることをお勧めします。これにより、Prometheus アラートマネージャーで作成されたアラートの通知が 1 つだけ送信されます。  
この制限は、Grafana v10.4 以降をサポートする Amazon Managed Grafana ワークスペースで削除されました。

## Grafana アラートシステムへの移行
<a name="v9-alerting-use-grafana-alerts-opt-in"></a>

Grafana アラートを有効にすると、既存の従来のダッシュボードアラートは Grafana アラートと互換性のある形式で移行されます。移行後のアラートと新しく作成したアラートは、Grafana インスタンスのアラートページに表示されます。Grafana アラートを使用した場合、Grafana が管理するアラートルールは、一致するときに 1 つのアラートではなく、複数の通知を送信します。

従来のダッシュボードアラートと Grafana アラートへの読み取りおよび書き込みアクセス権は、それらが保存されているフォルダのアクセス権限で制御されます。移行中、従来のダッシュボードアラートアクセス許可は、次のように新しいルールアクセス許可と照合されます。
+ 元のアラートが属するダッシュボードにアクセス権限が設定されている場合、移行時に元のダッシュボードの権限 (フォルダから継承された権限を含む) 設定で `Migrated {"dashboardUid": "UID", "panelId": 1, "alertId": 1}` という形式の名前のフォルダが作成されます。
+ ダッシュボードにアクセス権限が設定されておらず、ダッシュボードがフォルダ内にある場合、ルールはこのフォルダにリンクされ、そのアクセス権限が継承されます。
+ ダッシュボードにアクセス権限が設定されておらず、ダッシュボードが General (全般) フォルダにある場合、ルールは General (全般) アラートフォルダにリンクされ、ルールにはデフォルトのアクセス権限が継承されます。

**注記**  
Grafana のアラート設定には `NoData` に対する `Keep Last State` オプションがないため、このオプションは従来のルールを移行する際に `NoData` になります。`Error` 処理のためのオプション `Keep Last State` は、新しいオプション `Error` に移行されます。`Keep Last State` の動作に合わせるため、移行時には各アラートルールに対して 1 年間のサイレンスが Amazon Managed Grafana によって自動的に作成されます。

通知チャネルは、適切なルートと受信者が設定されたアラートマネージャー設定に移行されます。デフォルトの通知チャネルは、コンタクトポイントとしてデフォルトのルートに追加されますが、ダッシュボードアラートに関連付けられていない通知チャネルは `autogen-unlinked-channel-recv` ルートに送られます。

### 制限事項
<a name="v9-alerting-use-grafana-alerts-limitations"></a>
+ Grafana アラートシステムは、利用可能なすべての Prometheus、Loki、およびアラートマネージャーデータソースからルールを取得できますが、他のサポートされているデータソースからアラートルールを取得できない場合があります。
+ Grafana アラートと従来のダッシュボードアラートを交互に移行すると、どちらか一方でのみサポートされる機能のデータが失われる可能性があります。
**注記**  
従来のダッシュボードアラートに戻した場合、Grafana アラートが有効になっている間に新たに作成されたアラートルールやアラート設定に加えられたすべての変更は失われます。

# アラートルールの管理
<a name="v9-alerting-managerules"></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 つ以上のクエリと式、条件、評価の頻度、およびオプションとしてその条件の持続時間で構成されます。

評価するデータセットを「クエリと式」で選択し、「条件」にアラートがアラートを発行するための基準 (しきい値) を設定します。間隔は、アラートルールが評価される頻度を指定します。「持続時間」を設定した場合、その条件下にある状態の継続時間を示します。また、アラートルールでは、データがない場合のアラート動作も設定できます。

**注記**  
Grafana マネージドアラートルールは、ルールを保存するフォルダの編集権限を持つユーザーのみが編集または削除できます。  
外部 Grafana Mimir または Loki インスタンスのアラートルールは、エディタまたは管理者ロールを持つユーザーが編集または削除できます。

**Topics**
+ [Grafana 管理のアラートルールの作成](v9-alerting-managerules-grafana.md)
+ [Grafana Mimir または Loki 管理のアラートルールの作成](v9-alerting-managerules-mimir-loki.md)
+ [Grafana Mimir または Loki 管理の記録ルールの作成](v9-alerting-managerules-mimir-loki-recording.md)
+ [Grafana Mimir または Loki ルールグループと名前空間](v9-alerting-managerules-mimir-loki-groups.md)
+ [アラートルールの表示と編集](v9-alerting-managerules-view-edit.md)

# Grafana 管理のアラートルールの作成
<a name="v9-alerting-managerules-grafana"></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 つ以上のデータソースをクエリして結果を集約または変換して、それらを相互に比較したり、固定のしきい値と比較したりするアラートルールを作成することができます。これらを実行すると、Grafana はコンタクトポイント (通知先) に通知を送信します。

**Grafana 管理のルールの追加方法**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開いて既存のアラートを一覧表示します。

1. **[新しいアラートルール]** を選択します。

1. **ステップ 1** で、以下を参照してルール名、タイプ、ストレージの場所を追加します。
   + **[ルール名]** にわかりやすい名前を追加します。この名前はアラートルールリストに表示されます。またこの名前は、このルールから作成されるすべてのアラートインスタンスの `alertname` ラベルにもなります。
   + **[ルールタイプ]** ドロップダウンから、**[Grafana 管理のアラート]** を選択します。
   + **[フォルダ]** ドロップダウンから、ルールの保存先となるフォルダを選択します。フォルダを選択しない場合、ルールは `General` フォルダに保存されます。フォルダを作成する場合、ドロップダウンを選択し、新しいフォルダ名を入力します。

1. **ステップ 2** で、評価するクエリと式を追加します。
   + 名前はデフォルトのままでも構いませんが、変更する場合、カーソルを合わせて編集アイコンを選択します。
   + クエリの場合、ドロップダウンからデータソースを選択します。
   + 1 つ以上の[クエリまたは式](v9-panels-query-xform-expressions.md)を追加します。
   + 式ごとに **[クラシック条件]**を選択して単一のアラートルールを作成するか、**[Math]**、**[削減]**、**[リサンプリング]** オプションから選択して、各シリーズに個別のアラートを作成します。これらのオプションの詳細については、「[1 次元ルールと多次元ルール](#v9-alerting-single-multi-rule)」を参照してください。
   + **[Run queries]** (クエリの実行) を選択して、クエリが正しく動作すことを確認します。

1. **ステップ 3** で、条件を追加します。
   + **[条件]** ドロップダウンから、アラートルールを発動させるクエリまたは式を選択します。
   + **Evaluate every** (～ごとに評価する) には、評価の頻度を指定します。10 秒の倍数である必要があります。例えば、`1m` や `30s` などです。
   + **[評価対象]** には、アラートが発行されるために必要な条件の継続時間を指定します。
**注記**  
条件が違反すると、アラートは `Pending` 状態に入り、そのまま指定された期間条件の違反が継続するとアラートは `Firing` 状態に移行します。条件から外れた場合、`Normal` 状態に戻ります。
   + **[Configure no data and error handling]** (データがない場合の設定とエラー処理) で、データがない場合のアラート動作を設定します。「[データがない場合やエラーが発生した場合の対処](#v9-alerting-rule-no-data-error)」のガイドラインを参照してください。
   + **[アラートのプレビュー]** を選択してルールを評価し、生成されるアラートを確認します。プレビューでは、データとエラー処理条件は除外されます。

1. **ステップ 4** で、ルールに関連するメタデータを追加します。
   + アラートメッセージのカスタマイズ時に使用する説明と概要を追加します。ガイドライン「[ラベルと注釈](v9-alerting-explore-labels.md)」を参照してください。
   + Runbook URL、パネル、ダッシュボード、アラート ID を追加します。
   + カスタムラベルを追加します。

1. **[保存]** を選択してルールを保存するか、**[保存して終了]** を選択してルールを保存し、**[アラート]** ページに戻ります。

ルールを作成したら、ルールの通知を作成できます。通知の詳細については、「[アラート通知の管理](v9-alerting-managenotifications.md)」を参照してください。

## 1 次元ルールと多次元ルール
<a name="v9-alerting-single-multi-rule"></a>

Grafana 管理のアラートルールでは、従来の条件を使用してルールを作成することも、多次元ルールを作成することもできます。

**1 次元ルール (従来の条件)**

従来の条件式を使用して、条件が満たされたときに単一のアラートを発行するルールを作成します。複数のシリーズを返すクエリの場合、Grafana は各シリーズのアラート状態を追跡しません。そのため、複数のシリーズでアラート条件が満たされた場合でも、Grafana が送信するアラートは 1 件のみです。

式のフォーマット方法の詳細については、*Grafana ドキュメント*の「[式](https://grafana.com/docs/grafana/next/panels/query-a-data-source/)」を参照してください。

**多次元ルール**

クエリで返されるシリーズごとに個別のアラートインスタンスを生成するには、多次元ルールを作成します。

**注記**  
多次元ルールによって生成された各アラートインスタンスは、アラートの合計クォータにカウントされます。クォータに達すると、ルールは評価されなくなります。多次元ルールのクォータの詳細については、「[クォータ到達エラー](#v9-alerting-rule-quota-reached)」を参照してください。

1 つのルールから複数のインスタンスを作成するには、`Math`、`Reduce`、または `Resample` 式を使用して多次元ルールを作成します。例えば、以下のことが可能です:
+ 各クエリに `Reduce` 式を追加すると、選択した時間範囲の値が 1 つの値に集計されます。([数値データ を使用するルール](v9-alerting-explore-numeric.md)には必要ありません)。
+ ルールの条件を含む `Math` 式を追加します。もしクエリや reduce 式がすでにアラートを発行すべき場合は正の数、発行しない場合に 0 を返す場合、これは必要ありません。

  例: 
  + `$B > 70` は、B クエリ/式の値が 70 を超える場合にアラートを発行します。
  + `$B < $C * 100` は、B の値が C の値に 100 を掛けた値より小さい場合にアラートを発行します。比較対象のクエリの結果に複数のシリーズがある場合、異なるクエリのシリーズが同じラベルを持っているか、一方が他方のサブセットである場合に一致します。

**注記**  
Grafana は、テンプレート変数を使用したアラートクエリはサポートしていません。詳細については、コミュニティページ「[アラートクエリではアラート設定時にテンプレート変数を使用できません](https://community.grafana.com/t/template-variables-are-not-supported-in-alert-queries-while-setting-up-alert/2514)」を参照してください。



**多次元ルールのパフォーマンスに関する考慮事項**

各アラートインスタンスは、アラートのクォータ (上限数) にカウントされます。アラートの上限数を超えるインスタンスを作成する多次元ルールは評価されず、クォータエラーが返されます。詳細については、「[クォータ到達エラー](#v9-alerting-rule-quota-reached)」を参照してください。

多次元アラートは、Grafana ワークスペースや、Grafana がアラートルールを評価するためにクエリを実行するデータソースのパフォーマンスに大きな影響を与える可能性があります。監視システムのパフォーマンスを最適化したい場合、以下の考慮事項を参照してください。
+ **ルール評価の頻度** – アラートルールの **[Evaluate Every]** (～ごとに評価する) プロパティでルール評価の頻度を制御します。評価の頻度を許容可能な最小頻度に収めることをお勧めします。
+ **結果セットのカーディナリティ** – ルールで作成されるアラートインスタンスの数は直接そのパフォーマンスに影響します。例えば、すべての仮想マシン上の各 API パスごとに API 応答エラーを監視しているとします。このセットのカーディナリティは「パスの数 × 仮想マシンの数」になります。例えば、仮想マシンあたりのパスごとではなく、仮想マシンあたりの合計エラー数を監視することで、結果セットのカーディナリティを減らすことができます。
+ **クエリの複雑さ** – データソースが迅速に処理して応答できるクエリにするだけで、リソースの消費を大幅に抑えることができます。これは他の考慮事項よりは重要度が低いものの、他の点での最適化が十分に行われている場合、個別のクエリパフォーマンスの見直しが役立つ可能性があります。また、これらのルールの評価がデータソースに与える影響にも注意する必要があります。アラートクエリは、監視データベースで処理されるクエリの大部分を占めることが多いため、Grafana インスタンスにかかる負荷要因がデータソースにも同様に影響を与えます。

## クォータ到達エラー
<a name="v9-alerting-rule-quota-reached"></a>

1 つのワークスペース内に保持できるアラートインスタンスの数にはクォータ (上限) があります。この上限に達した場合、そのワークスペースにこれ以上新たにアラートルールを作成できなくなります。多次元アラートでは、アラートインスタンスの数は時間の経過とともに変動する場合があります。

以下に、アラートインスタンスを使用する際に覚えておくべき重要な点について紹介します。
+ 作成するのが 1 次元ルールのみの場合、ルールからはそれぞれ 1 つのアラートインスタンスが作成されます。1 つのワークスペースに作成できるルールの上限は、アラートインスタンスのクォータ数までとなります。
+ 多次元ルールからは複数のアラートインスタンスが作成されますが、その数は評価されるまでわかりません。例えば、Amazon EC2 インスタンスの CPU 使用率を追跡するアラートルールを作成した場合、最初は 50 台の EC2 インスタンスが対象となり、50 個のアラートインスタンスが作成されますが、1 週間後にさらに 10 台の EC2 インスタンスが追加された場合、次の評価時には 60 個のアラートインスタンスが存在することになります。

  アラートインスタンスの数は、多次元アラートを作成するときに評価され、アラートインスタンスのクォータをすぐに超えるインスタンスを作成することはできません。アラートインスタンスの数は変動する可能性があるため、ルール評価の都度クォータがチェックされます。
+ 評価時に、ルールがアラートインスタンスのクォータを超える場合、アラートルールが更新されアラートインスタンスの合計数がサービスクォータを下回るまで、そのルールは評価されません。この場合、クォータに達したことを通知するアラート通知を受け取ります (通知は評価対象のルールの通知ポリシーを基に送信されます)。通知には、`QuotaReachedError` 値を含む `Error` 注釈が含まれています。
+ `QuotaReachedError` を引き起こすルールは、評価されなくなります。評価は、更新が行われ、更新後の評価が `QuotaReachedError` を引き起こさなくなった場合にのみ再開されます。評価されていないルールは、Grafana コンソールに**クォータ到達**エラーが表示されます。
+ アラートインスタンスの数を減らすには、アラートルールを削除するか、複数次元のアラートを編集してアラートインスタンスを減らします (例えば、仮想マシン内の API ごとに 1 個のアラートではなく、仮想マシンごとの 1 件のエラーに対して 1 個のアラートを持つようにします)。
+ 評価を再開するには、アラートを更新して保存します。アラートインスタンスの数を減らすように更新することもできますし、インスタンス数を減らすために他の変更を加えた場合、変更なしで保存しても構いません。再開可能な場合、評価が再開されます。さらに別の `QuotaReachedError` を引き起こす結果となった場合、保存することはできません。
+ アラートが保存され、アラートクォータを超えることなく評価が再開された場合、Grafana コンソールにはしばらくの間**クォータ到達**エラーが (次の評価間隔まで) 表示され続けることがありますが、アラートルール評価が開始され、ルールのしきい値に達するとアラートが送信されます。
+ アラートのクォータおよびその他のクォータの詳細については、「[Amazon Managed Grafana のサービスクォータ](AMG_quotas.md)」を参照してください。

## データがない場合やエラーが発生した場合の対処
<a name="v9-alerting-rule-no-data-error"></a>

データがない場合やエラーが発生した場合のアラート動作の処理方法を選択します。

データがない場合に選択できる処理方法を、以下の表に照会します。


| データがない場合の選択肢 | 行動 | 
| --- | --- | 
|  データなし  |  アラートルールの名前と UID、およびラベルとしてデータを返さないデータソースの UID を使用したアラート `DatasourceNoData` を作成します。  | 
|  [アラート]  |  アラートルールの状態を `Alerting` に設定します。  | 
|  OK  |  アラートルールの状態を `Normal` に設定します。  | 

エラーが発生した場合に選択できる処理方法を、以下の表に照会します。


| エラーまたはタイムアウト時の選択肢 | 行動 | 
| --- | --- | 
|  [アラート]  |  アラートルールの状態を `Alerting` に設定します  | 
|  OK  |  アラートルールの状態を `Normal` に設定します  | 
|  エラー  |  アラートルールの名前と UID、およびラベルとしてデータを返さないデータソースの UID を使用したアラート `DatasourceError` を作成します。  | 

# Grafana Mimir または Loki 管理のアラートルールの作成
<a name="v9-alerting-managerules-mimir-loki"></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 Mimir または Loki インスタンスのアラートルールを作成することができます。

**注記**  
Grafana Mimir は、Amazon Managed Service for Prometheus および Prometheus データソースに接続できます。

**前提条件**
+ Prometheus データソースへの書き込みアクセス権限があることを確認します。アクセス権限がない場合、Cortex 管理のアラートルールを作成または更新することはできません。
+ Grafana Mimir および Loki データソースの場合、それぞれのサービスを設定して Ruler API を有効にします。
  + **Loki** - Loki データソースのデフォルトである `local` ルールストレージタイプは、ルールの表示のみをサポートしています。ルールを編集する場合、他のストレージタイプを設定してください。
  + **Grafana Mimir** – `/prometheus` ではなく、レガシー `/api/prom` プレフィックスを使用します。Prometheus データソースは Grafana Mimir と Prometheus の両方に対応しており、Grafana はクエリ API と Ruler API の両方が同じ URL にあることを想定しています。Ruler API に別の URL を指定することはできません。

**注記**  
特定の Loki または Prometheus データソースのアラートルールを管理しない場合は、その設定に移動し、**[アラート UI 経由でアラートを管理する]** チェックボックスをオフにします。

**Grafana Mimir または Loki 管理のアラートルールを追加するには**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開いて既存のアラートを一覧表示します。

1. **[アラートルールの作成]** を選択します。

1. **ステップ 1** で、次のようにルールタイプと詳細を選択します。
   + **Mimir または Loki アラート**を選択します。
   + **[ルール名]** にわかりやすい名前を追加します。この名前はアラートルールリストに表示されます。またこの名前は、このルールから作成されるすべてのアラートインスタンスの `alertname` ラベルにもなります。
   + **[データソース]の選択**ドロップダウンから、Prometheus または Loki データソースを選択します。
   + **[名前空間]** ドロップダウンから、既存のルール名前空間を選択します。それ以外の場合は、**[新規追加]** を選択し、名前を入力します。名前空間には 1 つ以上のルールグループを含めることができます。これは、組織的な目的を持たせるためのみに使用します。詳細については、「[Cortex または Loki ルールグループと名前空間](alert-rules.md#alert-rule-groups)」を参照してください。
   + **[グループ]** ドロップダウンから、選択した名前空間内の既存のグループを選択します。それ以外の場合は、**[新規追加]** を選択し、名前を入力します。新しく作成されたルールは、グループの末尾に追加されます。グループ内のルールは、同じ評価時間で一定の間隔で順番に実行されます。

1. **ステップ 2** で、評価するクエリを追加します。

   値は PromQL または LogQL 式で指定することができます。評価結果に 0 より大きい値を持つシリーズが 1 つ以上ある場合、ルールはアラートを発行します。アラートはシリーズごとに作成されます。

1. **ステップ 3** で、アラート評価間隔を指定します。

   条件の **[For]** テキストボックスに、アラートが発行されるために必要な条件の継続時間を指定します。例えば `5m` を指定した場合、条件が 5 分間継続した場合にアラートが発行されます。
**注記**  
条件が満たされると、アラートは `Pending` 状態に入り、そのまま指定された期間条件が継続するとアラートは `Firing` 状態に移行します。条件から外れた場合、`Normal` 状態に戻ります。

1. **ステップ 4** で、ルールに関連するメタデータを追加します。
   + アラートメッセージのカスタマイズ時に使用する説明と概要を追加します。ガイドライン「[ラベルと注釈](v9-alerting-explore-labels.md)」を参照してください。
   + Runbook URL、パネル、ダッシュボード、アラート ID を追加します。
   + カスタムラベルを追加します。

1. **[アラートのプレビュー]** を選択してルールを評価し、生成されるアラートを確認します。各アラートの状態と値を含むアラートのリストが表示されます。

1. **[保存]** を選択してルールを保存するか、**[保存して終了]** を選択してルールを保存し、**[アラート]** ページに戻ります。

ルールを作成したら、ルールの通知を作成できます。通知の詳細については、「[アラート通知の管理](v9-alerting-managenotifications.md)」を参照してください。

# Grafana Mimir または Loki 管理の記録ルールの作成
<a name="v9-alerting-managerules-mimir-loki-recording"></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 インスタンスの記録ルールを作成および管理することができます。記録ルールは、頻繁に必要になる式や計算負荷の高い式を事前に計算し、その結果を新しい時系列セットとして保存します。この新しい時系列のクエリは、特にダッシュボードでは、ダッシュボードが更新されるたびに同じ式をクエリするため、より高速になります。

**前提条件**

Grafana Mimir および Loki データソースの場合、それぞれのサービスを設定して Ruler API を有効にします。
+ **Loki** - Loki データソースのデフォルトである `local` ルールストレージタイプは、ルールの表示のみをサポートしています。ルールを編集する場合、他のストレージタイプを設定してください。
+ **Grafana Mimir** – Grafana Mimir を指定するようにデータソースを設定するときは、`/prometheus` ではなくレガシー `/api/prom` プレフィックスを使用します。Prometheus データソースは Grafana Mimir と Prometheus の両方に対応しており、Grafana はクエリ API と Ruler API の両方が同じ URL にあることを想定しています。Ruler API に別の URL を指定することはできません。

**注記**  
特定の Loki または Prometheus データソースのアラートルールを管理しない場合は、その設定に移動し、**[アラート UI 経由でアラートを管理する]** チェックボックスをオフにします。

**Grafana Mimir または Loki 管理の記録ルールを追加するには**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開いて既存のアラートを一覧表示します。

1. **[アラートルールの作成]** を選択します。

1. **ステップ 1** で、以下を参照してタイプ、ルール名、ストレージの場所を追加します。
   + **Mimir または Loki の記録ルール**オプションを選択します。
   + **[ルール名]** にわかりやすい名前を追加します。この名前はアラートルールリストに表示されます。またこの名前は、このルールから作成されるすべてのアラートインスタンスの `alertname` ラベルにもなります。
   + **[データソース]の選択**ドロップダウンから、Prometheus または Loki データソースを選択します。
   + **[名前空間]** ドロップダウンから、既存のルール名前空間を選択します。それ以外の場合は、**[新規追加]** を選択し、名前を入力します。名前空間には 1 つ以上のルールグループを含めることができます。これは、組織的な目的を持たせるためのみに使用します。詳細については、「[Cortex または Loki ルールグループと名前空間](alert-rules.md#alert-rule-groups)」を参照してください。
   + **[グループ]** ドロップダウンから、選択した名前空間内の既存のグループを選択します。それ以外の場合は、**[新規追加]** を選択し、名前を入力します。新しく作成されたルールは、グループの末尾に追加されます。グループ内のルールは、同じ評価時間で一定の間隔で順番に実行されます。

1. **ステップ 2** で、評価するクエリを追加します。

   値は PromQL または LogQL 式で指定することができます。評価結果に 0 より大きい値を持つシリーズが 1 つ以上ある場合、ルールはアラートを発行します。アラートはシリーズごとに作成されます。

1. **ステップ 3** で、ルールに関連するメタデータを追加します。
   + アラートメッセージのカスタマイズ時に使用する説明と概要を追加します。ガイドライン「[アラートルールの注釈とラベル](alert-rules.md#alert-rule-labels)」を参照してください。
   + Runbook URL、パネル、ダッシュボード、アラート ID を追加します。
   + カスタムラベルを追加します。

1. **[保存]** を選択してルールを保存するか、**[保存して終了]** を選択してルールを保存し、**[アラート]** ページに戻ります。

# Grafana Mimir または Loki ルールグループと名前空間
<a name="v9-alerting-managerules-mimir-loki-groups"></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 分です。また、Grafana Mimir または Loki の名前空間とルールグループの名前を変更したり、ルールグループの評価間隔を編集することができます。

**ルールグループまたは名前空間の編集方法**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開きます。

1. 編集するルールグループまたは名前空間内のルールに移動します。

1. **[編集]** (ペン) アイコンを選択します。

1. ルールグループまたは名前空間に変更を加えます。
**注記**  
名前空間では、名前のみを編集できます。ルールグループの場合、名前、またはグループ内のルールの評価間隔を変更します。たとえば、ルールを 1 分ごとに評価する場合は `1m` を選択し、30 秒ごとに評価する場合は `30s` を選択します。

1. **[変更の保存]** をクリックします。

# アラートルールの表示と編集
<a name="v9-alerting-managerules-view-edit"></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 によって管理されるルールが一覧表示され、**Cortex/Loki** セクションには Prometheus 互換データソースのルールが一覧表示されます。Prometheus 互換データソースのアラートルールは表示できますが、編集することはできません。

Mimir/Cortex/Loki ルールセクションには、Mimir、Cortex、または Loki データソースのすべてのルールが一覧表示されます。クラウドアラートルールもこのセクションに表示されます。

大量のアラートを管理する場合、拡張アラートルール検索機能を使用して、フォルダ、評価グループ、ルールをフィルタリングできます。さらに、ラベル、状態、タイプ、正常性などのプロパティでアラートルールをフィルタリングできます。

**注記**  
プロビジョニングされたアラートのクエリ定義は表示することはできますが、編集はできません。これらを表示できるため、ルール定義のプロビジョニングリポジトリに戻ることなく、クエリとルール定義が正しいことを確認できます。

## アラートルールの表示
<a name="v9-alerting-managerules-view"></a>

Grafana アラートを使用すると、すべてのアラートを 1 ページに表示できます。

**アラートの詳細を表示するには**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開きます。デフォルトでは、ルールはデータソースの種類ごとにグループ化して表示されます。各アラートの現在の状態別に表示することもできます (詳細については後述します)。

1. **[表示形式]** では、グループビューと状態ビューを切り替えることができます。

1. 行の横にある矢印を選択すると、その行の詳細が表示されます。ルールの詳細には、ルールのラベル、注釈、データソース、クエリ、およびルールから生成されたアラートインスタンスのリストが含まれます。

**注記**  
アラートの詳細については、「[アラートルールの状態と正常性](v9-alerting-explore-state.md)」を参照してください。

**グループビュー**

グループビューには、フォルダ別にグループ化された Grafana アラートルールと、`namespace` \$1 `group` 別にグループ化された Loki または Prometheus アラートルールが表示されます。これは、ルールの管理を目的としたデフォルトのルールリストビューです。各グループを展開すると、そのグループ内のルールのリストが表示されます。さらにルールを展開すると、その詳細を見ることができます。また、ルールから生成されたアクションボタンとアラートを展開して、詳細を表示することもできます。

**状態ビュー**

状態ビューには、アラートルールが状態ごとグループ化されて表示されます。このビューを使用すると、各ルールがどの状態にあるかを一目で確認できます。各ルールは展開して詳細を表示することがでます。アクションボタンとこのルールによって生成されたアラート、および各アラートをさらに展開して詳細を表示することができます。

**アラートルールのフィルター**

**[アラート]** ページに表示されるアラートルールは、いくつかの方法でフィルタリングできます。
+ 特定のデータソースを使用するルールだけを表示するには **[データソースの選択]** でフィルタリングするデータソースを選択します。
+ また、**[ラベルで検索]** から検索条件を選択して、ラベルでフィルタリングすることもできます。例えば、`environment=production,region=~US|EU,severity!=warning` と入力して、米国と欧州の本番稼働警告をフィルタリングできます。
+ 特定の状態のルールだけを表示するには **[状態でアラートをフィルタリング]** で表示する状態を選択します。

## アラートルールの編集または削除
<a name="v9-alerting-managerules-edit"></a>

Grafana管理のアラートルールの編集または削除は、ルールが保存されているフォルダに対する編集権限を持つユーザーのみが行うことができます。外部 Mimir または Loki インスタンスのアラートルールの編集または削除は、エディタまたは管理者ロールを持つユーザーが行うことができます。

**ルールを編集または削除するには**

1. **表示**、**編集**、**削除**のルールコントロールが表示されるまでルールを展開します。

1. **[編集]** を選択してルールの作成ページを開きます。更新方法はルール作成方法と同じです。詳細については、「[Grafana 管理のアラートルールの作成](v9-alerting-managerules-grafana.md)」または「[Grafana Mimir または Loki 管理のアラートルールの作成](v9-alerting-managerules-mimir-loki.md)」の手順を参照してください。

1. 削除する場合は **[削除]** を選択してルールを削除します。

## アラートルールのエクスポート
<a name="v9-alerting-managerules-export"></a>

Export を選択すると、Grafana ワークスペースの YAML または JSON にルールを**[エクスポート]**できます。これにより、新しいルールを定義してからエクスポートするオプションが提供されます。UI を使用してルールを作成し、プロビジョニング API または terraform スクリプトで使用するためにエクスポートできます。

**注記**  
これは、Grafana ワークスペースとプロビジョニングインターフェイスの両方でサポートされています。

# アラート通知の管理
<a name="v9-alerting-managenotifications"></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-managenotifications-alertmanager.md)
+ [コンタクトポイント (通知先) の使用](v9-alerting-contact-points.md)
+ [通知ポリシーの使用](v9-alerting-notification-policies.md)
+ [通知のカスタマイズ](v9-alerting-notifications.md)
+ [Prometheus データソースのアラート通知のサイレンス化](v9-alerting-silences.md)
+ [ミュートタイミング](v9-alerting-notification-muting.md)
+ [アラートグループ別に表示およびフィルタリングする](v9-alerting-viewfiltergroups.md)
+ [通知エラーの表示](v9-alerting-viewnotificationerrors.md)

# アラートマネージャー
<a name="v9-alerting-managenotifications-alertmanager"></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 など選択したチャネルを介して通知を送信することで、アラートを受信し、ミュート、抑制、グループ化、ルーティングを処理します。

Grafana では、Grafana アラートマネージャー、または外部アラートマネージャーを使用できます。複数のアラートマネージャーを実行することもできます。決定は、セットアップとアラートの生成場所によって異なります。

**Grafana アラートマネージャー**

Grafana アラートマネージャーは、事前設定済みで、Grafana をオンプレミスまたはオープンソースで実行している場合にデフォルトで選択できる内部アラートマネージャーです。

Grafana アラートマネージャーは Grafana からアラートを受信できますが、Mimir や Loki など、Grafana の外部からアラートを受信することはできません。

**注記**  
禁止ルールは Grafana アラートマネージャーではサポートされていません。

**外部アラートマネージャー**

Grafana、Loki、Mimir、Prometheus のすべてのアラートを受信するために 1 つのアラートマネージャーを使用したい場合は、外部のアラートマネージャーを使用するように Grafana を設定できます。この外部アラートマネージャーは、Grafana 内から設定および管理できます。

Grafana アラートマネージャーの代わりに、独自の外部アラートマネージャーを設定し、そこでアラートを送信する場合の例を 2 つ示します。

1. Prometheus などの他のアラートジェネレーターがあるため、独自のクラウドインフラストラクチャに既にオンプレミスのアラートマネージャーを設定しており、引き続き使用したい場合。

1. Prometheus オンプレミスとホストされた Grafana の両方を使用して、クラウドインフラストラクチャで実行されるのと同じアラートマネージャーにアラートを送信したい場合。

アラートマネージャーは、[コンタクトポイントのアラート] および [通知ポリシー] ページのドロップダウンメニューに表示されます。

データソースをプロビジョニングする場合は、`jsonData` フィールドの `handleGrafanaManagedAlerts` フラグを `true` に設定して、Grafana が管理するアラートをこのアラートマネージャーに送信します。

# コンタクトポイント (通知先) の使用
<a name="v9-alerting-contact-points"></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)」を参照してください。

連絡窓口は、アラート発生時の通知の受け取り方の設定に使用します。コンタクトポイントには、Amazon Simple Notification Service や Slack など、1 つ以上のコンタクトポイント統合を指定できます。アラートが発生すると、コンタクトポイントにリストされているすべてのコンタクトポイント統合に通知が送信されます。必要に応じて、[通知テンプレート](v9-alerting-create-templates.md)を使用して、コンタクトポイントタイプの通知メッセージをカスタマイズできます。

**注記**  
Grafana で管理されるアラートの通知先 (コンタクトポイント) は、作成および編集が可能です。アラートマネージャーアラートの通知先 (コンタクトポイント) は読み取り専用です。

## コンタクトポイント (通知先) の使用
<a name="v9-alerting-working-contact-points"></a>

次の手順では、通知先 (コンタクトポイント) を追加、編集、テスト、削除する方法について説明します。

**コンタクトポイントの追加方法**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開きます。

1. **[コンタクトポイント]** を選択し、**[コンタクトポイントを追加]** を選択します。

1. **[アラートマネージャー]** ドロップダウンから、アラートマネージャーを選択します。デフォルトでは、Grafana アラートマネージャーが選択されています。

1. コンタクトポイントの** [名前]** を入力します。

1. **[コンタクトポイント統合]** から、タイプを選択し、そのタイプに基づいて必須フィールドを選択します。例えば、Slack を選択した場合は、Slack チャネルと通知先となるユーザーを入力します。

1. 選択したコンタクトポイントで利用可能な場合は、任意の**オプション設定**を選択して追加の設定を指定します。

1. **[通知設定]**で**[解決済みメッセージの無効化]**を選択すると、アラートが解決した際に通知を受け取らないようにすることができます (任意)。

1. コンタクトポイントにコンタクトポイントタイプを追加したい場合は、**[新しいコンタクトポイントタイプ]** を選択し、必要なコンタクトポイントタイプごとに手順を繰り返します。

1. **[コンタクトポイントの保存]** を選択して変更を保存します。

**コンタクトポイントの編集方法**

1. **[コンタクトポイント]**を選択すると、現在設定されているコンタクトポイントのリストが表示されます。

1. 編集する連絡先を選択し、**[編集]** アイコン (ペン) を選択します。

1. 必要な変更を加え、**[コンタクトポイントの保存]** を選択して変更を保存します。

コンタクトポイントを作成したら、テスト通知を送信して、正しく設定されていることを確認します。

**テスト通知の送信方法**

1. **[コンタクトポイント]** を選択して、現在設定されているコンタクトポイントのリストを開きます。

1. テストする連絡先を選択し、**[編集]** アイコン (ペン) を選択します。

1. **[テスト]** アイコン (紙飛行機) を選択します。

1. 事前定義されたテスト通知を送信するか、**[カスタム]** を選択してテスト通知に独自の注釈とラベルを追加するかを選択します。

1. **[テスト通知を送信]**を選択して、指定されたコンタクトポイント宛にアラートをテストします。

使用されていないコンタクトポイントは、通知ポリシーで削除できます。

**連絡先の削除方法**

1. **[コンタクトポイント]** を選択して、現在設定されているコンタクトポイントのリストを開きます。

1. 削除する連絡先を選択し、**[削除]** アイコン (ゴミ箱) を選択します。

1. 確認ダイアログボックスで、**[はい、削除]** を選択します。

**注記**  
コンタクトポイントが通知ポリシーで使用されている場合、コンタクトポイントを削除する前に、通知ポリシーを削除するか、別のコンタクトポイントを使用するように編集する必要があります。

## サポートされている通知方法の一覧
<a name="v9-alerting-contactpoint-supported-notifiers"></a>


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

# 通知ポリシーの使用
<a name="v9-alerting-notification-policies"></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 つ以上の子ポリシーを持つことができます。ルートポリシーを除く各ポリシーは、特定のアラートラベルにも一致させることができます。各アラートはルートポリシーによって評価され、次に各子ポリシーによって評価されます。特定のポリシーに対して `Continue matching subsequent sibling nodes` オプションを有効にすると、1 つ以上の一致があっても評価が続行されます。子ポリシーのいずれとも一致しない場合、親ポリシーの設定とコンタクトポイント (通知先) の情報によってアラートの動作が制御されます。特定のポリシーと一致しない場合、ルートポリシーがアラートを制御します。

**注記**  
Grafana 管理のアラートの通知ポリシーを作成および編集することができますが、アラートマネージャーアラートの通知ポリシーは読み取り専用となっています。

**通知のグループ化**

グループ化すると、似た性質のアラート通知を 1 つの funnel にまとめられます。これは、システム上で一度に複数の障害が発生して多数のアラートが同時に発生する場合、大規模な停止中にアラート通知を制御することができます。

**グループ化の例**

例えば、異なる環境でデータベースに接続されている100のサービスがあるとします。これらのサービスは、ラベル `env=environmentname` で区別され、サービスがデータベースに到達できるかどうかを監視するためのアラートルールが設定されています。このアラートルールは、`alertname=DatabaseUnreachable` という名前のアラートを作成します。

サービスの半分がデータベースに到達できなくなったネットワークの分断が発生すると、50 件のアラートが個別に発生しますが、影響を受けている環境のリストを含む (50 件ではなく) 1 ページの通知を受け取りたいと考えています。

`group_by: [alertname]`でグループ化を設定することができます(サービスごとに異なる `env` ラベルを使用する代わりに)。この設定を行うと、Grafana は、このアラートルールの影響を受けるすべての環境が記載された 1 通のコンパクトな通知を送信します。

**特殊グループ**

Grafana には 2 つの特殊グループがあります。デフォルトのグループである `group_by: null` は、*すべての*アラートを 1 つのグループにグループ化します。`...` という名前の特殊ラベルを使用してすべてのラベルでアラートをグループ化することで、グループ化を無効にし、各アラートを独自のグループに送信することもできます。

## 通知の使用
<a name="v9-alerting-notification-policies-working"></a>

以下に、通知ポリシーを作成および管理するための手順を紹介します。

**ルート通知ポリシーの編集方法**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開きます。

1. **[通知ポリシー]** を選択します。

1. **[アラートマネージャー]** ドロップダウンから、編集するアラートマネージャーを選択します。

1. **[ルートポリシー]** セクションで、**[編集]** アイコン (ペン) を選択します。

1. **[デフォルトのコンタクトポイント]** で、アラートルールが特定のポリシーと一致しない場合に通知を送信するコンタクトポイント (通知先) を更新します。

1. **[グループ化対象]** で、アラートをグループ化するラベル (または特殊グループ) を選択します。

1. **[タイミングオプション]** で、以下のいずれかを選択します。
   + **[グループ待機]** – 同じグループのアラートをバッファリングしてから、最初の通知を送信するまでの待機時間。デフォルト値は 30 秒です。
   + **[グループ間隔]** – グループ内の 2 つの通知の最小時間間隔。デフォルト値は 5 分です。
   + **[繰り返し間隔]** – グループに新しいアラートが追加されなかった場合に、通知を再送信するまでの最小時間間隔。デフォルトは 4 時間です。

1. **[保存]** を選択して変更を保存します。

**上位の特定のポリシーの追加方法**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開きます。

1. **[通知ポリシー]** を選択します。

1. **[アラートマネージャー]** ドロップダウンから、編集するアラートマネージャーを選択します。

1. **[特定のルーティング]** セクションで、**[新しい特定のポリシー]** を選択します。

1. **[一致するラベル]** セクションで、一致するアラートラベルを 1 つ以上追加します。ラベルの一致の詳細については、このトピックの後半で説明します。

1. **コンタクトポイント**で、アラートがこの特定のポリシーと一致する場合に通知を送信するコンタクトポイントを追加します。ネストされたポリシーは、このコンタクトポイントを上書きします。

1. オプションで、アラートが現在のポリシーと一致した後でも、**[後続の兄弟ノードを照合し続ける]** を有効にして、兄弟ポリシーの照合を続行します。このオプションを有効にすると、同じアラートに対して複数の通知を取得できます。

1. 必要に応じて **[グループ化を上書き]** を選択して、ルートポリシーとは異なるグループ化を指定します。

1. 必要に応じて **[一般的なタイミングを上書き]** を選択して、グループ通知ポリシーで設定されているタイミングオプションを上書きします。

1. **[ポリシーの保存]** を選択して変更を保存します。

**ネストしたポリシーの追加方法**

1. ネストしたポリシーの作成先となる特定のポリシーを展開します。

1. **[ネストしたポリシーの追加]** を選択し、詳細を追加します (最上位の特定のポリシーを追加する場合と同様)。

1. **[ポリシーの保存]** を選択して変更を保存します。

**特定のポリシーの編集方法**

1. **[アラート]** ページから **[通知ポリシー]** を選択するとページを開き、現在設定されているポリシーが一覧表示されます。

1. 編集する設定ポリシーを選択したら、**[編集]** アイコン (ペン) を選択します。

1. 必要な変更を加えます (最上位の特定のポリシーを追加する場合と同様)。

1. **[ポリシーを保存]** を選択します。

**ポリシーの検索**

ポリシーのツリー内では、*ラベルマッチャー*または*コンタクトポイント*で検索できます。
+ コンタクトポイントで検索するには、**[コンタクトポイントで検索]** フィールドにコンタクトポイントの部分的な名前または完全な名前を入力します。
+ ラベルで検索するには、**[ラベルで検索]** 入力フィールドに有効なラベルマッチャーを入力します。複数のマッチャーをカンマで区切って入力できます。有効なマッチャー入力の例は `severity=high, region=~EMEA|NA` です。
**注記**  
ラベルで検索する場合、一致するすべてのポリシーは完全一致になります。部分一致と正規表現形式の一致はサポートされていません。

**ラベル一致の仕組み**

ポリシーは、アラートのラベルがポリシーで指定されたすべての*一致ラベル*と合致する場合に、そのアラートに適用されます。
+ **ラベル** – 一致させるラベルの名前。アラートのラベル名と完全に一致する必要があります。
+ **[演算子]** – ラベル値と一致するラベル値の比較に使用される演算子。利用できる演算子は次のとおりです。
  + `=` 値が指定された文字列と完全に一致するラベルが選択されます。
  + `!=` 値が指定された文字列と一致しないラベルが選択されます。
  + `=~` 指定された文字列の正規表現解釈値と一致するラベルが選択されます (指定された文字列は正規表現として解釈されます)。
  + `!=` 指定された正規表現と一致しないラベルが選択されます。
+ **[値])** – ラベル値と一致する値。選択した演算子に応じて、文字列または正規表現として照合させることができます。

# 通知のカスタマイズ
<a name="v9-alerting-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)」を参照してください。

通知テンプレートを使用して、通知をカスタマイズします。

通知テンプレートを使用して、通知内のメッセージのタイトル、メッセージ、形式を変更できます。

通知テンプレートは、E メールや Slack などの特定のコンタクトポイント統合には関連付けられていません。ただし、異なるコンタクトポイント統合用に個別の通知テンプレートを作成することもできます。

通知テンプレートを使用すると、次のことができます。
+ 概要、説明、ラベルと注釈、値、リンクなど、通知内の情報を追加、削除、または並べ替える
+ テキストを太字と斜体で書式設定し、改行を追加または削除する

通知テンプレートを次の目的には使用できません。
+ Slack や Microsoft Teams などのインスタントメッセージングサービスで通知のデザインを変更する

**Topics**
+ [Go のテンプレート言語の使用](v9-alerting-notifications-go-templating.md)
+ [通知テンプレートの作成](v9-alerting-create-templates.md)
+ [テンプレートリファレンス](v9-alerting-template-reference.md)

# Go のテンプレート言語の使用
<a name="v9-alerting-notifications-go-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)」を参照してください。

Go のテンプレート言語である [text/template](https://pkg.go.dev/text/template) で通知テンプレートを書き込みます。

このセクションでは、Go のテンプレート言語の概要と、text/template でのテンプレートの作成について説明します。

## dot
<a name="v9-go-dot"></a>

text/template には dot と呼ばれる特別なカーソルがあり、`.` として記述されます。このカーソルは、テンプレート内の使用場所に応じて値が変化する変数と考えることができます。例えば、通知テンプレートの開始時に `.` は、`Alerts`、`Status`、`GroupLabels`、`CommonLabels`、`CommonAnnotations` および `ExternalURL` を含む多数のフィールドを含む `ExtendedData` オブジェクトを参照します。ただし、dot は、リスト上の `range` で使用される場合、`with` 内で使用される場合、または他のテンプレートで使用する機能テンプレートを記述する場合、他の何かを参照する場合があります。これの例は [通知テンプレートの作成](v9-alerting-create-templates.md) で、すべてのデータと関数は [テンプレートリファレンス](v9-alerting-template-reference.md) で確認できます。

## 開始と終了のタグ
<a name="v9-go-openclosetags"></a>

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

## 印刷
<a name="v9-go-print"></a>

何かの値を印刷するには、`{{` と `}}` を使用します。dot の値、dot のフィールド、関数の結果、[[変数]](#v9-go-variables)の値を印刷できます。例えば、dot が `ExtendedData` を参照する `Alerts` フィールドを印刷するには、次のように記述します。

```
{{ .Alerts }}
```

## アラートを反復処理する
<a name="v9-go-iterate-alerts"></a>

アラートに関するすべての情報ではなく、各アラートのラベルのみを印刷するには、`range` を使用して `ExtendedData` でアラートを反復処理できます。

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
```

範囲内の dot は、`ExtendedData` ではなく `Alert` を参照します。`{{ .Labels }}` を使用して、各アラートのラベルを印刷できます。これは、アラートのリスト内の現在のアラートを参照するように `{{ range .Alerts }}` が dot を変えるために機能します。範囲が終了すると、dot は範囲の開始前に存在していた値にリセットされます。この例では `ExtendedData` です。

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
{{/* does not work, .Labels does not exist here */}}
{{ .Labels }}
{{/* works, cursor was reset */}}
{{ .Status }}
```

## 注釈とラベルを反復処理する
<a name="v9-go-iterate-labels"></a>

各アラートのラベルを `The name of the label is $name, and the value is $value` の形式で印刷するテンプレートを書きましょう。ここで、`$name` と `$value` には各ラベルの名前と値が含まれます。

前の例と同様に、`.Alerts` の範囲を使用して のアラートを繰り返し、dot がアラートのリスト内の現在のアラートを参照するようにし、ソートされたラベルで 2 番目の範囲を使用して、dot が現在のラベルを参照するように 2 回目に更新されます。2 番目の範囲内では、 `.Name` と `.Value` を使用して各ラベルの名前と値を出力します。

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
The name of the label is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ range .Annotations.SortedPairs }}
The name of the annotation is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ end }}
```

## If ステートメント
<a name="v9-go-if"></a>

テンプレートでは if ステートメントを使用できます。例えば、`.Alerts` にアラートがない場合に `There are no alerts` を出力するには、次のように記述します。

```
{{ if .Alerts }}
There are alerts
{{ else }}
There are no alerts
{{ end }}
```

## With
<a name="v9-go-with"></a>

With は if ステートメントと似ていますが、if ステートメントとは異なり、`with` は dot を更新して with の値を参照します。

```
{{ with .Alerts }}
There are {{ len . }} alert(s)
{{ else }}
There are no alerts
{{ end }}
```

## [変数]
<a name="v9-go-variables"></a>

text/template の変数は、テンプレート内に作成する必要があります。例えば、`$variable` という変数を現在の dot の値で作成するには、次のように記述します。

```
{{ $variable := . }}
```

範囲内の `$variable` または `with` を使用でき、これらは変数が定義された時点の dot の値を参照します。dot の現在の値は参照されません。

例えば、2 番目の範囲で `{{ .Labels }}` を使用するテンプレートを記述することはできません。ここでは、現在のアラートではなく、現在のラベルが dot で参照されるためです。

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* does not work because in the second range . is a label not an alert */}}
There are {{ len .Labels }}
{{ end }}
{{ end }}
```

これを修正するには、最初の範囲と 2 番目の範囲の前に `$alert` という変数を定義します。

```
{{ range .Alerts }}
{{ $alert := . }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* works because $alert refers to the value of dot inside the first range */}}
There are {{ len $alert.Labels }}
{{ end }}
{{ end }}
```

## インデックスを含む範囲
<a name="v9-go-rangeindex"></a>

範囲の開始時にインデックス変数と値変数を定義することで、範囲内の各アラートのインデックスを取得できます。

```
{{ $num_alerts := len .Alerts }}
{{ range $index, $alert := .Alerts }}
This is alert {{ $index }} out of {{ $num_alerts }}
{{ end }}
```

## テンプレートの定義
<a name="v9-go-define"></a>

`define` とテンプレートの名前を二重引用符で囲むことで、他のテンプレート内で使用できるテンプレートを定義できます。`__subject`、`__text_values_list`、`__text_alert_list`、`default.title`、`default.message` などのデフォルトテンプレートを含め、他のテンプレートと同じ名前のテンプレートを設定しないでください。デフォルトテンプレートと同じ名前のテンプレート、または別の通知テンプレート内のテンプレートと同じ名前で作成されている場合、Grafana はいずれかのテンプレートを使用することになり、混乱が生じます。Grafana は、同じ名前のテンプレートが 2 つ以上ある場合、エラーメッセージを返しません。

```
{{ define "print_labels" }}
{{ end }}
```

## テンプレートを埋め込む
<a name="v9-go-embed"></a>

`template`、二重引用符で囲まれたテンプレートの名前、およびテンプレートに渡されるカーソルを使用して、テンプレート内で定義されたテンプレートを埋め込むことができます。

```
{{ template "print_labels" . }}
```

## テンプレートにデータを渡す
<a name="v9-go-passdata"></a>

テンプレート内では、dot はテンプレートに渡される値を参照します。

例えば、テンプレートに発射アラートのリストが渡された場合、dot は発射アラートのリストを参照します。

```
{{ template "print_alerts" .Alerts }}
```

テンプレートにアラートのソート済みラベルが渡された場合、dot はソート済みラベルのリストを参照します。

```
{{ template "print_labels" .SortedLabels }}
```

これは、再利用可能なテンプレートを記述する場合に役立ちます。例えば、すべてのアラートを出力するには、次のように記述します。

```
{{ template "print_alerts" .Alerts }}
```

次に、発射アラートのみを出力するには、次のように記述します。

```
{{ template "print_alerts" .Alerts.Firing }}
```

これは、`.Alerts` と `.Alerts.Firing` の両方がアラートのリストであるために機能します。

```
{{ define "print_alerts" }}
{{ range . }}
{{ template "print_labels" .SortedLabels }}
{{ end }}
{{ end }}
```

## コメント
<a name="v9-go-comments"></a>

`{{/*` および `*/}}` を使用してコメントを追加できます。

```
{{/* This is a comment */}}
```

コメントが改行を追加しないようにするには、以下を使用します。

```
{{- /* This is a comment with no leading or trailing line breaks */ -}}
```

## インデント
<a name="v9-go-indentation"></a>

タブとスペースの両方のインデントと改行を使用して、テンプレートをより読みやすくすることができます。

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

ただし、テンプレートのインデントはテキストにも適用されます。次に、削除する方法を説明します。

## スペースと改行を削除する
<a name="v9-go-removespace"></a>

text/template では、 `{{-` と `-}}` を使用して、先頭と末尾のスペースと改行を削除します。

例えば、インデントと改行を使用してテンプレートをより読みやすくする場合です。

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

インデントと改行はテキストにも表示されます。

```
    alertname = "Test"

    grafana_folder = "Test alerts"
```

各範囲の先頭の `}}` を `-}}` に変更することで、テキストからインデントと改行を削除できます。

```
{{ range .Alerts -}}
  {{ range .Labels.SortedPairs -}}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

これにより、テンプレートのインデントと改行がテキストから取り除かれます。

```
alertname = "Test"
grafana_folder = "Test alerts"
```

# 通知テンプレートの作成
<a name="v9-alerting-create-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)」を参照してください。

コンタクトポイントに送信するため、再利用可能な通知テンプレートを作成できます。

通知テンプレートには 1 つ以上のテンプレートを追加できます。

通知テンプレート名は、一意である必要があります。同じ通知テンプレートまたは異なる通知テンプレートに、同じ名前のテンプレートを 2 つ使用することはできません。`__subject`、`__text_values_list`、`__text_alert_list`、`default.title`、`default.message` などのデフォルトテンプレートと同じ名前のテンプレートを定義しないでください。

[コンタクトポイント] タブには、通知テンプレートのリストが表示されます。

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

**通知テンプレートを作成するには**

1. **[テンプレートの追加]** をクリックします。

1. `email.subject` などの通知テンプレートの名前を選択します。

1. テンプレートの内容をコンテンツフィールドに書き込みます。

   例えば、次のようになります。

   ```
   {{ if .Alerts.Firing -}}
      {{ len .Alerts.Firing }} firing alerts
      {{ end }}
      {{ if .Alerts.Resolved -}}
      {{ len .Alerts.Resolved }} resolved alerts
      {{ end }}
   ```

1. 保存をクリックします。

   `{{ define "email.subject" }}` (`email.subject` はテンプレートの名前) と `{{ end }}` はコンテンツの先頭と末尾に自動的に追加されます。

**複数のテンプレートを含む通知テンプレートを作成するには**

1. **[テンプレートの追加]** をクリックします。

1. 通知テンプレート全体の名前を入力します。例えば、`email`。

1. 各テンプレートの最初と最後に `{{ define "name-of-template" }}` と `{{ end }}` を含む各テンプレートをコンテンツフィールドに書き込みます。`email.subject` や `email.message` など、通知テンプレート内の各テンプレートにわかりやすい名前を使用できます。この場合、上記で入力した通知テンプレートの名前は再度使用しないでください。

   次のセクションでは、作成するテンプレートの詳細な例を示します。

1. 保存をクリックします。

## E メールの件名テンプレートの作成
<a name="v9-alerting-create-template-subject"></a>

この例では、発射アラートと解決済みアラートの数を含む E メールの件名のテンプレートを作成します。

```
1 firing alerts, 0 resolved alerts
```

**E メールの件名のテンプレートを作成するには**

1. `email.subject` というテンプレートを次の内容で作成します。

   ```
   {{ define "email.subject" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. テンプレートは、キーワード `template` を使用して**件名**フィールドに配置して、コンタクトポイント統合を作成するときに使用します。

   ```
   {{ template "email.subject" . }}
   ```

## E メールのメッセージ用のテンプレート作成
<a name="v9-alerting-create-template-message"></a>

この例では、すべての発射アラートと解決済みアラートの概要を含む E メールのメッセージ用のテンプレートを作成します。

```
There are 2 firing alerts, and 1 resolved alerts

Firing alerts:

- alertname=Test 1 grafana_folder=GrafanaCloud has value(s) B=1
- alertname=Test 2 grafana_folder=GrafanaCloud has value(s) B=2

Resolved alerts:

- alertname=Test 3 grafana_folder=GrafanaCloud has value(s) B=0
```

**E メールのメッセージ用のテンプレートを作成するには**

1. `email` という名前の通知テンプレートを、コンテンツに `email.message_alert` と `email.message` という 2 つのテンプレートで作成します。

   `email.message_alert` テンプレートは、`email.message` テンプレートに E メールの構造が含まれている間、各発射アラートと解決済みアラートのラベルと値を印刷するために使用されます。

   ```
   {{- define "email.message_alert" -}}
   {{- range .Labels.SortedPairs }}{{ .Name }}={{ .Value }} {{ end }} has value(s)
   {{- range $k, $v := .Values }} {{ $k }}={{ $v }}{{ end }}
   {{- end -}}
   
   {{ define "email.message" }}
   There are {{ len .Alerts.Firing }} firing alerts, and {{ len .Alerts.Resolved }} resolved alerts
   
   {{ if .Alerts.Firing -}}
   Firing alerts:
   {{- range .Alerts.Firing }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ if .Alerts.Resolved -}}
   Resolved alerts:
   {{- range .Alerts.Resolved }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ end }}
   ```

1. テンプレートは、キーワード `template` を使用して**テキスト本文**フィールドに配置して、コンタクトポイント統合を作成するときに使用します。

   ```
   {{ template "email.message" . }}
   ```

## Slack メッセージのタイトルのテンプレート作成
<a name="v9-alerting-create-template-slack-title"></a>

この例では、発射アラートと解決済みアラートの数を含む Slack メッセージのタイトルのテンプレートを作成します。

```
1 firing alerts, 0 resolved alerts
```

**Slack メッセージのタイトルのテンプレートを作成するには**

1. `slack.title` というテンプレートを次の内容で作成します。

   ```
   {{ define "slack.title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. テンプレートは、キーワード `template` を使用して**タイトル**フィールドに配置して、コンタクトポイント統合を作成するときに使用します。

   ```
   {{ template "slack.title" . }}
   ```

## Slack メッセージのコンテンツのテンプレート作成
<a name="v9-alerting-create-template-slack-message"></a>

すべての発射アラートと解決済みアラートの説明 (ラベル、注釈、ダッシュボード URL など) を含む Slack メッセージのコンテンツのテンプレートを作成します。

```
1 firing alerts:

[firing] Test1
Labels:
- alertname: Test1
- grafana_folder: GrafanaCloud
Annotations:
- description: This is a test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1

1 resolved alerts:

[firing] Test2
Labels:
- alertname: Test2
- grafana_folder: GrafanaCloud
Annotations:
- description: This is another test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
```

**Slack メッセージのコンテンツのテンプレートを作成するには**

1. コンテンツに `slack.print_alert` と`slack.message` の 2 つのテンプレートを使用して、`slack` という名前のテンプレートを作成します。

   `slack.print_alert` テンプレートはラベル、注釈、および DashboardURL の印刷に使用され、`slack.message` テンプレートには通知の構造が含まれます。

   ```
   {{ define "slack.print_alert" -}}
   [{{.Status}}] {{ .Labels.alertname }}
   Labels:
   {{ range .Labels.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ if .Annotations -}}
   Annotations:
   {{ range .Annotations.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ end -}}
   {{ if .DashboardURL -}}
     Go to dashboard: {{ .DashboardURL }}
   {{- end }}
   {{- end }}
   
   {{ define "slack.message" -}}
   {{ if .Alerts.Firing -}}
   {{ len .Alerts.Firing }} firing alerts:
   {{ range .Alerts.Firing }}
   {{ template "slack.print_alert" . }}
   {{ end -}}
   {{ end }}
   {{ if .Alerts.Resolved -}}
   {{ len .Alerts.Resolved }} resolved alerts:
   {{ range .Alerts.Resolved }}
   {{ template "slack.print_alert" .}}
   {{ end -}}
   {{ end }}
   {{- end }}
   ```

1. テンプレートは、キーワード `template` を使用して**テキスト本文**フィールドに配置して、コンタクトポイント統合を作成するときに使用します。

   ```
   {{ template "slack.message" . }}
   ```

## 共有テンプレートを使用して E メールと Slack の両方にテンプレートを作成する
<a name="v9-alerting-create-shared-templates"></a>

E メールや Slack など、コンタクトポイントごとに個別の通知テンプレートを作成する代わりに、同じテンプレートを共有できます。

例えば、この件名の E メールを送信し、このタイトル `1 firing alerts, 0 resolved alerts` の Slack メッセージを送信する場合は、共有テンプレートを作成できます。

**共有テンプレートを作成するには**

1. `common.subject_title` というテンプレートを次の内容で作成します。

   ```
   {{ define "common.subject_title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. E メールの場合は、E メールコンタクトポイント統合の件名フィールドからテンプレートを実行します。

   ```
   {{ template "common.subject_title" . }}
   ```

1. Slack の場合は、Slack コンタクトポイント統合のタイトルフィールドからテンプレートを実行します。

   ```
   {{ template "common.subject_title" . }}
   ```

## 通知テンプレートの使用
<a name="v9-alerting-use-notification-templates"></a>

コンタクトポイントのテンプレートを使用して通知をカスタマイズします。

**コンタクトポイントの作成時にテンプレートを使用するには**

1. **[アラート]**メニューから、**[コンタクトポイント]** を選択して、既存のコンタクトポイントのリストを表示します。

1. **[コンタクトポイントを追加]** を選択します。または、編集するコンタクトポイントの横にある **[編集]** アイコン (ペン) を選択して、既存のコンタクトポイントを編集することもできます。

1. **[Message]** (メッセージ) や **[Subject]** (件名) などの 1 つ以上のフィールドに、使用するテンプレートを入力します。テンプレートを入力するには、`{{ template "template_name" . }}` フォームを使用し、 *template\$1name* を使用するテンプレートの名前に置き換えます。

1. **[コンタクトポイントの保存]** をクリックします。

# テンプレートリファレンス
<a name="v9-alerting-template-reference"></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)」を参照してください。

このセクションでは、テンプレートを作成するためのリファレンス情報を提供します。

## テンプレートのデータ
<a name="v9-alerting-template-data"></a>

メッセージテンプレートには、次のデータが渡されます。


| 名前 | 型 | 注意事項 | 
| --- | --- | --- | 
|  `Receiver`  |  string  |  コンタクトポイント (通知先) の名前。  | 
|  `Status`  |  string  |  少なくとも 1 つのアラートが発生している場合は「発生中」となり、それ以外の場合「解決済」となります。  | 
|  `Alerts`  |  アラート  |  この通知に含まれるアラートオブジェクトのリスト (以下を参照)。  | 
|  `GroupLabels`  |  KeyValue  |  これらのアラートがグループ化されたラベル。  | 
|  `CommonLabels`  |  KeyValue  |  この通知に含まれるすべてのアラートに共通のラベル。  | 
|  `CommonAnnotations`  |  KeyValue  |  この通知に含まれるすべてのアラートに共通する注釈。  | 
|  `ExternalURL`  |  string  |  通知の送信元である Grafana へのリンク。外部のアラートマネージャーを使用している場合、そのアラートマネージャーへのリンク。  | 

`Alerts` 型には、返されたアラートをフィルタリングするための 2 つの関数があります。
+ `Alerts.Firing` – 発生中のアラートのリストを返します。
+ `Alerts.Resolved` – 解決済みのアラートのリストを返します。

**アラート (型)**

アラート型には、次のデータがあります。


| 名前 | 型 | 注意事項 | 
| --- | --- | --- | 
|  ステータス  |  string  |  `firing` または `resolved`  | 
|  ラベル  |  KeyValue  |  アラートに付与された一連のラベル。  | 
|  ‏注釈  |  KeyValue  |  アラートに付与された一連の注釈。  | 
| 値 | KeyValue | クラシック条件を含むすべての式の値 | 
|  StartsAt  |  time.Time  |  アラートが発行された時刻。  | 
|  EndsAt  |  time.Time  |  アラートの終了時刻がわかっている場合にのみ設定されます。それ以外の場合、最後にアラートを受信してから設定可能なタイムアウト期間が適用されます。  | 
|  GeneratorURL  |  string  |  Grafana または外部アラートマネージャーへのリンク。  | 
|  SilenceURL  |  string  |  アラートをサイレンスするリンク (このアラートのラベルがあらかじめ入力されています)。Grafana 管理のアラートのみ。  | 
|  DashboardURL  |  string  |  Grafana ダッシュボードへのリンク (アラートルールが Grafana に属している場合)。Grafana 管理のアラートのみ。  | 
|  PanelURL  |  string  |  Grafana ダッシュボードパネルへのリンク (アラートルールが Grafana に属している場合)。Grafana 管理のアラートのみ。  | 
|  Fingerprint  |  string  |  アラートの識別に使用するフィンガープリント。  | 
|  ValueString  |  string  |  アラート内の各削減された式のラベルと値を含む文字列。  | 

 **ExtendedData**

ExtendedData オブジェクトには、以下のプロパティが含まれています。


| 名前 | [Kind] (種類) | 説明 | 例 | 
| --- | --- | --- | --- | 
|  レシーバー  |  `string`  |  通知を送信するコンタクトポイントの名前。  |  `{{ .Receiver }}`  | 
|  ステータス  |  `string`  |  ステータスは`firing if at least one alert is firing, otherwise resolved.`です。  |  `{{ .Status }}`  | 
|  アラート  |  `[]Alert`  |  この通知のすべての発生アラートと解決済みアラートのリスト。  |  `There are {{ len .Alerts }} alerts`  | 
|  発生アラート  |  `[]Alert`  |  この通知のすべての発生アラートのリスト。  |  `There are {{ len .Alerts.Firing }} firing alerts`  | 
|  解決済みアラート  |  `[]Alert`  |  この通知で解決されたすべてのアラートのリスト。  |  `There are {{ len .Alerts.Resolved }} resolved alerts`  | 
|  GroupLabels  |  `KeyValue`  |  これらのアラートをこの通知にグループ化するラベル。  |  `{{ .GroupLabels }}`  | 
|  CommonLabels  |  `KeyValue`  |  この通知のすべてのアラートに共通するラベル。  |  `{{ .CommonLabels }}`  | 
|  CommonAnnotations  |  `KeyValue`  |  この通知のすべてのアラートに共通する注釈。  |  `{{ .CommonAnnotations }}`  | 
|  ExternalURL  |  `string`  |  この通知を送信した Grafana ワークスペースまたはアラートマネージャーへのリンク。  |  `{{ .ExternalURL }}`  | 

**KeyValue 型**

`KeyValue` 型は、キー (ラベル) 値 (注釈) の文字列を組み合わせたものです。

`KeyValue` として保存されたデータに直接アクセスするメソッドだけでなく、データをソート、削除、変換するメソッドも備えています。


| 名前 | 引数 | 戻り値 | 注意事項 | 例 | 
| --- | --- | --- | --- | --- | 
|  SortedPairs  |    |  キーと値の文字列のソート済みのリスト  |    | `{{ .Annotations.SortedPairs }}` | 
|  削除  |  []string  |  KeyValue  |  指定したキーを除いたキー/値のマップのコピーを返します。  | `{{ .Annotations.Remove "summary" }}` | 
|  名前  |    |  []string  |  ラベル名のリスト  | `{{ .Names }}` | 
|  値  |    |  []string  |  ラベル値のリスト  | `{{ .Values }}` | 

**[時間]**

時間は Go [https://pkg.go.dev/time#Time](https://pkg.go.dev/time#Time) パッケージからのものです。時間はさまざまな形式で印刷できます。例えば、アラートが発生した時刻を `Monday, 1st January 2022 at 10:00AM` 形式で出力するには、次のテンプレートを作成します。

```
{{ .StartsAt.Format "Monday, 2 January 2006 at 3:04PM" }}
```

Go の時間形式に関するリファレンスは、[こちら](https://pkg.go.dev/time#pkg-constants)を参照してください。

## テンプレート関数
<a name="v9-alerting-template-functions"></a>

テンプレート関数を使用すると、ラベルと注釈を処理して動的に通知を生成できます。以下の機能を使用できます。


| 名前 | 引数の型 | 戻り型 | 説明 | 
| --- | --- | --- | --- | 
|  `humanize`  |  数値または文字列  |  string  |  メトリクスプレフィックスを使用して、数値をより読み取り可能な形式に変換します。  | 
|  `humanize1024`  |  数値または文字列  |  string  |  humanize と同様に、1000 ではなく 1024 を基準にします。  | 
|  `humanizeDuration`  |  数値または文字列  |  string  |  時間を秒単位のより読みやすい形式に変換します。  | 
|  `humanizePercentage`  |  数値または文字列  |  string  |  比率の値を 100 分の 1 の形に変換します。  | 
|  `humanizeTimestamp`  |  数値または文字列  |  string  |  Unix のタイムスタンプを秒単位のより読みやすい形式に変換します。  | 
|  `title`  |  string  |  string  |  strings.Title を使用すると、各単語の最初の文字が大文字になります。  | 
|  `toUpper`  |  string  |  string  |  strings.ToUpper を使用すると、文字列がすべて大文字に変換されます。  | 
|  `toLower`  |  string  |  string  |  strings.ToLower を使用すると、文字列がすべて小文字に変換されます。  | 
|  `match`  |  パターン、テキスト  |  ブール値  |  regexp.MatchString を使用すると、アンカーなしでの正規表現の一致テストを実行できます。  | 
|  `reReplaceAll`  |  パターン、置換、テキスト  |  string  |  Regexp.ReplaceAllString を使用すると、アンカーなしでの正規表現による置換が実行できます。  | 
|  `graphLink`  |  文字列 - `expr` および `datasource` フィールドを持つ JSON オブジェクト  |  string  |  指定された式とデータソースに対するグラフィカルビューへのパスを返します。  | 
|  `tableLink`  |  文字列 - `expr` および `datasource` フィールドを持つ JSON オブジェクト  |  string  |  指定された式とデータソースに対するタブ形式ビューへのパスを返します。  | 
|  `args`  |  []interface\$1\$1  |  map[string]interface\$1\$1  |  オブジェクトのリストを arg0、arg1 などのキーを持つマップに変換します。複数の引数をテンプレートに渡す場合、この関数を使用します。  | 
|  `externalURL`  |  なし  |  string  |  外部 URL を表す文字列を返します。  | 
|  `pathPrefix`  |  なし  |  string  |  外部 URL のパスを返します。  | 

次の表に、各関数の使用例を紹介します。


| 関数 | TemplateString | Input | 予想 | 
| --- | --- | --- | --- | 
|  humanize  |  \$1 humanize \$1value \$1  |  1234567.0  |  1.235M  | 
|  humanize1024  |  \$1 humanize1024 \$1value \$1  |  1048576.0  |  1Mi  | 
|  humanizeDuration  |  \$1 humanizeDuration \$1value \$1  |  899.99  |  14 分 59 秒  | 
|  humanizePercentage  |  \$1 humanizePercentage \$1value \$1  |  0.1234567  |  12.35%  | 
|  humanizeTimestamp  |  \$1 humanizeTimestamp \$1value \$1  |  1435065584.128  |  2015-06-23 13:19:44.128 \$10000 UTC  | 
|  title  |  \$1 \$1value \$1 title \$1  |  aa bB CC  |  Aa Bb Cc  | 
|  toUpper  |  \$1 \$1value \$1 toUpper \$1  |  aa bB CC  |  AA BB CC  | 
|  toLower  |  \$1 \$1value \$1 toLower \$1  |  aa bB CC  |  aa bb cc  | 
|  match  |  \$1 match "a\$1" \$1labels.instance \$1  |  aa  |  真  | 
|  reReplaceAll  |  \$1\$1 reReplaceAll "localhost:(.\$1)" "my.domain:\$11" \$1labels.instance \$1\$1  |  localhost:3000  |  my.domain:3000  | 
|  graphLink  |  \$1\$1 graphLink "\$1\$1"expr\$1": \$1"up\$1", \$1"datasource\$1": \$1"gdev-prometheus\$1"\$1" \$1\$1  |    |  /explore?left=["now-1h","now","gdev-prometheus",\$1"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true\$1]  | 
|  tableLink  |  \$1\$1 tableLink "\$1\$1"expr\$1":\$1"up\$1", \$1"datasource\$1":\$1"gdev-prometheus\$1"\$1" \$1\$1  |    |  /explore?left=["now-1h","now","gdev-prometheus",\$1"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false\$1]  | 
|  args  |  \$1\$1define "x"\$1\$1\$1\$1.arg0\$1\$1 \$1\$1.arg1\$1\$1\$1\$1end\$1\$1\$1\$1template "x" (args 1 "2")\$1\$1  |    |  1 2  | 
|  externalURL  |  \$1 externalURL \$1  |    |  http://localhost/path/prefix  | 
|  pathPrefix  |  \$1 pathPrefix \$1  |    |  /path/prefix  | 

# Prometheus データソースのアラート通知のサイレンス化
<a name="v9-alerting-silences"></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)」を参照してください。

外部のアラートマネージャーデータソース (Amazon Managed Service for Prometheus を含む) では、*[サイレンス]*機能を使用してアラート通知を停止できます。サイレンスは通知の作成を停止するだけで、アラートルールの評価やユーザーインターフェースへのアラートインスタンスの表示は引き続き行われます。アラートをサイレンスにする場合、停止する時間枠を指定します。

外部アラートマネージャーデータソースのサイレンスを設定できます。

**注記**  
アラート通知を一定の時間間隔、またはその他のデータソース (定期的なメンテナンス期間中など) で停止するには、サイレンスではなく [ミュートタイミング](v9-alerting-notification-muting.md) を使用します。

**サイレンスの追加方法**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開きます。

1. **[サイレンス]** を選択して、既存の [コンタクトポイント (通知先) の使用](v9-alerting-contact-points.md) を一覧表示するページを開きます。

1. **[アラートマネージャー]** ドロップダウンから外部アラートマネージャーを選択します。

1. **[サイレンスの追加]** を選択します。

1. **[サイレンスの開始と終了]** でサイレンスを有効にする開始日と終了日を選択します。

   終了時刻を設定する代わりに、**[期間]** でサイレンスが適用される期間を指定します。この方法を使用すると、**[サイレンスの開始と終了]** フィールドの終了時刻が自動的に更新されます。

1. **[名前]** および **[値]** のフィールドには、1 つ以上の*一致するラベル*を入力します。照合機能により、どのルールにサイレンスを適用するかが決定されます。ラベルの照合については、この手順の後に詳しく説明します。

1. 必要に応じて、**コメント**を追加したり、**作成者**を変更してサイレンスの所有者を設定することができます。

1. **[作成]** を選択して入力を作成します。

既存のサイレンスを編集するには、**[編集]** アイコン (ペン) を選択します。

**アラート停止のラベル一致**

サイレンスの作成時に、サイレンスの一部として*一致するラベル*のセットを作成します。これは、アラートが停止されるために一致する必要があるラベルに関するルールのセットです。一致するラベルは、次の 3 つの部分で構成されます。
+ **ラベル** – 一致させるラベルの名前。アラートのラベル名と完全に一致する必要があります。
+ **[演算子]** – ラベル値と一致するラベル値の比較に使用される演算子。利用できる演算子は次のとおりです。
  + `=` 値が指定された文字列と完全に一致するラベルが選択されます。
  + `!=` 値が指定された文字列と一致しないラベルが選択されます。
  + `=~` 指定された文字列の正規表現解釈値と一致するラベルが選択されます (指定された文字列は正規表現として解釈されます)
  + `!=` 指定された正規表現と一致しないラベルが選択されます。
+ **[値])** – ラベル値と一致する値。選択した演算子に応じて、文字列または正規表現として照合させることができます。

サイレンスは指定された終了日に終了しますが、いつでも手動で停止状態を解除することができます。

**サイレンスを手動で終了する方法**

1. **[アラート]** ページで、**[サイレンス]** を選択して既存のサイレンスのリストを表示します。

1. 終了するサイレンスを選択し、**[サイレンス解除]** を選択します。この操作によりアラートの停止状態は終了します。
**注記**  
サイレンス解除を行うと、終了時刻が現在の時刻に設定されたものとして、アラートの停止状態が終了します。（自動または手動を問わず）終了したサイレンスは5 日間保持され、一覧表示されます。リストからサイレンスを手動で削除することはできません。

**サイレンス作成フォームへのリンクの作成**

詳細が既に入力されているサイレンス作成フォームへの URL を作成できます。オペレータはこれを使用して、運用上のイベントを行う際にアラームをすばやく停止することができます。

サイレンスフォームへのリンクを作成するときは、`matchers` クエリパラメータを使用して一致するラベルを指定し、`comment` クエリパラメータを使用してコメントを指定します。`matchers` パラメータには、カンマで区切られた `[label][operator][value]` 形式の 1 つ以上の値が必要です。

**URL の例**

ラベル `severity=critical` と `cluster!~europe-.*` が一致し、`Silencing critical EU alerts` というコメントが付いたサイレンスフォームにリンクするには、次のような URL を使用します。*mygrafana* を Grafana インスタンスのホスト名に置き換えてください。

```
https://mygrafana/alerting/silence/new?matchers=severity%3Dcritical%2Ccluster!~europe-*&comment=Silence%20critical%20EU%20alert
```

外部アラートマネージャーの新しいサイレンスページにリンクする場合、アラートマネージャーデータソース名を含む `alertmanager` クエリパラメータを追加します (例: `alertmanager=myAlertmanagerdatasource`)。

# ミュートタイミング
<a name="v9-alerting-notification-muting"></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 アラートおよび外部アラートマネージャーと連携します。  |  外部アラートマネージャーでのみ機能します。  | 

**ミュートタイミングの作成方法**

1. Grafana コンソールの Grafana メニューで、**[アラート]** (ベル) アイコンを選択して **[アラート]** ページを開きます。

1. **[通知ポリシー]** を選択します。

1. **[アラートマネージャー]** ドロップダウンから、編集するアラートマネージャーを選択します。

1. **[ミュートタイミング]** セクションで、**[ミュートタイミングの追加]** ボタンを選択します。

1. ミュートタイミングを適用したい時間間隔を選択します。

1. **[送信]** を選択してミュートタイミングを作成します。

**通知ポリシーへのミュートタイミングの追加方法**

1. ミュートタイミングを追加する通知ポリシーを選択し、**[編集]** ボタンを選択します。

1. **[ミュートタイミング]** ドロップダウンから、ポリシーに追加するミュートタイミングを選択します。

   **[ポリシーを保存]** ボタンを選択します。

**時間間隔**

時間間隔には、時間範囲を指定します。この時間間隔内にアラートが発生した場合、抑制されます。範囲には `:` を使用して表現することができます (例: `monday:thursday`)。ミュートタイミングには複数の時間間隔を含めることができます。時間間隔は複数のフィールド (詳細は次のリストを参照) で構成され、アラートを抑制するには、すべてのフィールドが一致する必要があります。例えば、曜日に月曜日から金曜日 `monday:friday`、時間範囲を 8:00～9:00 と指定した場合、アラートは月曜日から金曜日の 8:00～9:00 の間は抑制されますが、土曜日の 8:00～9:00 は抑制されません。
+ **[時間範囲]** – 通知を抑制する時間帯。**[開始時刻]**と**[終了時刻]** の 2 つのサブフィールドで構成されます。時刻は `14:30` のように指定します。時刻は UTC の 24 時間表記です。
+ **[曜日]** - 曜日。単一の日 (例: `monday`)、範囲 (例: `monday:friday`)、またはカンマで区切られた複数の日のリスト (例: `monday, tuesday, wednesday`) を指定できます。
+ **[月]** - 選択する月。月は、数値で指定することも、完全な月名で指定することもできます。例えば、`1` または `january` のどちらでも 1 月を指定できます。単一の月、月の範囲、またはカンマ区切りの月のリストを指定できます。
+ **[月の日付]** – 1 か月内の日付。値は `1`～`31` の範囲で指定します。負の値は月の日を逆順で指定することを意味します。たとえば、`-1` は月の最終日を表します。日付は単一の日、日付の範囲、またはカンマで区切った日付のリストを指定できます。
+ **[年]** - 間隔の年または複数年。例えば、`2023:2025`。

これらの要素はそれぞれリストにすることができ、一致するには要素内の少なくとも 1 つの項目を満たす必要があります。したがって、年を `2023:2025, 2027` に設定すると、2023、2024、2025、2027 年 (2026 年を除く) に当てはまります。

フィールドを空白のままにすると、任意の時刻をフィールドと照合します。完全な時間間隔と一致させるには、ある時点がすべてのフィールドと一致している必要があります。

正確な期間を指定する場合は、その期間に必要なすべてのオプションを指定します。例えば、3 月、6 月、9 月、12 月の最初の月曜日の 12:00 から 24:00 UTC の時間間隔を作成する場合、時間間隔の指定は次のようになります。
+ 時間範囲：
  + 開始時間: `12:00`
  + 終了時間: `24:00`
+ 曜日: `monday`
+ 月: `3, 6, 9, 12`
+ 日: `1:7`

# アラートグループ別に表示およびフィルタリングする
<a name="v9-alerting-viewfiltergroups"></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 つのアラートグループにグループ化することで、重複したアラートルールが発生することを防ぎます。

アラートグループを表示し、特定の条件に一致するアラートルールをフィルター処理することもできます。

**アラートグループを表示するには**

1. Grafana メニューで、**[アラート]** (ベル) アイコンをクリックしてアラートページを開いて既存のアラートを一覧表示します。

1. **[アラートグループ]** をクリックして、既存のグループを一覧表示するページを開きます。

1. **[アラートマネージャー]** ドロップダウンから、データソースとして外部アラートマネージャーを選択します。

1. **[カスタムグループ化]** ドロップダウンでラベルの組み合わせを選択して、デフォルト以外のグループを表示します。これは、通知ポリシーのグループをデバッグおよび検証するのに役立ちます。

アラートにルートポリシーのグループ化またはカスタムグループ化のいずれかで指定されたラベルが含まれていない場合、アラートは `No grouping` のヘッダーを持つ [すべてのグループを取得] に追加されます。

**ラベルでフィルタリングするには**
+ **[検索]** で既存のラベルを入力して、ラベルに一致するアラートを表示します。

  例えば、`environment=production,region=~US|EU,severity!=warning`。

**状態でフィルタリングするには**
+ **[状態]** では、Active (アクティブ)、Suppressed (抑制)、または Unprocessed (未処理) の状態を選択すると、選択した状態に一致するアラートが表示されます。他のすべてのアラートは非表示になります。

# 通知エラーの表示
<a name="v9-alerting-viewnotificationerrors"></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. Grafana メニューで、**[アラート]** (ベル) アイコンをクリックしてアラートページを開いて既存のアラートを一覧表示します。

1. **[コンタクトポイント]** を選択すると、現在設定されているコンタクトポイントのリストが表示されます。

   いずれかのコンタクトポイントが失敗した場合は、画面の右隅にメッセージが表示され、エラーが発生していることとその数がユーザーに通知されます。

1. コンタクトポイントをクリックすると、そのコンタクトポイントのエラーの詳細が表示されます。

   エラーアイコンにカーソルを合わせると、エラーの詳細が表示されます。

   コンタクトポイントに複数の統合がある場合、各統合のすべてのエラーが表示されます。

1. [正常性] 列で、通知のステータスを確認します。

   これは、[OK]、[試行なし]、または [エラー]のいずれかです。