Prometheus を Datasource に設定して、Kubernetes Pod CPU使用量による監視を行うアラートの作成方法サンプル

Prometheus に収集されたメトリクスを利用して、 PodごとのCPU使用量を基にアラートを作成する方法を説明します。

Grafana (AWS, Azure)

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

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

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

    2. クエリの入力欄にアラートの判定規則となるクエリを入力します。 以下のクエリを入力し、PodごとのCPU使用量(コア数)を出力します。なお、クエリの入力欄が表示されていない場合は Add query で入力欄を追加します。

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

    2. アラート実施する閾値を設定します。 今回は、 Threshold にて IS ABOVE 100 を設定し、CPU使用量が1コア(1000m CPU)を超えたらアラート実施するようにします。 なお、設定項目が表示されていない場合は Add expression で追加します。

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

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

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

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

      1. 今回はデータが存在しない場合は正常とみなすため、 Alert state if no data or all values are null は OK を設定します。

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

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

Google Cloud Monitoring (Google Cloud)

Google Cloud コンソールの「モニタリング」>「アラート」からポリシーを作成します。

  1. 「ポリシーを作成」をクリックします。

  2. 「コードエディタ(MQL または PromQL)」をクリックし、「PromQL」を選択します。

  3. クエリ入力欄に以下のクエリを入力し、「Next」をクリックします。

    100 * sum by (namespace, pod) (rate(container_cpu_usage_seconds_total{}[5m]))
    
  4. 「トリガーの設定」にて、「Next」をクリックします。

  5. 「通知と名前」にて、アラート名を設定し、通知チャンネルを選択します。

  6. 「ポリシーを作成」をクリックして保存します。