10.3. OpenShift 3.11 での Heketi メトリクスの有効化

OCP 3.11 では、Prometheus はサービスモニターを使用します。これは、Prometheus Operator によって導入される新規リソースです。サービスモニターは、すべてのストレージ namespace に対して作成する必要があり、監視するターゲットのセットを記述します。

OCP 3.11 の Prometheus で Heketi メトリクスを表示するには、以下のコマンドを実行します。

  1. heketi-storage サービスにアノテーションを追加します。

    # oc project app-storage
    # oc annotate svc heketi-storage prometheus.io/scheme=http
    # oc annotate svc heketi-storage prometheus.io/scrape=true
  2. 以下のテンプレートを使用して、openshift-monitoring namespace に heketi-app サービスモニターを作成します。

    # cat heketi-app-sm.yml
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: heketi-app
      labels:
        k8s-app: heketi-app
      namespace: openshift-monitoring
    spec:
      endpoints:
      - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
        interval: 30s
        port: heketi
        scheme: http
        targetPort: 0
      namespaceSelector:
        matchNames:
        - app-storage
      selector:
        matchLabels:
          heketi: storage-service

    ここで、namespaceSelector およびラベルは heketi-storage サービスの値と一致する必要があります。

    # oc describe svc heketi-storage -n app-storage
    Name:              heketi-storage
    Namespace:         app-storage
    Labels:            glusterfs=heketi-storage-service
                       heketi=storage-service
    Annotations:       description=Exposes Heketi service
                       prometheus.io/scheme=http
                       prometheus.io/scrape=true
    Selector:          glusterfs=heketi-storage-pod
    Type:              ClusterIP
    IP:                172.30.3.92
    Port:              heketi  8080/TCP
    TargetPort:        8080/TCP
    Endpoints:         10.128.4.12:8080
    Session Affinity:  None
    Events:            <none>

    正しいセレクターセットで、正しいセレクターセットを使用してサービスモニターを openshift-monitoring namespace に作成します。

    # oc create -f heketi-app-sm.yml -n openshift-monitoring
    servicemonitor.monitoring.coreos.com "heketi-app" created
    # oc get servicemonitor -n openshift-monitoring
    NAME                          AGE
    alertmanager                  20d
    cluster-monitoring-operator   20d
    heketi-app                    1m
    kube-apiserver                20d
    kube-controllers              20d
    kube-state-metrics            20d
    kubelet                       20d
    node-exporter                 20d
    prometheus                    20d
    prometheus-operator           20d
  3. 複数の OCS クラスターがある場合、上記の手順を使用して OCS クラスターごとに 1 つのサービスモニターを作成する必要があります。
  4. 以下のコマンドを実行して、cluster-reader 権限を Prometheus に追加します。

    # oc adm policy add-cluster-role-to-user cluster-reader \
    system:serviceaccount:openshift-monitoring:prometheus-k8s -n \
    openshift-monitoring
    cluster role "cluster-reader" added: "system:serviceaccount:openshift-monitoring:prometheus-k8s"
  5. 数分後に、Prometheus は新規サービスモニターを読み込みます。