Prometheus を Datasource に設定して、Kubernetes Pod CPU使用量による監視を行うアラートの作成方法サンプル¶
Prometheus に収集されたメトリクスを利用して、 PodごとのCPU使用量を基にアラートを作成する方法を説明します。
Grafana (AWS, Azure)¶
Alerting メニュー内の Alert rules を選択し、 New alert rule からアラートの作成画面へ遷移し、
以下に説明する項目を設定します。
Set a query and alert conditionにてアラートに利用するメトリクスを取得するクエリとアラート状態にする条件を設定します。ダッシュボード作成時と同様に Datasource を選択します。今回は、
Managed Prometheusを選択します。クエリの入力欄にアラートの判定規則となるクエリを入力します。 以下のクエリを入力し、PodごとのCPU使用量(コア数)を出力します。なお、クエリの入力欄が表示されていない場合は
Add queryで入力欄を追加します。
100 * sum by (namespace, pod) (rate(container_cpu_usage_seconds_total{}[5m]))取得したクエリをどの単位で集約してアラート検知するか設定します。 今回は、
ReduceのFunctionをMeanに設定します。 なお、設定項目が表示されていない場合はAdd expressionで追加します。アラート実施する閾値を設定します。 今回は、
ThresholdにてIS ABOVE100を設定し、CPU使用量が1コア(1000m CPU)を超えたらアラート実施するようにします。 なお、設定項目が表示されていない場合はAdd expressionで追加します。
Alert evaluation behaviorにてアラート状態となったあと、実際にアラートを発報するまでの保留時間等を設定します。Folderにてアラートフォルダを、Evaluation groupにてグループを設定します。 ここで設定した内容がアラートのラベルに付与されます。Pending periodにアラートを保留する時間を設定します。今回は5mを設定します。Configure no data and error handlingにてデータが存在しない場合の対処方法を設定します。今回はデータが存在しない場合は正常とみなすため、
Alert state if no data or all values are nullは OK を設定します。また、クエリ実行に失敗したときはアラート状態としたいので、
Alert state if execution error or timeoutは NG を設定します。
その他、アラートの名前の設定など記載し、
Save and exitをクリックして、アラートを保存します。
Google Cloud Monitoring (Google Cloud)¶
Google Cloud コンソールの「モニタリング」>「アラート」からポリシーを作成します。
「ポリシーを作成」をクリックします。
「コードエディタ(MQL または PromQL)」をクリックし、「PromQL」を選択します。
クエリ入力欄に以下のクエリを入力し、「Next」をクリックします。
100 * sum by (namespace, pod) (rate(container_cpu_usage_seconds_total{}[5m]))「トリガーの設定」にて、「Next」をクリックします。
「通知と名前」にて、アラート名を設定し、通知チャンネルを選択します。
「ポリシーを作成」をクリックして保存します。