Kubernetes : Prometheus でモニタリングする2023/10/23 |
Prometheus をインストールして、Kubernetes クラスターの各種メトリクスをモニタリングできるようにします。 当例では以下のように 4 台のノードを使用して Kubernetes クラスターを構成しています。 +----------------------+ +----------------------+ | [ mgr.srv.world ] | | [ dlp.srv.world ] | | Manager Node | | Control Plane | +-----------+----------+ +-----------+----------+ eth0|10.0.0.25 eth0|10.0.0.30 | | ------------+--------------------------+----------- | | eth0|10.0.0.51 eth0|10.0.0.52 +-----------+----------+ +-----------+----------+ | [ node01.srv.world ] | | [ node02.srv.world ] | | Worker Node#1 | | Worker Node#2 | +----------------------+ +----------------------+ |
[1] |
Prometheus が使用する外部ストレージが必要となります。
当例では、こちらの [1], [2], [3] の通り、NFS サーバー [nfs.srv.world:/home/nfsshare] ディレクトリを共有ディレクトリとして設定して、Prometheus が使用するボリュームを動的プロビジョニングできるよう NFS subdir external provisioner を設定して進めます。 |
[2] | Helm で Prometheus チャートをインストールします。 |
# Prometheus の設定を書き出して自身の環境用に変更 [root@mgr ~]# helm inspect values bitnami/kube-prometheus > prometheus.yaml
[root@mgr ~]#
vi prometheus.yaml ..... ..... 21行目 : 使用する storageClass を指定 storageClass: "nfs-client" ..... ..... ..... 1058行目 : 使用する storageClass を指定 storageClass: "nfs-client" ..... ..... ..... 2036行目 : 使用する storageClass を指定 storageClass: "nfs-client" # Prometheus 用のネームスペース作成 [root@mgr ~]# kubectl create namespace monitoring namespace/monitoring created helm install prometheus --namespace monitoring -f prometheus.yaml bitnami/kube-prometheus NAME: prometheus LAST DEPLOYED: Mon Oct 23 10:33:45 2023 NAMESPACE: monitoring STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: kube-prometheus CHART VERSION: 8.21.6 APP VERSION: 0.68.0 ** Please be patient while the chart is being deployed ** Watch the Prometheus Operator Deployment status using the command: kubectl get deploy -w --namespace monitoring -l app.kubernetes.io/name=kube-prometheus-operator,app.kubernetes.io/instance=prometheus Watch the Prometheus StatefulSet status using the command: kubectl get sts -w --namespace monitoring -l app.kubernetes.io/name=kube-prometheus-prometheus,app.kubernetes.io/instance=prometheus Prometheus can be accessed via port "9090" on the following DNS name from within your cluster: prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local To access Prometheus from outside the cluster execute the following commands: echo "Prometheus URL: http://127.0.0.1:9090/" kubectl port-forward --namespace monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090 Watch the Alertmanager StatefulSet status using the command: kubectl get sts -w --namespace monitoring -l app.kubernetes.io/name=kube-prometheus-alertmanager,app.kubernetes.io/instance=prometheus Alertmanager can be accessed via port "9093" on the following DNS name from within your cluster: prometheus-kube-prometheus-alertmanager.monitoring.svc.cluster.local To access Alertmanager from outside the cluster execute the following commands: echo "Alertmanager URL: http://127.0.0.1:9093/" kubectl port-forward --namespace monitoring svc/prometheus-kube-prometheus-alertmanager 9093:9093[root@mgr ~]# kubectl get pods -n monitoring NAME READY STATUS RESTARTS AGE alertmanager-prometheus-kube-prometheus-alertmanager-0 2/2 Running 0 2m8s prometheus-kube-prometheus-blackbox-exporter-586779659-72cst 1/1 Running 0 2m24s prometheus-kube-prometheus-operator-74675d8559-dlzk8 1/1 Running 0 2m24s prometheus-kube-state-metrics-7769f89694-ggdbz 1/1 Running 0 2m24s prometheus-node-exporter-9vgbw 1/1 Running 0 2m24s prometheus-node-exporter-gdkjc 1/1 Running 0 2m24s prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 0 2m8s # もしクラスター外からアクセスする場合はポートフォワード [root@mgr ~]# kubectl port-forward -n monitoring service/prometheus-kube-prometheus-prometheus --address 0.0.0.0 9090:9090 & |
[3] | Grafana もインストールする場合は、同様にインストール可能です。 |
# 設定を書き出して storageClassName を変更 [root@mgr ~]# helm inspect values bitnami/grafana > grafana.yaml
[root@mgr ~]#
vi grafana.yaml 558行目 : 自身の [storageClass] を指定 persistence: enabled: true ## If defined, storageClassName: <storageClass> ## If set to "-", storageClassName: "", which disables dynamic provisioning ## If undefined (the default) or set to null, no storageClassName spec is ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS & OpenStack) ## storageClass: "nfs-client"[root@mgr ~]# helm install grafana --namespace monitoring -f grafana.yaml bitnami/grafana NAME: grafana LAST DEPLOYED: Mon Oct 23 10:38:58 2023 NAMESPACE: monitoring STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: grafana CHART VERSION: 9.3.2 APP VERSION: 10.1.5 ** Please be patient while the chart is being deployed ** 1. Get the application URL by running these commands: echo "Browse to http://127.0.0.1:8080" kubectl port-forward svc/grafana 8080:3000 & 2. Get the admin credentials: echo "User: admin" echo "Password: $(kubectl get secret grafana-admin --namespace monitoring -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 -d)"[root@mgr ~]# kubectl get pods -n monitoring NAME READY STATUS RESTARTS AGE alertmanager-prometheus-kube-prometheus-alertmanager-0 2/2 Running 0 5m50s grafana-6d54c5d759-gk9dn 1/1 Running 0 54s prometheus-kube-prometheus-blackbox-exporter-586779659-72cst 1/1 Running 0 6m6s prometheus-kube-prometheus-operator-74675d8559-dlzk8 1/1 Running 0 6m6s prometheus-kube-state-metrics-7769f89694-ggdbz 1/1 Running 0 6m6s prometheus-node-exporter-9vgbw 1/1 Running 0 6m6s prometheus-node-exporter-gdkjc 1/1 Running 0 6m6s prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 0 5m50s # もしクラスター外からアクセスする場合はポートフォワード [root@mgr ~]# kubectl port-forward -n monitoring service/grafana --address 0.0.0.0 3000:3000 & |
[4] |
クラスタ―内ホストから Prometheus UI にアクセスする場合は Web ブラウザーを起動して、以下の URL にアクセスします。
⇒ http://prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local
ポートフォワーディングした場合は、ローカルネットワーク内の任意のコンピューターで Web ブラウザーを起動して、以下の URL にアクセスします。
⇒ http://(Manager ノードのホスト名 または IP アドレス):(設定したポート)/
以下のように Prometheus UI が表示されれば OK です。
|
[5] |
クラスタ―内ホストから Grafana にアクセスする場合は Web ブラウザーを起動して、以下の URL にアクセスします。
⇒ http://grafana.monitoring.svc.cluster.local
ポートフォワーディングした場合は、ローカルネットワーク内の任意のコンピューターで Web ブラウザーを起動して、以下の URL にアクセスします。
⇒ http://(Manager ノードのホスト名 または IP アドレス):(設定したポート)/
以下のように Grafana が表示されれば OK です。
[admin] パスワードは以下のコマンドで確認します。⇒ echo "Password: $(kubectl get secret grafana-admin --namespace monitoring -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 -d)" |
Sponsored Link |