kube-prometheus-stack で、Prometheus、Grafana をインストールして、Kubernetes クラスターのいろいろな情報を監視する

May 21, 2024, 9:03 PM

Kubernetes のクラスターでサービスを監視したくなったので、kube-prometheus-stack で、Prometheusと、Grafana をインストールしてみました。
https://4nm1tsu.com/posts/byq2df2/#google_vignette
の記事をかなり参考にさせていただきました。貴重な記事をありがとうざいます。感謝🙇‍♂

Kubernetes, Prometheus, Grafana, Service, ServiceMonitor,PV,PVCの関係図


Prometheus が、ServiceMonitor で設定されているサービスから情報を収集し、それを Grafana で閲覧する形です。
無設定時では、Prometheus も Grafana もコンテナ内にデータを保存するため、Podの再起動でデータが消えてしまいます。
なので、以下の流れでインストールを行い、永続化ボリューム(NFS)にデータが保存されるようにします。

インストール完了までの全体の流れ

  • 一度インストール
  • 設定ファイル書き出し
  • アンインストール
  • ストレージ作成
  • 設定ファイル書き換え
  • 再インストール(設定ファイルあり)
この流れでインストールを完了させます。

kube-prometheus-stack のインストール

リポジトリ追加

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

ネームスペース作成

kubectl create ns monitoring

インストール実行

helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring

設定ファイル書き出し

helm show values prometheus-community/kube-prometheus-stack > values-monitoring.yaml

アンインストール

helm uninstall kube-prometheus-stack -n monitoring

ストレージ作成

nano monitoring-storage-class.yaml
以下の内容を貼り付けてください。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: grafana-nfs
provisioner: kubernetes.io/nfs
parameters:
archiveOnDelete: "false"
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: prometheus-nfs
provisioner: kubernetes.io/nfs
parameters:
archiveOnDelete: "false"
適用します。
# kubectl apply -f monitoring-storage-class.yaml

PV作成

nano monitoring-pv.yaml
以下の内容を貼り付けてください。
NFS周りの情報は皆様の環境にあわせてください。
NFSの構築方法は
https://microai.jp/blog/72358784-fb27-4f63-b405-f6247982b2bf
でまとめています。
apiVersion: v1
kind: PersistentVolume
metadata:
name: grafana-pv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 2Gi
persistentVolumeReclaimPolicy: Retain
storageClassName: grafana-nfs
volumeMode: Filesystem
nfs:
server: 100.64.1.114
path: "/srv/nfs/share/grafana"
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: prometheus-pv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 10Gi
persistentVolumeReclaimPolicy: Retain
storageClassName: prometheus-nfs
volumeMode: Filesystem
nfs:
server: 100.64.1.114
path: "/srv/nfs/share/prometheus"
適用します
# kubectl apply -f monitoring-pv.yaml

確認
# kubectl get pv -A
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
grafana-pv 2Gi RWO Retain Available grafana-nfs <unset> 16s
microai-pv 50Gi RWX Retain Released default/microai-pvc microai-storage <unset> 16d
microai-redis-pv 1Gi RWX Retain Bound redis/microai-redis-pvc microai-storage <unset> 16d
prometheus-pv 10Gi RWO Retain Available prometheus-nfs <unset> 16s


kube-prometheus-stack の設定変更

# nano values-monitoring.yaml

設定箇所 (grafana)

grafana:

defaultDashboardsTimezone: utc

defaultDashboardsTimezone: Asia/Tokyo
その下に以下を追記
  deploymentStrategy:
type: Recreate
persistence:
enabled: true
type: pvc
storageClassName: grafana-nfs
accessModes:
- ReadWriteOnce
size: 2Gi
finalizers:
- kubernetes.io/pvc-protection
initChownData:
enabled: false

設定箇所 (prometheus)

prometheus:
prometheusSpec:

storageSpec: {}

storageSpec:
その下に以下を追記
      volumeClaimTemplate:
spec:
storageClassName: prometheus-nfs
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi

再インストール

helm install kube-prometheus-stack -f values-monitoring.yaml prometheus-community/kube-prometheus-stack -n monitoring
NAME: kube-prometheus-stack
LAST DEPLOYED:
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"

Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.

GrafanaのWEB UIにアクセス


microAI では、Cloudflare tunnel を使用しているので、
http://kube-prometheus-stack-grafana.monitoring.svc.cluster.local
を設定して、クラスター外から見られるようにしました。

初期パスワード

username: admin
password: 以下のコマンドで確認( admin と書かれている記事が多くありますが、kube-prometheus-stack でインストールされた場合は admin じゃないっぽい)
# cat values-monitoring.yaml | grep adminPassword:
adminPassword: prom-operator

Grafana のスクショたち




Prometheus の WEB UIにアクセス


同じく、Cloudflare tunnel を使用しているので、
http://kube-prometheus-stack-prometheus.monitoring.svc.cluster.local:9090
を設定して、クラスター外から見られるようにしました。

初期エラー


インストール直後から、上記の4つのターゲットでエラーが発生してしまっています。
こちらは、現状特に困らなないので一旦放置して、そのうち対応する予定です。

以上!結構苦労しましたが無事インストール完了🍺
Kubernetes 永続化ボリューム(PV,PVC)周りのまとめ
日本語に強い! cyberagent/calm2-7b-chat を ollama で使ってみる日本語に強い! cyberagent/calm2-7b-chat を ollama で使ってみる