3.6.4.2. DevWorkspace Operator のモニタリング

DevWorkspace Operator が公開するメトリクスを処理するために、モニターリングスタックの例を設定できます。

3.6.4.2.1. Prometheus による DevWorkspace Operator メトリクスの収集

Prometheus を使用して、DevWorkspace Operator に関するメトリクスを収集、保存、および照会するには、以下を実行します。

前提条件

  • devworkspace-controller-metrics Service は、ポート 8443 でメトリクスを公開している。
  • devworkspace-webhookserver サービスは、ポート 9443 でメトリクスを公開している。デフォルトでは、このサービスはポート 9443 でメトリクスを公開します。
  • Prometheus 2.26.0 以降が動作している。Prometheus コンソールは、対応する serviceroute のあるポート 9090 で実行されています。Prometheus を初めて実行するための手順について参照してください。

手順

  1. ClusterRoleBinding を作成して、Prometheus に関連する ServiceAccountdevworkspace-controller-metrics-reader ClusterRole にバインドします。

    注記

    DevWorkspace メトリクスへのアクセスはロールベースアクセスコントロール (RBAC) で保護されているため、ClusterRoleBinding がないとアクセスできません。

    例3.31 ClusterRole

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: devworkspace-controller-metrics-reader
    rules:
    - nonResourceURLs:
      - /metrics
      verbs:
      - get

    例3.32 clusterRoleBinding

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: devworkspace-controller-metrics-binding
    subjects:
      - kind: ServiceAccount
        name: <ServiceAccount_name_associated_with_the_Prometheus_Pod>
        namespace: <Prometheus_namespace>
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: devworkspace-controller-metrics-reader
  2. Prometheus は、devworkspace-controller-metrics サービスが公開するポート 8443 と、devworkspace-webhookserver サービスが公開するポート 9443 からメトリクスを収集するように設定します。

    例3.33 Prometheus の設定

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: prometheus-config
    data:
      prometheus.yml: |-
          global:
            scrape_interval: 5s 1
            evaluation_interval: 5s 2
          scrape_configs: 3
            - job_name: 'DevWorkspace'
              scheme: https
              authorization:
                type: Bearer
                credentials_file: '/var/run/secrets/kubernetes.io/serviceaccount/token'
              tls_config:
                insecure_skip_verify: true
              static_configs:
                - targets: ['devworkspace-controller-metrics:8443'] 4
            - job_name: 'DevWorkspace webhooks'
              scheme: https
              authorization:
                type: Bearer
                credentials_file: '/var/run/secrets/kubernetes.io/serviceaccount/token'
              tls_config:
                insecure_skip_verify: true
              static_configs:
                - targets: ['devworkspace-webhookserver:9443'] 5
    1
    ターゲットが収集されるレート。
    2
    記録およびアラートルールを再チェックするレート。
    3
    Prometheus が監視するリソースデフォルトの構成では、2 つのジョブ (DevWorkspace および DevWorkspace webhooks) が、devworkspace-controller-metrics サービスおよび devworkspace-webhookserver サービスによって公開された時系列データを収集します。
    4
    ポート 8443 からのスクレープメトリクス。
    5
    ポート 9443 からのスクレープメトリクス。

検証手順

  1. Prometheus コンソールを使用して、メトリクスを表示および照会します。

    • http://<prometheus_url>/metrics でメトリクスを表示します。
    • http://<prometheus_url>/graph からメトリクスを照会します。

      詳細は、Using the expression browser を参照してください。

  2. http://<prometheus-url>/targets にあるターゲットエンドポイントを表示して、すべてのターゲットが稼働していることを確認します。