前回は、Rookのダッシュボードのインストールを試してみました。今回は、Rook Cephを監視するためのPromethusとGrafanaのインストールを試してみました。
構成
- vCenter 7.0 U3
- ESXi 7.0 Update 3
- Ubuntu 22.04 (テンプレートVM)
- open-vm-tools 11.3.5
- cloud-init 22.2
- Kubespray
- kubernetes v1.25.5
- MetalLB v0.12.1
- ingress-nginx v1.5.1
- CoreDNS
- EdgeRouter X
- Rook Ceph v1.10.9
Promethusのインストール
promethus operatorをインストールします。
LATEST=$(curl -s https://api.github.com/repos/prometheus-operator/prometheus-operator/releases/latest | jq -cr .tag_name) curl -sL https://github.com/prometheus-operator/prometheus-operator/releases/download/${LATEST}/bundle.yaml | kubectl create -f -
promethus operatorが起動したことを確認します。
$ kubectl get pod NAME READY STATUS RESTARTS AGE prometheus-operator-57df45d67c-69f6z 1/1 Running 0 34s
Serviceをtype: LoadBalancerにするために、以下のように修正します。
$ cd rook/deploy/examples/monitoring $ vi prometheus-service.yaml - type: NodePort + type: LoadBalancer
Rookクラスターを監視し、メトリックを定期的に収集するサービスモニターを作成します。
$ kubectl create -f service-monitor.yaml $ kubectl create -f prometheus.yaml $ kubectl create -f prometheus-service.yaml
Prometheusが起動していることを確認します。
$ kubectl -n rook-ceph get pod,service NAME READY STATUS RESTARTS AGE pod/prometheus-rook-prometheus-0 2/2 Running 0 53s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/prometheus-operated ClusterIP None <none> 9090/TCP 54s service/rook-prometheus LoadBalancer 10.233.11.124 10.0.50.203 9090:30900/TCP 45s
ブラウザから、 http://10.0.50.203:9090/
にアクセスし、PrometheusのWebコンソールが開けることを確認します。
Grafanaのインストール
Grafanaのhelmチャートをダウンロードします。
$ helm repo add grafana https://grafana.github.io/helm-charts $ helm repo update
ingressが利用できるように、以下のようにvalues.yamlファイルを作成し、Grafanaのインストールを行います。
$ vi values.yml ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx kubernetes.io/tls-acme: "true" labels: {} path: / hosts: - grafana.kube.home.lab tls: - secretName: ingress-tls hosts: - grafana.kube.home.lab $ helm install my-release grafana/grafana -f values.yml
Grafanaが起動してきたことを確認します。
$ kubectl get pod,svc,ingress NAME READY STATUS RESTARTS AGE pod/my-release-grafana-6fc6cd88d4-x8tnr 1/1 Running 0 88m pod/prometheus-operator-57df45d67c-69f6z 1/1 Running 0 143m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/my-release-grafana ClusterIP 10.233.19.102 <none> 80/TCP 94m service/prometheus-operator ClusterIP None <none> 8080/TCP 143m NAME CLASS HOSTS ADDRESS PORTS AGE ingress.networking.k8s.io/my-release-grafana <none> grafana.kube.home.lab 10.0.50.201 80, 443 94m
以下のようにGrafanaにログインするためのパスワードを取得します。
$ kubectl get secret --namespace default my-release-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
ブラウザから、 https://grafana.kube.home.lab
にアクセスし、ユーザはadminと上記のパスワードでログインします。
Grafanaの設定
GrafanaのConfigurationから、Add data sourceでデータソースを追加します。
Prometheusをクリックし、URLに http://10.0.50.203:9090/
を入力し、Save & testをクリックします。
DashboardsのNew>importをクリックし、Import via grafana.comに以下のリンク先にある、Dashbord ID copied!をクリックし、クリップボードに入った値をペーストします。
Ceph - Clusterの場合は以下のようなダッシュボードが表示されます。
リソースの削除
動作確認ができたため、リソースを削除しておきます。
$ helm uninstall my-release $ kubectl delete -f service-monitor.yaml $ kubectl delete -f prometheus.yaml $ kubectl delete -f prometheus-service.yaml $ kubectl delete -f https://raw.githubusercontent.com/coreos/prometheus-operator/v0.62.0/bundle.yaml