Prometheus

KubernetesでPrometheusを使うメリットとServiceMonitorの導入方法

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

Kubernetes環境におけるPrometheusによるメトリクス監視の重要性

Kubernetes環境では、動的な運用特性によりリアルタイムな監視が不可欠です。アプリケーションやインフラの状態を即座に把握できないと、障害発生時の対応遅延やリソース不足によるパフォーマンス低下が生じます。この課題を解決するため、Prometheusによるメトリクス取得は運用安定性の軸となる技術です。特にServiceMonitorリソースは、自動発見機能によってスケール性と保守負荷の削減を実現します。

リアルタイムモニタリングの必要性

Kubernetesクラスター内には、Podの起動・停止やサービスの再配置が頻繁に発生します。この変化に対応するため、メトリクス取得は秒単位での精度が求められます。リアルタイムなデータ収集により、異常検知や自動修正(例:Horizontal Pod Autoscaler)が可能となり、システムの信頼性向上につながります。

ServiceMonitorの導入意義

従来の手動設定では、各サービスのエンドポイントを個別に記述する必要がありますが、ServiceMonitorリソースはKubernetesのラベルセレクタで自動的に監視対象を検出します。これにより、新しいサービスを追加した際の設定作業が不要となり、運用効率が格段に向上します。


Prometheus Operatorによるシンプルなデプロイ手順

Prometheus Operatorは、Kubernetes環境でのPrometheus導入を効率化するツールです。公式ドキュメントに基づいた手順でインストールすることで、安定した監視環境構築が可能です。

Helmチャートでのインストール例

Helmを使用してOperatorを展開する際のコマンドは以下の通りです。

  1. HelmリポジトリにOperatorを追加: helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
  2. リリースを作成: helm install prometheus-operator prometheus-community/kube-prometheus-stack --namespace monitoring --create-namespace

この手順で、Prometheusサーバー、Grafana、Alertmanagerが自動的にデプロイされます。

Operatorの基本構成確認

インストール後は、以下をチェックします:

項目 確認方法 補足
Prometheus Pod状態 kubectl get pods -n monitoring セルフホスティング環境でも起動していることを確認
ServiceMonitorの有無 kubectl get servicemonitors -A デフォルトではkube-systemにkub-state-metricsが存在
マッピングされたサービス kubectl describe prometheus -n monitoring <prometheus-name> ScrapeTargetで検出されているかを確認

ServiceMonitorリソースでメトリクス収集を自動化する

ServiceMonitorは、Kubernetesサービスのラベルに従って自動的に監視対象を特定します。設定ファイルを作成し、/metricsエンドポイントが正しく取得できることを確認しましょう。

ServiceMonitorのYAML構文解説

以下はSampleApp用ServiceMonitorの例です:

この設定により、default名前空間でapp.kubernetes.io/name=sample-appというラベルを持つサービスが監視されます。

/metricsエンドポイントの確認手順

ServiceMonitorが正しく動作しているかを確認するには、以下を実施します:

  1. サービスにアクセス可能か確認: kubectl get service sample-app -n default
  2. /metricsエンドポイントからデータ取得テスト:
    bash
    curl http://<service-ip>:<port>/metrics

  3. Prometheusが取得しているか確認:
    bash
    kubectl port-forward svc/prometheus-k8s -n monitoring 9090

    ブラウザでhttp://localhost:9090/targetsを開き、ステータスが「UP」になっていることを確認します。


kub-state-metricsの導入とKubernetes特有メトリクス取得

kub-state-metricsは、Kubernetesクラスター内で発生する状態変化を監視するためのメトリクスを提供します。これにより、NodeやPodのライフサイクルに関する詳細な情報を収集できます。

Operatorを通じたkub-state-metricsの展開

Prometheus Operatorは、kub-state-metricsを自動でデプロイします。以下のコマンドで確認できます:

出力例: kub-state-metrics-5684df97d8-2qjkl

Node/POD状態監視の具体例

kub-state-metricsは、以下のメトリクスを提供します:

メトリクス名 説明 使用例
kube_pod_status_phase{phase="Running"} 実行中のPod数 アプリケーションの可用性確認に利用
kube_node_status_capacity{resource="cpu"} ノードのCPU容量 クラスター全体のリソース管理に活用
kube_pod_container_status_restarts_total コンテナの再起動回数 アプリケーションの安定性を評価する指標

ServiceMonitorでこれらのメトリクスを収集する際は、以下のように設定します:


Grafanaとの連携による可視化環境構築

GrafanaとPrometheusの組み合わせで、メトリクスデータを直感的なグラフやダッシュボードで可視化できます。以下に設定手順とテンプレート適用方法を解説します。

Prometheusデータソースの登録

GrafanaのUIからPrometheusを接続する手順:

  1. Grafanaの「Data Sources」セクションへアクセスします。
  2. 「Add data source」→「Prometheus」を選択し、URLにhttp://prometheus-k8s.monitoring.svc.cluster.local:9090を入力します。
  3. テストボタンで接続確認を実施し、「Save & Test」をクリックします。

ダッシュボードテンプレートの適用

公式リポジトリからデフォルトダッシュボードをインポートするには:

  1. Grafanaの「+ Create」→「Import」を選択します。
  2. 「Paste JSON or GraphQL Query」に、以下のようなJSONを貼り付けます:
    json
    {
    "dashboard": {
    "title": "Kubernetes Cluster Monitoring",
    "panels": [...]
    }
    }

  3. ダッシュボードが表示されれば完了です。

PromQLの基本構文例:


メトリクス収集におけるベストプラクティス

効率的なメトリクス運用には、設計やセキュリティ設定に配慮が必要です。以下のポイントを意識することで、長期的な運用がスムーズになります。

ラベル設計の注意点

ラベルはメトリクスをフィルタリングする際の鍵ですが、以下のガイドラインに従いましょう:

  • 一意性: appenvなどのラベルを統一して使用します。
  • 冗長性回避: 既存のKubernetesメタデータ(例:namespace)を利用し、余計なラベルは避けます。
  • 階層構造: app=web, tier=frontendなど、階層的なラベリングを心がけます。

パフォーマンス最適化

メトリクス収集の負荷を抑えるためには以下を意識:

**「ScrapeInterval」の最適値は20秒〜1分程度に設定するのが一般的です。」

  • レプリケーション設定で、Prometheusのフェールオーバー対応を強化します。
  • TLS証明書を使用して通信を暗号化し、Basic Authでのアクセス制限も検討します。

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Prometheus