3.6.4.2. DevWorkspace Operator のモニタリング

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

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

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

前提条件

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

手順

  1. ClusterRoleBinding を作成して、Prometheus に関連付けられた ServiceAccount を devworkspace-controller-metrics-reader ClusterRole にバインドします。モニターリングスタックのサンプル では、使用される ServiceAccount の名前は prometheus です。

    注記

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

    例3.31 clusterRoleBinding

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

    注記

    モニターリングスタックのサンプル では、空の設定で prometheus-config ConfigMap がすでに作成されています。Prometheus 設定の詳細を指定するには、ConfigMap の data フィールドを編集します。

    例3.32 Prometheus の設定

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: prometheus-config
      namespace: monitoring
    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.<DWO_project>: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.<DWO_project>:9443'] 5
    1
    ターゲットが収集されるレート。
    2
    記録およびアラートルールを再チェックするレート。
    3
    Prometheus が監視するリソースデフォルトの設定では、2 つのジョブ (DevWorkspace および DevWorkspace webhooks) が、devworkspace-controller-metrics サービスおよび devworkspace-webhookserver サービスによって公開された時系列データを収集します。
    4
    ポート 8443 からのメトリクスのスクレイプターゲット。<DWO_project> を、devworkspace-controller-metrics Service が置かれているプロジェクトに置き換えます。
    5
    ポート 9443 からのメトリクスのスクレイプターゲット。<DWO_project> を、devworkspace-webhookserver Service が置かれているプロジェクトに置き換えます。
  3. Prometheus Deployment をスケールダウンおよびスケールアップし、直前の手順で更新された ConfigMap を読み取ります。

    $ oc scale --replicas=0 deployment/prometheus -n monitoring && oc scale --replicas=1 deployment/prometheus -n monitoring

検証

  1. ポート転送を使用して、ローカルで Prometheus サービスにアクセスします。

    $ oc port-forward svc/prometheus 9090:9090 -n monitoring
  2. localhost:9090/targets でターゲットエンドポイントを表示して、すべてのターゲットが稼働していることを確認します。
  3. Prometheus コンソールを使用して、メトリクスを表示および照会します。

    • localhost:9090/metrics でメトリクスを表示します。
    • localhost:9090/graph からメトリクスをクエリーします。

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