このページでは、GDCV for Bare Metal クラスタのアラート ポリシーを作成する方法について説明します。
準備
アラート ポリシーを作成するには、次の権限が必要です。
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.update
次のいずれかのロールがある場合、これらの権限が付与されます。
monitoring.alertPolicyEditor
monitoring.editor
- プロジェクト編集者
- プロジェクト所有者
ロールを確認するには、Google Cloud コンソールの [IAM] ページに移動します。
サンプル ポリシーの作成: API サーバーを利用できない
この演習では、クラスタの Kubernetes API サーバー用のアラート ポリシーを作成します。このポリシーを設定すると、クラスタの API サーバーが使用不可になるたびに通知を受け取るように調整できます。
ポリシー構成ファイル apiserver-unavailable.json をダウンロードします。
ポリシーを作成するには:
gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
POLICY_CONFIG は、ダウンロードした構成ファイルのパスに置き換えます。
アラート ポリシーを表示するには:
Console
Google Cloud Console で、[モニタリング] ページに移動します。
左側にある [アラート] を選択します。
[Policies] に、アラート ポリシーのリストが表示されます。
リストで [Anthos クラスタの API サーバーを利用できない(重大)] を選択して、新しいポリシーの詳細を確認します。[Conditions] に、ポリシーの説明が表示されます。例:
Policy violates when ANY condition is met Anthos cluster API server uptime is absent for 5m
gcloud
gcloud alpha monitoring policies list
出力に、ポリシーの詳細情報が表示されます。例:
combiner: OR conditions: - conditionAbsent: aggregations: - alignmentPeriod: 60s crossSeriesReducer: REDUCE_MEAN groupByFields: - resource.label.project_id - resource.label.location - resource.label.cluster_name - resource.label.namespace_name - resource.label.container_name - resource.label.pod_name perSeriesAligner: ALIGN_MAX duration: 300s filter: resource.type = "k8s_container" AND metric.type = "kubernetes.io/anthos/container/uptime" AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver") trigger: count: 1 displayName: Anthos cluster API server uptime is absent for 5m name: projects/…/alertPolicies/…/conditions/… displayName: Anthos cluster API server unavailable (critical) enabled: true mutationRecord: mutateTime: … mutatedBy: … name: projects/…/alertPolicies/…
アラート ポリシーの追加作成
このセクションでは、推奨される一連のアラート ポリシーの説明と構成ファイルについて説明します。
ポリシーを作成するには、上の演習と同じ手順を行います。
構成ファイルをダウンロードするには、右側の列のリンクをクリックします。
必要に応じて、特定のニーズに合わせて条件を調整します。たとえば、クラスタのサブセットにフィルタを追加できます。また、ノイズと重要度のバランスを取るためにしきい値を調整することもできます。
ポリシーを作成するには、
gcloud alpha monitoring policies create
を実行します。
次のスクリプトを使用して、このドキュメントで説明しているすべてのアラート ポリシー サンプルをダウンロードしてインストールできます。
# 1. Create a directory named alert_samples:
mkdir alert_samples && cd alert_samples
declare -a alerts=("apiserver-unavailable.json" "controller-manager-unavailable.json" "scheduler-unavailable.json" \
"pod-crash-looping.json" "pod-not-ready-1h.json" "container-cpu-usage-high-reaching-limit.json" \
"container-memory-usage-high-reaching-limit.json" "persistent-volume-usage-high.json" "node-cpu-usage-high.json" \
"node-disk-usage-high.json" "node-memory-usage-high.json" "node-not-ready-1h.json" "apiserver-error-ratio-high.json" \
"etcd-leader-changes-or-proposal-failures-frequent.json" "etcd-server-not-in-quorum.yaml" "etcd-storage-usage-high.json")
# 2. Download all alert samples into the alert_samples/ directory:
for x in "${alerts[@]}"
do
wget https://cloud.google.com/anthos/clusters/docs/bare-metal/1.16/samples/${x}
done
# 3. (optional) Uncomment and provide your project ID to set the default project
# for gcloud commands:
# gcloud config set project <PROJECT_ID>
# 4. Create alert policies for each of the downloaded samples:
for x in "${alerts[@]}"
do
gcloud alpha monitoring policies create --policy-from-file=${x}
done
コントロール プレーン コンポーネントの可用性
アラート名 | 説明 | Cloud Monitoring でのアラート ポリシーの定義 |
---|---|---|
API サーバーを利用できない(重大) | API サーバーの稼働時間指標を利用できない | apiserver-unavailable.json |
スケジューラを利用できない(重大) | スケジューラの稼働時間指標を利用できない | scheduler-unavailable.json |
コントローラ マネージャーを利用できない(重大) | コントローラ マネージャーの稼働時間指標を利用できない | controller-manager-unavailable.json |
Kubernetes システム
アラート名 | 説明 | Cloud Monitoring でのアラート ポリシーの定義 |
---|---|---|
Pod のクラッシュ ループ(警告) | Pod が再起動を繰り返し、クラッシュ ループ状態になっている可能性がある | pod-crash-looping.json |
Pod が 1 時間以上準備ができていない状態である(重大) | Pod の準備ができていない状態が 1 時間以上続いています | pod-not-ready-1h.json |
コンテナの CPU 使用率が 80% を超えている(警告) | コンテナの CPU 使用率が上限の 80% を超えている | container-cpu-usage-high-reaching-limit.json |
コンテナのメモリ使用量が 85% を超えている(警告) | コンテナのメモリ使用量が上限の 85% を超えている | container-memory-usage-high-reaching-limit.json |
永続ボリュームの使用率が高い(重大) | 申請済みの永続ボリュームの空き容量が 3% 未満 | persistent-volume-usage-high.json |
ノードの CPU 使用率が 80% を超えている(警告) | ノードの CPU 使用率が 5 分間に割り当て可能な合計の 80% を超えている | node-cpu-usage-high.json |
ノードのディスク使用量が 85% を超えている(警告) | ディスク マウント ポイントごとに 10 分間、15% 未満は無料 | node-disk-usage-high.json |
ノードのメモリ使用量が 80% を超えている(警告) | ノードのメモリ使用量が 5 分間で割り当て可能な合計の 80% を超えている | node-memory-usage-high.json |
ノードが 1 時間以上準備ができていない状態である(重大) | ノードの準備ができていない状態が 1 時間以上続いています | node-not-ready-1h.json |
Kubernetes パフォーマンス
アラート名 | 説明 | Cloud Monitoring でのアラート ポリシーの定義 |
---|---|---|
API サーバーエラー率が 20% を超えている(重大) | API サーバーが、15 分間で動詞ごとのすべてのリクエストの 20% 以上に対して 5xx エラーまたは 429 エラーを返す | apiserver-error-ratio-high.json |
ETCD リーダーの変更またはプロポーザルの失敗の頻度が高すぎる(警告) | etcd リーダーの変更またはプロポーザルの失敗が頻繁に発生する |
etcd-leader-changes-or-proposal-failures-frequent.json |
ETCD サーバーがクォーラムに存在しない(重大) | etcd サーバーのプロポーザルが 5 分間 commit されないため、クォーラムを失った可能性がある |
etcd-server-not-in-quorum.yaml |
ETCD ストレージが 90% の上限を超えている(警告) | etcd のストレージ使用量が上限の 90% を超えている |
etcd-storage-usage-high.json |
PromQL によるアラート ポリシー
アラート ポリシー内のクエリは、MQL ではなく PromQL で表現することもできます。たとえば、API server error ratio exceeds 20
percent (critical)
ポリシーの PromQL バージョンをダウンロードできます(apiserver-error-ratio-high-promql.json)。
詳細については、GDCV for Bare Metal のドキュメントの Managed Service for Prometheus を使用する、および Cloud Monitoring のドキュメントの PromQL によるアラート ポリシーをご覧ください。
通知の取得
アラート ポリシーを作成すると、ポリシーに 1 つ以上の通知チャンネルを定義できます。通知チャンネルには、複数の種類があります。たとえば、メール、Slack チャンネル、モバイルアプリから通知を受け取れます。チャンネルは、ニーズに合わせて選択できます。
通知チャンネルを構成する方法については、通知チャンネルの管理をご覧ください。