Prometheus

Prometheus Operator のインストールと CRD、ServiceMonitor・Grafana 設定完全ガイド

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Helm チャートでのインストール手順(最新版の確認を含む)

公式リポジトリから最新の kube-prometheus-stack を取得し、カスタマイズした values.yaml と共にデプロイします。

1. リポジトリ追加とバージョン確認

上記コマンドの出力から、推奨される最新版(例: v57.2.0)をメモしておきます。

2. カスタム values.yaml の作成

values.yaml は環境ごとのリソース要件やストレージクラスに合わせて編集してください。

3. Helm インストール実行

--version オプションで確認済みのバージョンを指定すると、意図しない古いリリースがインストールされるリスクを回避できます。

CRD の役割と確認方法

Operator が管理するリソース(例: Prometheus, ServiceMonitor)はすべて CRD として Kubernetes に登録されています。CRD が未登録だと、カスタムリソース作成時にエラーが発生します。

CRD 名称の注意点

過去のドキュメントでは prometheuses.monitoring.coreos.com などが例示されましたが、実際のリリースでは 名前空間や API グループが変わることがあります。最新版の CRD 名は次のコマンドで確実に取得してください。

1. 登録済み CRD の一覧取得

代表的な CRD が表示されれば、Operator は正常に機能する状態です。

2. 個別 CRD の詳細確認(例: ServiceMonitor)

describe 出力で versions, scope, names 等を確認し、期待通りの API が有効か検証します。


Kubernetes 上のメトリクス収集コンポーネントのデプロイ

kube-state-metrics と node-exporter は Prometheus がスクレイピング対象とする代表的なエクスポーターです。本セクションでは、各コンポーネントを別々の Namespace に分離しつつ、リソース上限・要求を明示した Helm デプロイ方法を紹介します。

kube-state-metrics のデプロイと推奨リソース設定

kube-state-metrics はクラスターの状態情報(Pod、Deployment など)をメトリクスとして公開します。以下は公式 Helm チャートでのインストール例です。

リソース 推奨値
CPU limit 200 m
CPU request 100 m
Memory limit 256 Mi
Memory request 128 Mi

この設定は 中規模クラスター(ノード数 10〜30) を想定したバランスです。リソースが逼迫する場合は limits を段階的に上げてください。

node-exporter のデプロイと推奨リソース設定

node-exporter は各ノードのハードウェア指標(CPU、メモリ、ディスク I/O)を取得します。以下のコマンドで monitoring Namespace に展開します。

リソース 推奨値
CPU limit 150 m
CPU request 50 m
Memory limit 200 Mi
Memory request 100 Mi

インストール完了後、node-exporter が自動的に ServiceMonitor に登録され、Prometheus が即座にノード指標を取得できるようになります。


ServiceMonitor を活用したアプリケーションメトリクス取得

ServiceMonitor は Prometheus Operator が提供するカスタムリソースで、対象 Service のラベルだけでスクレイピング設定が完結します。本節では基本的な定義例と、複数サービスへ適用するベストプラクティスを解説します。

ServiceMonitor 定義例(labels, namespace, scrape interval)

以下は my-app Namespace にあるラベル app: my-service の Service を 30 秒間隔で取得する設定です。

kubectl apply -f service-monitor.yaml を実行すれば、Prometheus が自動的にメトリクス収集を開始します。

複数サービスへの適用パターンとベストプラクティス

パターン 特徴・留意点
共通ラベルで一括管理 全サービスに monitoring: true を付与し、1 つの ServiceMonitor が全体を対象。設定がシンプルになる代わりに、個別チューニングは難しい。
Namespace 別に個別 Monitor セキュリティや権限境界が厳しい場合に有効。各 Namespace 毎に独立した ServiceMonitor を作成し、RBAC でアクセス制御を分離できる。
scrapeInterval の調整 高トラフィック API は 15s、バッチ系は 1m 程度に設定して、Prometheus の負荷とデータ解像度のバランスを取る。

Prometheus の永続化と Alertmanager 連携

長期間のメトリクス保存や障害時の通知は、本番環境で欠かせない要素です。本章では StatefulSet と PVC による永続化、そして Alertmanager の基本設定とアラートルール を実践的に示します。

永続化ベストプラクティス(StatefulSet + PVC)

以下は Prometheus 本体を StatefulSet 化し、50 Gi の永続ボリュームを gp2 ストレージクラスで確保する例です。

  • レプリカ数は奇数(可用性とデータ整合性確保)
  • Retention は 30 日 が多くのユースケースでバランスが良い
  • ストレージクラスは IOPS とコストを比較し選択

Alertmanager 設定と基本アラートルール(CPU、Pod 異常)

Alertmanager は Helm でインストールし、alertmanager.yml に通知先(Slack, Email 等)を記述します。

アラートルール例

kubectl apply -f prometheus-rule.yaml とすれば、Alertmanager が設定された通知先へ即座にアラートを送信します。


Grafana ダッシュボードのセットアップとカスタマイズ

Grafana は可視化の中心ツールです。Helm でデプロイし、公式ダッシュボードをインポートすれば、クラスター全体の監視が瞬時に開始できます。

公式ダッシュボードインポート手順

  1. Grafana の Helm デプロイ
    bash
    helm repo add grafana https://grafana.github.io/helm-charts
    helm repo update

helm install grafana grafana/grafana \
-n monitoring --create-namespace \
--set datasources.datasource.prometheus=true \
--set datasources.datasource.url=http://prometheus-operated.monitoring.svc:9090 \
--set adminPassword=ChangeMe123

2. **Web UI にログイン**(デフォルトは
admin/ 上記パスワード)し、左メニューの **Dashboards → Import** を選択。
3. **公式ダッシュボード ID**(例:
1860
– “Kubernetes cluster monitoring”)を入力して Load
4. データソースに先ほど設定した Prometheus が自動的に割り当てられ、即座に可視化が開始します。

カスタムパネル作成と実践例(Pod 起動時間の可視化)

独自指標をダッシュボードに組み込む手順は次の通りです。

  1. PromQL クエリ作成
    promql
    histogram_quantile(0.95, sum(rate(kube_pod_start_time_seconds_bucket[5m])) by (le))
  2. パネル追加 → “Add Query” に上記クエリを貼り付け、Visualization を “Stat” に変更。単位は “seconds”。
  3. Threshold 設定(例: 95 パーセンタイルが 30 秒超えると赤表示)で異常検知を視覚化する。

このように YAML/PromQL と Grafana UI を組み合わせるだけで、ビジネス要件に合わせた柔軟なダッシュボードが構築できます。


まとめ

本記事では Prometheus Operator のインストールから CRD 確認、メトリクス収集コンポーネントのデプロイ、ServiceMonitor 活用、永続化と Alertmanager 連携、Grafana 可視化 までをステップ別に解説しました。
- Helm チャートは必ず公式リポジトリで最新バージョンを確認すること。
- CRD 名称はリリースごとに変わり得るため、kubectl get crd で実際の名前を検証してください。

これらのベストプラクティスに従えば、Kubernetes クラスタ全体のメトリクス基盤を安定かつ拡張性高く構築できるでしょう。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Prometheus