Prometheus

Kubernetes監視で使えるPrometheusとGrafanaの役割と連携方法

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

Kubernetes監視の重要性とPrometheus・Grafanaの役割

Kubernetesクラスタの監視は、動的かつスケーラブルな環境において不可欠です。コンテナの起動/停止やリソース配分が頻繁に変化するため、リアルタイムでメトリクスを収集・可視化することが問題発見とパフォーマンス改善の鍵となります。Prometheusメトリクスの収集に特化し、Grafanaはそのデータをグラフやダッシュボードで可視化するツールとして機能します。両者の連携がKubernetes監視基盤の中心です。


Kubernetesクラスタの監視が必要な理由

Kubernetesクラスタの監視は、動的な運用環境における問題発見と安定運用を支えるために不可欠です。以下の3つの理由から重要となります。

  1. 動的環境の不安定性: Podの再起動やスケーリングが頻発し、手動で状態を把握できない
  2. リソース枯渇のリスク: CPUやメモリの使用率がリアルタイムで変化するため、監視なしでは異常検知が困難
  3. 運用コストの最適化: 無駄なリソース消費を抑えるためにも継続的な状態監視が必要

Kubernetesの設計思想は「自律性」と「高可用性」ですが、その背後にあるインフラの健康診断がなければ安定した運用は成立しません。


メトリクス収集と可視化の違いを理解する

以下にPrometheusとGrafanaの役割分担を比較します。

項目 Prometheus Grafana
主な機能 タイムシリーズデータの収集・保存 メトリクスの可視化・ダッシュボード作成
対応ソース Kubernetes、Node Exporterなど Prometheus、InfluxDBなど
設定の難易度 高(スクレイピング設定が必要) 中〜低(テンプレート使用可)
最適な用途 リアルタイム監視・アラート発火 データの見やすさ重視の分析・レポート

:
Prometheusは/metricsエンドポイントからメトリクスを取得し、Grafanaではそのデータをグラフ化して「CPU使用率が90%を超えた場合」を赤く表示するなど、運用者にとって直感的な可視化を行います。


PrometheusとGrafanaの連携方法

Kubernetes環境でPrometheusとGrafanaを連携させるには、「サービスディスカバリ」と「エクスポーター」の理解が不可欠です。両ツールはKubernetes API経由で自動的に監視対象を検出できます。


サービスディスカバリの仕組み

サービスディスカバリとは、PrometheusがKubernetes APIから動的にサービスやPodの情報を取得し、監視対象に自動登録する機能です。

  1. Kubernetes APIとの連携:
    Prometheusは/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointsを定期的にスキャンし、新規Podやサービスの登録を検出します。

  2. ラベルフィルタリングの活用:
    app=my-appのようにPodに設定されたラベルを使って特定のリソースのみを監視対象とすることで、不要なメトリクスの収集を防ぎます。

例: scrape_configs:で以下の設定を行うことで、my-label=productionのPodのみを監視できます。


エクスポーターの役割と設定

エクスポーターは、監視対象(例:Node、DB)からメトリクスを収集し、Prometheusが読み取れる形式で提供するツールです。

  • Node Exporter: Nodeのハードウェアリソース(CPU、メモリ)を監視
  • Kube-state-metrics: Kubernetesクラスタ内リソース(Pod、Namespace)の状態を監視

設定手順の例:

  1. 各エクスポーターをKubernetesクラスタにデプロイ
  2. Prometheusのscrape_configsでエクスポーターサービスを指定
  3. GrafanaにPrometheusデータソースを追加し、ダッシュボードを作成

Helmチャートによるインストール手順

HelmはKubernetesリソースのテンプレート化・デプロイを簡略化するツールで、PrometheusやGrafanaの導入にも最適です。以下に簡単な手順を示します。


Prometheus Operatorの導入

  1. Helmリポジトリを追加:
    bash
    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

  2. Operatorをインストール(最新バージョンv14.0.0推奨):
    bash
    helm install prometheus-operator prometheus-community/prometheus-operator --namespace monitoring --create-namespace

Prometheus Operatorは、Prometheus ServerとGrafanaのデプロイを自動化し、スケジューリングや監視設定も簡単に行えます。


Grafanaのダッシュボード設定

インストール後、Grafanaにアクセスして以下を行います:

  1. データソース追加:
  2. メニューからConfiguration > Data Sourcesを選択
  3. Add data sourcePrometheusを選び、URLをDNS名やLoadBalancer経由で設定する(例: http://<prometheus-service-name>.svc.cluster.local:9090

  4. ダッシュボード作成:

  5. メニューからCreate > Dashboardを選択
  6. 新規グラフを作成し、Add QueryでPromQLを入力(例: rate(container_cpu_usage_seconds_total[5m])

アラート設定のベストプラクティス

メトリクスに基づいたアラートは、クラスタの健康状態を維持するための核です。以下のステップで構築します。


Prometheusルールファイルの作成

  1. ルール定義ファイル(例: alert-rules.yml)を作成:
    yaml
    groups:

    • name: example
      rules:

      • alert: HighCPUUsage
        expr: (avg by (instance) (container_cpu_usage_seconds_total{job="kubernetes-pods"}) / on(instance) group_by(1, max(container_spec_cpu_requests)) > 0.8)
        for: 5m
        labels:
        severity: warning
        annotations:
        summary: "{{ $labels.instance }}のCPU使用率が高めです"
  2. Prometheusにルールを反映:

  3. prometheus-operated ConfigMapに上記ファイルを配置

Grafanaでの通知連携

Grafanaで通知を設定するには、以下を行います:

  1. 通知チャンネルの作成:
  2. メニューからConfiguration > Alerting > ChannelsAdd channel
  3. Slackやメールなどの通知先を選択し、APIキーなどを入力

  4. アラートルールへの連携:

  5. ダッシュボード内のグラフでEditAlertタブを開く
  6. 通知チャンネルを指定し、アラート条件を設定

サービスディスカバリ機能の動作原理

PrometheusはKubernetes APIを通じて、クラスタ内リソースを自動検出します。この仕組みが「サービスディスカバリ」です。


Kubernetes APIとの連携

Prometheusは定期的にKubernetes APIから以下の情報を取得します:

  • サービス(Service)のリスト
  • Podのリストとラベル情報
  • EndpointsのIPアドレスやポート番号

この情報を使って、scrape_configsに登録されたターゲットを動的に更新します。


ラベルフィルタリングの活用

Prometheusは__meta_kubernetes_pod_label_<label>というメタデータでPodのラベルを取得でき、それをもとに監視対象を選別できます。

: my-label=productionのPodのみを監視する設定:


まとめ

  • Prometheusはメトリクスの収集・保存、Grafanaはデータの可視化とアラート通知に特化している
  • Helmチャートを使用することで、PrometheusとGrafanaのインストールが簡単かつ保守性が高い
  • アラートルールは、メトリクスの傾向を見ながら閾値を設定し、Slackやメールで通知できる
  • サービスディスカバリ機能により、Kubernetesクラスタ内リソースを自動検出できる

本記事を参考に、Kubernetesクラスタの監視体制構築を始めてみましょう

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Prometheus