概要
Kubernetesの代表的なオブザーバビリティツールとしてPrometheusとGrafanaがあります。
KubernetesにPrometheusとGrafanaをインストールしてみます。
前提条件
- Kubernetesクラスタが構築済みであること
環境、バージョン
自宅のRaspberry Pi 3台(コントロールプレーン×1、ワーカーノード×2)で構築したKubernetesクラスタで行いました。
(以下3台とも共通)
- Raspberry Pi 5 (8GB)、Ubuntu 24.04 LTS
- Kubernetes:1.33.1
手順
kubectlが実行できる端末から行います。
1. Helmのインストール
PrometheusやGrafanaのインストールにHelmを利用するため、まずHelmのインストールを行います。
Helmとは、Kubernetesで利用されるパッケージマネージャです。
HelmにおけるパッケージのことをHelmチャートと呼びます。
公式ドキュメントに従ってHelmをインストールします。
今回はスクリプトからインストールします。
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
$ helm version
version.BuildInfo{Version:"v3.19.0", GitCommit:"3d8990f0836691f0229297773f3524598f46bda6", GitTreeState:"clean", GoVersion:"go1.24.7"}
2. Helmリポジトリの追加
Helmがインストールできたら、リポジトリを追加します。
今回はHelmチャートとしてkube-prometheus-stackをインストールするため、以下のリポジトリを追加します。
追加するリポジトリはこちらに記載があります。
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm repo update
$ helm repo list
NAME URL
prometheus-community https://prometheus-community.github.io/helm-charts
3. namespaceの作成
Kubernetes上にPrometheusやGrafana用のnamespaceを作成します。
$ kubectl create ns monitoring
$ kubectl get ns monitoring
NAME STATUS AGE
monitoring Active 10s
4. kube-prometheus-stackのインストール
Helmを使ってkube-prometheus-stackをインストールします。
$ helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring
NAME: kube-prometheus-stack
LAST DEPLOYED: Thu Oct 16 00:43:38 2025
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
NOTES:
kube-prometheus-stack has been installed. Check its status by running:
kubectl --namespace monitoring get pods -l "release=kube-prometheus-stack"
Get Grafana 'admin' user password by running:
kubectl --namespace monitoring get secrets kube-prometheus-stack-grafana -o jsonpath="{.data.admin-password}" | base64 -d ; echo
Access Grafana local instance:
export POD_NAME=$(kubectl --namespace monitoring get pod -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=kube-prometheus-stack" -oname)
kubectl --namespace monitoring port-forward $POD_NAME 3000
Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.
上記の出力内容は後ほど使います。
$ helm list -n monitoring
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kube-prometheus-stack monitoring 1 2025-10-16 00:43:38.987501625 +0900 JST deployed kube-prometheus-stack-77.6.2 v0.85.0
$ kubectl get pods -n monitoring
NAME READY STATUS RESTARTS AGE
alertmanager-kube-prometheus-stack-alertmanager-0 2/2 Running 0 33s
kube-prometheus-stack-grafana-858b74f9bb-plspc 3/3 Running 0 35s
kube-prometheus-stack-kube-state-metrics-557fd457c6-hwmgg 1/1 Running 0 35s
kube-prometheus-stack-operator-87dcf6cc5-2824n 1/1 Running 0 35s
kube-prometheus-stack-prometheus-node-exporter-6mnpg 1/1 Running 0 35s
kube-prometheus-stack-prometheus-node-exporter-cqgg9 1/1 Running 0 35s
kube-prometheus-stack-prometheus-node-exporter-lq5w2 1/1 Running 0 35s
prometheus-kube-prometheus-stack-prometheus-0 2/2 Running 0 33s
$ kubectl get svc -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 40s
kube-prometheus-stack-alertmanager ClusterIP 10.106.37.177 <none> 9093/TCP,8080/TCP 41s
kube-prometheus-stack-grafana ClusterIP 10.99.247.154 <none> 80/TCP 41s
kube-prometheus-stack-kube-state-metrics ClusterIP 10.97.0.52 <none> 8080/TCP 41s
kube-prometheus-stack-operator ClusterIP 10.111.23.25 <none> 443/TCP 41s
kube-prometheus-stack-prometheus ClusterIP 10.101.157.229 <none> 9090/TCP,8080/TCP 41s
kube-prometheus-stack-prometheus-node-exporter ClusterIP 10.97.171.98 <none> 9100/TCP 41s
prometheus-operated ClusterIP None <none> 9090/TCP 39s
PrometheusとGrafanaがインストールできました。
kube-prometheus-stackには他にもNode ExporterやAlertmanagerも含まれるのでそれらのPodやServiceも確認できます。
5. Grafanaにログイン
GrafanaのGUI画面にログインしてみます。
GrafanaのServiceはkube-prometheus-stack-grafanaですがTYPEがClusterIPなので、外部からアクセスできるようポートフォワードします。
$ kubectl -n monitoring port-forward svc/kube-prometheus-stack-grafana 3000:80
上記コマンドを実行したままの状態で、ブラウザから http://localhost:3000 にアクセスするとログイン画面が表示されます。

ログイン情報はhelm installの際の出力に記載されています。
Get Grafana 'admin' user password by running:
kubectl --namespace monitoring get secrets kube-prometheus-stack-grafana -o jsonpath="{.data.admin-password}" | base64 -d ; echo
このコマンドを実行するとadminユーザのパスワードが得られます。
$ kubectl --namespace monitoring get secrets kube-prometheus-stack-grafana -o jsonpath="{.data.admin-password}" | base64 -d ; echo
prom-operator
まとめ
Helmを使ってPrometheus、GrafanaをKubernetesにインストールし、オブザーバビリティ環境を構築しました。
今後はPrometheusやGrafanaの機能を試してみてオブザーバビリティに関する理解を深めたいと思います。
お読みいただきありがとうございました。
