Prometheus を Datasource に設定して、HTTP 5XXエラー率による監視を行うアラートの作成方法サンプル

Prometheus に収集されたメトリクスを利用して、 1時間あたりの5xxエラー率を基にアラートを作成する方法を説明します。

Alerting メニュー内の Alert rules を選択し、 New alert rule からアラートの作成画面へ遷移し、 以下に説明する項目を設定します。

  • Set a query and alert condition にてアラートに利用するメトリクスを取得するクエリとアラート状態にする条件を設定します。

    1. ダッシュボード作成時と同様に Datasource を選択します。今回は、 Managed Prometheus を選択します。

    注釈

    Azureでは、2023年12月以前に開通されたお客様の環境では、Kubernetesクラスタ内に構築された Prometheus を参照している場合があります。 この場合は Datasource として Local Prometheus を選択します。

    1. クエリの入力欄にアラートの判定規則となるクエリを入力します。 以下のクエリを入力し、サービスごとの5xxエラー率を出力します。なお、クエリの入力欄が表示されていない場合は Add query で入力欄を追加します。

    100 * sum(rate(istio_requests_total{response_code=~"5[0-9][0-9]", reporter="destination"}[5m])) by (destination_service) /
    sum(rate(istio_requests_total{reporter="destination"}[5m])) by (destination_service)
    
    1. 取得したクエリをどの単位で集約してアラート検知するか設定します。 今回は、 ReduceFunctionMean に設定します。 なお、設定項目が表示されていない場合は Add expression で追加します。

    2. アラート実施する閾値を設定します。 今回は、 Threshold にて IS ABOVE 80 を設定し、5xxエラー率が80%を超えたらアラート実施するようにします。 なお、設定項目が表示されていない場合は Add expression で追加します。

  • Alert evaluation behavior にてアラート状態となったあと、実際にアラートを発報するまでの保留時間等を設定します。

    1. Folder にてアラートフォルダを、 Evaluation group にてグループを設定します。 ここで設定した内容がアラートのラベルに付与されます。

    2. Pending period にアラートを保留する時間を設定します。今回は5mを設定します。

    3. Configure no data and error handling にてデータが存在しない場合の対処方法を設定します。

      1. 今回は1件も5xxエラーがない場合にデータ欠損するクエリなので、 Alert state if no data or all values are null は OK を設定します。

      2. また、クエリ実行に失敗したときはアラート状態としたいので、 Alert state if execution error or timeout は NG を設定します。

  • その他、アラートの名前の設定など記載し、 Save and exit をクリックして、アラートを保存します。