

# PromQL クエリを使用してアラームを作成する
<a name="Create_PromQL_Alarm"></a>

PromQL インスタントクエリを使用して CloudWatch OTLP エンドポイントを介して取り込まれたメトリクスをモニタリングする CloudWatch アラームを作成できます。クエリによって返されるすべての一致する時系列は違反していると見なされ、アラームは違反している各時系列を寄稿者として追跡します。PromQL アラームの仕組みの詳細については、「[PromQL アラーム](alarm-promql.md)」を参照してください。

## AWS マネジメントコンソール を使用した PromQL アラームの作成
<a name="promql-alarm-create-console"></a>

この例では、ゲージメトリクスをモニタリングし、その値が 20 を下回ったときに警告するアラームを作成する方法を示します。

**PromQL アラームを作成するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで、**[Alarms]** (アラーム)、**[All Alarms]** (すべてのアラーム) の順に選択します。

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

1. メトリクスタイプの **PromQL** を選択します。

1. **[エディタ]** モードで、PromQL クエリを入力します:

   ```
   my_gauge_metric < 20
   ```

1. [**Conditions (条件)**] で、次のように指定します。
   + **[評価間隔]** では、**1 minute** を選択して、PromQL クエリが評価される頻度を定義します。
   + **[保留中の期間]** では、「**120**」と入力します。ALARM 状態に入る前に、寄稿者が違反している期間を秒単位で入力します。
   + **[復旧期間]** では、「**300**」と入力します。OK 状態に入る前に、寄稿者が違反してはならない時間を秒単位で入力します。

1. 必要に応じて通知とアクションを設定します。

1. アラームの名前と説明を追加します。

1. [**次へ**] を選択します。

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

## PromQL アラーム (AWS CLI) の作成
<a name="promql-alarm-create-cli"></a>

[PutMetricAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html) API アクションを使用して、PromQL アラームを作成します。

**Example ゲージメトリクスが 20 を下回るとトリガーされる PromQL アラームを作成する**  

```
aws cloudwatch put-metric-alarm \
  --alarm-name MyPromQLAlarm \
  --evaluation-criteria '{"PromQLCriteria":{"Query":"my_gauge_metric < 20"}}' \
  --evaluation-interval 60
```

**Example 保留中の期間を使用して PromQL アラームを作成する**  
このアラームは `ALARM` 状態に移行する前に 300 秒 (5 分) 待機し、回復する前に 600 秒 (10 分) 待機します。  

```
aws cloudwatch put-metric-alarm \
  --alarm-name HighLatencyAlarm \
  --evaluation-criteria '{"PromQLCriteria":{"Query":"histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m])) > 0.5","PendingPeriod":300,"RecoveryPeriod":600}}' \
  --evaluation-interval 60
```

**Example SNS 通知アクションを使用して PromQL アラームを作成する**  

```
aws cloudwatch put-metric-alarm \
  --alarm-name MyPromQLAlarmWithAction \
  --evaluation-criteria '{"PromQLCriteria":{"Query":"my_gauge_metric < 20","PendingPeriod":0,"RecoveryPeriod":0}}' \
  --evaluation-interval 60 \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:MyTopic
```

## Query Studio からの PromQL アラームの作成
<a name="promql-alarm-create-query-studio"></a>

この例では、サービスの平均 HTTP リクエスト時間が 500 ミリ秒を超えたときに警告する PromQL アラームを Query Studio から作成する方法を示します。

しきい値が別のステップとして設定されている標準の CloudWatch アラームとは異なり、PromQL アラームはアラーム条件 (しきい値) をクエリ自体の一部として定義します。例えば、比較演算子 (`>`) としきい値 (`0.5`) は PromQL 式に直接埋め込まれます。

**Query Studio から PromQL アラームを作成するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. **[メトリクス]** の下のナビゲーションペインで、**[Query Studio] (プレビュー)** を選択します。

1. クエリ言語ドロップダウンメニューから **PromQL** を選択します。

1. 次のいずれかのモードを使用してクエリを構築します:
   + **[ビルダー]** モードで、**[メトリクス]** フィールドからメトリクス名を選択します (例: `http.server.request.duration`)。必要に応じてラベルフィルターを追加します (例: `@resource.service.name` = `my-api`)。アラームのしきい値を定義するには、**[基本オペレーション]** (例: `>`) を選択し、**[数値]** (例: `0.5`) を入力します。
   + **[コード]** モードでは、PromQL 式を直接入力します。例:

     ```
     histogram_avg({"http.server.request.duration", "@resource.service.name"="my-api"}) > 0.5
     ```

1. **[実行]** を選択してクエリを実行し、期待される結果を返すことを確認します。

1. [アクション] メニューから、**[アラームの作成]** を選択します。

1. PromQL クエリが事前入力された CloudWatch アラーム作成ページにリダイレクトされます。

1. [**Conditions (条件)**] で、次のように指定します。
   + **[評価間隔]** では、**1 minute** を選択して、PromQL クエリが評価される頻度を定義します。
   + **[保留中の期間]** では、「**60**」と入力します。ALARM 状態に入る前にクエリが違反している期間を秒単位で入力します。これは、アラームが発生する前に、レイテンシーが少なくとも 60 秒間しきい値を超える必要があることを意味します。
   + **[復旧期間]** では、「**120**」と入力します。OK 状態に入る前にクエリが違反してはならない時間を秒単位で入力します。これは、アラームが回復する前に、レイテンシーが少なくとも 120 秒間しきい値を下回っている必要があることを意味します。

1. 必要に応じて通知とアクションを設定します。

1. アラームの名前と説明を追加します。

1. [**次へ**] を選択します。

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

**注記**  
PromQL クエリは、アラームを作成するために単一の時系列を返す必要があります。クエリが複数の時系列を返す場合は、`sum`、`avg`、`topk` などの集計関数を使用して、アラームを作成する前に結果を単一の系列に減らします。