Kubernetes

KubernetesでPrometheusとAlertmanagerを導入・設定する完全ガイド

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


スポンサードリンク

全体構成のイメージ

  • Prometheuskube-state-metricsnode-exporter から指標を取得し、定義したルールに基づいて Alertmanager にアラートを送信。
  • Alertmanager は Slack と Gmail(App Password)へ通知する構成です。
  • 本ガイドでは HelmOperator (kube‑prometheus‑stack) の2パターンを示し、どちらでも同一の AlertRule と通知設定が利用できることを目指します。

Prometheus & Alertmanager のデプロイ方法比較

1. Helm Chart を使ったシンプルインストール

項目 内容
チャート prometheus-community/kube-prometheus-stack
主な利点 1 回のコマンドで Prometheus・Alertmanager・Grafana·Exporter が一括デプロイ。
カスタム値は values.yaml に記載するだけで柔軟に調整可能。
想定ユースケース PoC、テスト環境、短期間の導入が必要な場合

手順

ポイント
api_urlauth_password_file の値は環境変数または Kubernetes Secret に置き換えてください(後述のシークレット管理参照)。


2. Operator (kube‑prometheus‑stack) を用いた宣言的デプロイ

項目 内容
利点 CRD (Prometheus, Alertmanager, ServiceMonitor 等) により設定が GitOps と相性抜群。
スケールやアップグレードは CR の変更だけで完了。
想定ユースケース 本番環境、長期運用、複数クラスター間で統一された管理をしたい場合

手順

ポイント
configSecret に格納した Alertmanager の設定は、次章で作成する Kubernetes Secret (alertmanager-config) と同一です。


必要エクスポーター

kube‑state‑metrics

Operator を利用している場合は自動で次の ServiceMonitor が生成されます。手動で作成したいときは以下を参考にしてください。

node‑exporter

同様に ServiceMonitor が自動生成されます。


実務で使えるアラートルール例

以下は GitOps 用に ConfigMap に格納し、Prometheus の rule_files: から参照させる形を想定しています。

適用例(Helm ディレクトリ構成)


通知先設定

1. Slack Webhook

Slack の Incoming Webhooks を利用します。Webhook URL は機密情報なので、以下のように Secret に格納し、Alertmanager 設定ではファイル参照にします。

ポイント
api_url_file は Alertmanager が 0.22 以降でサポートする「ファイルから読み込む」方式です。これにより Secret のマウントだけで済み、設定ファイル自体に URL がハードコーディングされません。


2. Gmail(App Password)によるメール通知

2022 年以降、Google は「安全性の低いアプリ」の認証を廃止しました。そのため SMTP 認証には App Password(2段階認証が有効な Google アカウントで作成)か、OAuth2 の代替手段を利用する必要があります。

手順

  1. Google アカウントで 2FA を有効化
  2. App Password を生成(例: alertmanager-smtp
  3. 以下の Secret に保存

  1. Alertmanager 設定にファイル参照で組み込む

代替策
社内のメールサーバや SendGrid、Mailgun など外部 SMTP プロバイダーを使用する場合は同様に Secret に認証情報を格納し、smarthost を変更してください。


シークレット管理のベストプラクティス

1. Kubernetes Secret の基本作成フロー

注意
- type: Opaque がデフォルトです。
- kubectl get secret ... -o yaml で出力した場合は Base64 エンコードされますが、実際の内容は暗号化されていません。クラスター自体に Encryption at Rest(KMS 連携)を有効化してください。

2. 外部シークレットマネージャーとの統合例

以下は External Secrets Operator を利用し、AWS Secrets Manager に保存した認証情報を K8s Secret として自動同期する構成です。

利点

項目 内容
ローテーション 外部ストアでパスワードを更新すれば、K8s 側は自動的にリフレッシュ。
監査・アクセス制御 IAM ポリシーや Cloud KMS による細粒度の権限管理が可能。
暗号化 シークレットは保存時に AWS KMS で暗号化され、K8s 側では暗号化された状態で保持(Encryption at Rest が必須)。

参考:External Secrets Operator の公式ドキュメント https://external-secrets.io/

3. Secret をマウントする Pod 定義例


Grafana での可視化と運用上のポイント

1. Grafana のインストール(Helm)

2. データソースとダッシュボードの設定

手順 操作
データソース追加 Grafana UI → ConfigurationData SourcesAdd data sourcePrometheus。URL に http://prometheus-operated.monitoring.svc:9090 を指定。
公式ダッシュボードインポート CreateImport → ID に 3662(Kubernetes cluster monitoring)を入力し、先ほど作成した Prometheus データソースを選択。
Alert List パネル ダッシュボードに「Alert List」パネルを追加し、alertmanager_url: http://alertmanager-main.monitoring.svc:9093 を設定すれば、現在のアラートが一覧表示されます。

ヒント:Grafana の Provisioning 機能で values.yaml にダッシュボード JSON とデータソース定義を組み込めば、GitOps で完全自動化できます。

3. 運用ベストプラクティス

項目 推奨設定
Silence(一時停止) UI だけでなく /api/v2/silences を使った自動化(例: メンテナンスウィンドウのスクリプト)。
HA構成 replicas: 2 以上に設定し、StatefulSet + PVC による永続化。Alertmanager のフラグ --retention.time=120h で保存期間を制御。
ルールのバージョン管理 alert_rules.yml を Git リポジトリで管理し、Argo CD / Flux が ConfigMap に反映させる。PR ベースのレビューで変更ミスを防止。
ロギング & メトリクス Alertmanager の内部メトリクス (alertmanager_notifications_total など) を Prometheus で取得し、AlertmanagerDown アラートも設定すると監視が完結する。

付録 – 参考文献・リンク集

項目 URL
Prometheus Community Helm Chart https://github.com/prometheus-community/helm-charts
kube‑prometheus‑stack Operator(GitHub) https://github.com/prometheus-operator/kube-prometheus
Sysdig 公式ガイド – Prometheus と Alertmanager のベストプラクティス https://sysdig.com/blog/kubernetes-monitoring-with-prometheus/
Nutanix Docs – Kubernetes 上のメール通知設定(Gmail に関する記載あり) https://www.nutanix.com/docs/k8s/monitoring
Google Workspace – App Password の作成手順 https://support.google.com/accounts/answer/185833?hl=ja
External Secrets Operator https://external-secrets.io/
Grafana Dashboard ID 3662 https://grafana.com/grafana/dashboards/3662

上記リンクは執筆時点の最新情報です。利用前に公式サイトで内容が変更されていないか必ず確認してください。


まとめ

  • HelmOperator のどちらでも、同一のアラートルールと通知設定をコードとして管理できる。
  • Slack・Gmail への通知は Secret に格納した機密情報をファイル参照させることで、設定ファイルに平文が残らない安全な構成になる。
  • Gmail の SMTP 利用は App Password が必須であり、従来の「安全性の低いアプリ」方式は利用できないことを留意。
  • シークレット管理は Kubernetes Secret に加え、外部シークレットマネージャー(AWS Secrets Manager など)と連携させることで ローテーション・監査 を自動化できる。
  • Grafana と Alertmanager の UI を組み合わせれば、アラートの可視化・一時停止・履歴確認がシームレスに行える。

このガイドをベースに GitOps パイプライン(Argo CD / Flux)へ取り込み、コードレビューと自動デプロイで運用品質を高めてください。 🚀

スポンサードリンク

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


-Kubernetes