0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

KubernetesにPrometheus+Grafanaをインストールする

Posted at

概要

Kubernetesの代表的なオブザーバビリティツールとしてPrometheusGrafanaがあります。
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 にアクセスするとログイン画面が表示されます。
image.png

ログイン情報は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

image.png
Grafanaにログインできました。

まとめ

Helmを使ってPrometheus、GrafanaをKubernetesにインストールし、オブザーバビリティ環境を構築しました。

今後はPrometheusやGrafanaの機能を試してみてオブザーバビリティに関する理解を深めたいと思います。

お読みいただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?