このチュートリアルでは、オープンソースの Prometheus を使用して、Google Kubernetes Engine(GKE)にデプロイされたアプリケーションのマイクロサービスに livenessProbe を設定する方法について説明します。
このチュートリアルでは、オープンソースの Prometheus を使用します。ただし、各 GKE Autopilot クラスタは、Prometheus 指標向けのGoogle Cloudのフルマネージド、マルチクラウド、クロスプロジェクト ソリューションである Managed Service for Prometheus を自動的にデプロイします。Google Cloud Managed Service for Prometheus により、Prometheus を大規模に手動で管理、運用しなくても、Prometheus を使用してワークロードのモニタリングや、アラートの送信を行うことができます。
Grafana などのオープンソース ツールを使用して、Prometheus によって収集された指標を可視化することもできます。
環境を準備する
このチュートリアルでは、Cloud Shell を使用してGoogle Cloudでホストされているリソースを管理します。
デフォルトの環境変数を設定します。
gcloud config set project PROJECT_ID gcloud config set compute/region CONTROL_PLANE_LOCATION
次のように置き換えます。
このチュートリアルで使用するサンプル リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git cd bank-of-anthos/
クラスタを作成します。
gcloud container clusters create-auto CLUSTER_NAME \ --release-channel=CHANNEL_NAME \ --location=CONTROL_PLANE_LOCATION
次のように置き換えます。
CLUSTER_NAME
: 新しいクラスタの名前。CHANNEL_NAME
: リリース チャンネルの名前。
Prometheus をデプロイする
サンプル Helm チャートを使用して Prometheus をインストールします。
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install tutorial bitnami/kube-prometheus \
--version 8.2.2 \
--values extras/prometheus/oss/values.yaml \
--wait
このコマンドを実行すると、Prometheus が次のコンポーネントとともにインストールされます。
- Prometheus Operator: オープンソースの Prometheus をデプロイ、構成します。
- Alertmanager: Prometheus サーバーから送信されたアラートを処理し、それらを Slack などのアプリケーションにルーティングします。
- ブラックボックス エクスポータ: HTTP、HTTPS、DNS、TCP、ICMP、gRPC を使用して Prometheus にエンドポイントをプローブさせます。
Bank of Anthos のデプロイ
Bank of Anthos サンプル アプリケーションをデプロイします。
kubectl apply -f extras/jwt/jwt-secret.yaml
kubectl apply -f kubernetes-manifests
Slack 通知
Slack 通知を設定するには、Slack アプリケーションを作成し、アプリケーションの着信 Webhook を有効にして、Slack ワークスペースにアプリケーションをインストールする必要があります。
Slack アプリケーションの作成
メールアドレスで登録するか、またはワークスペース管理者から送信された招待状を利用して、Slack ワークスペースに参加します。
ワークスペース名と Slack アカウントの認証情報を使用して、Slack にログインします。
-
- [Create an app] ダイアログで [From scratch] をクリックします。
- アプリ名を指定し、Slack ワークスペースを選択します。
- [Create App] をクリックします。
- [Add Features and Features] で、[Incoming Webhooks] をクリックします。
- [Activate Incoming Webhooks] の切り替えボタンをクリックします。
- [Webhook URLs for Your Workspace] セクションで、[Add New Webhook to Workspace] をクリックします。
- 表示された認証ページで、通知を受け取るチャネルを選択します。
- [許可] をクリックします。
- [Webhook URLs for Your Workspace] セクションに Slack アプリケーションの Webhook が表示されます。後で使用できるように、URL を保存します。
Alertmanager を構成する
Webhook URL を格納する Kubernetes Secret を作成します。
kubectl create secret generic alertmanager-slack-webhook --from-literal webhookURL=SLACK_WEBHOOK_URL
kubectl apply -f extras/prometheus/oss/alertmanagerconfig.yaml
SLACK_WEBHOOK_URL
は、前のセクションの Webhook の URL に置き換えます。
Prometheus を構成する
次のマニフェストを確認します。
このマニフェストでは、Prometheus livenessProbe を記述しています。次のフィールドを使用しています。
spec.jobName
: スクレイピングされた指標に割り当てられたジョブ名。spec.prober.url
: ブラックボックス エクスポータのサービス URL。これには、Helm チャートで定義されているブラックボックス エクスポータのデフォルト ポートが含まれます。spec.prober.path
: 指標収集のパス。spec.targets.staticConfig.labels
: ターゲットからスクレイピングされたすべての指標に割り当てられたラベル。spec.targets.staticConfig.static
: プローブするホストのリスト。
マニフェストをクラスタに適用します。
kubectl apply -f extras/prometheus/oss/probes.yaml
次のマニフェストを確認します。
このマニフェストでは
PrometheusRule
を記述しています。次のフィールドを使用しています。spec.groups.[*].name
: ルールグループの名前。spec.groups.[*].interval
: グループ内のルールが評価される頻度。spec.groups.[*].rules[*].alert
: アラートの名前。spec.groups.[*].rules[*].expr
: 評価する PromQL 式。spec.groups.[*].rules[*].for
: アラートを発生させるまでの時間。spec.groups.[*].rules[*].annotations
: 各アラートに追加するアノテーションのリスト。これはアラートルールでのみ有効です。spec.groups.[*].rules[*].labels
: 追加または上書きするラベル。
マニフェストをクラスタに適用します。
kubectl apply -f extras/prometheus/oss/rules.yaml
停止のシミュレーションを行う
contacts
Deployment をゼロにスケーリングして、停止をシミュレートします。kubectl scale deployment contacts --replicas 0
Slack ワークスペース チャンネルに通知メッセージが表示されます。GKE が Deployment をスケーリングするまでに 5 分ほどかかることがあります。
contacts
Deployment を復元します。kubectl scale deployment contacts --replicas 1
Slack ワークスペース チャンネルにアラート解決通知メッセージが表示されます。GKE が Deployment をスケーリングするまでに 5 分ほどかかることがあります。