hidemium's blog

日々学んだことをアウトプットする。

PromethusとGrafanaを使ったRook Cephの監視

前回は、Rookのダッシュボードのインストールを試してみました。今回は、Rook Cephを監視するためのPromethusとGrafanaのインストールを試してみました。

hidemium.hatenablog.com

構成

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

参考