Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


3.7.14 PrometheusのKubernetesマニフェスト作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

〈この項の構成〉

(1) Prometheusのマニフェスト作成

Prometheusの公式ドキュメントを参考に、ConfigMap以外のKubernetesマニフェストを作成してください。パラメタの内容および設定値の詳細については、Prometheusの公式ドキュメントを参照してください。

(2) ConfigMapの作成

メトリクス収集対象の定義、およびにMetricbeatへのメトリクス送信のため、KubernetesマニフェストのConfigMapを作成してください。次に記述例を示します。

apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: my-namespace
data:
  prometheus.yml: |
    global:
      scrape_interval: 15s
      evaluation_interval: 30s
    scrape_configs:                         …1
      - job_name: 'hmppcto-metrics-scraper'
        kubernetes_sd_configs:
          - role: pod
        relabel_configs:
          - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
            action: keep
            regex: "true"
          - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
            action: replace
            target_label: __metrics_path__
            regex: ([^\n]+)
          - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
            action: replace
            regex: (.+):(?:\d+);(\d+)
            replacement: ${1}:${2}
            target_label: __address__
          - source_labels: [__meta_kubernetes_namespace]
            action: replace
            target_label: namespace
          - source_labels: [__meta_kubernetes_pod_name]
            action: replace
            target_label: pod_name
          - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
            action: replace
            target_label: label_app_kubernetes_io_name
          - source_labels: [__meta_kubernetes_pod_container_name]
            regex: "dependency-checker"
            action: drop
          - source_labels: [__meta_kubernetes_pod_container_name]
            regex: "filebeat-sidecar"
            action: drop
      - job_name: 'jaeger-collector-scraper'  …2
        kubernetes_sd_configs:
        - role: endpoints
        metrics_path: /metrics
        relabel_configs:
        - source_labels: [__address__]
          regex: (.+):\d+
          replacement: ${1}:14269
          target_label: __address__
          action: replace
        - source_labels: [__meta_kubernetes_service_name]
          regex: jaeger-collector
          action: keep
        - source_labels: [__meta_kubernetes_namespace]
          action: replace
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          action: replace
          target_label: pod_name
        - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
          action: replace
          target_label: label_app_kubernetes_io_name
    remote_write:                           …3
    - url: http://metricbeat:9201/write
      queue_config:
        capacity: 10000
        max_shards: 50
        max_samples_per_send: 2000
      enable_http2: true                     …4

記述例の番号は、説明の番号と対応しています。

この例では、各KubernetesオブジェクトのNamespace名(metadata.namespaceフィールド)は、「my-namespace」としています。

<説明>

  1. 「scrape_configs:」の行から「- job_name: 'jaeger-collector-scraper'」の1つ上の「action: drop」の行で、HMP-PCTOのメトリクスを収集します。

    次の設定で、Kubernetesマニフェストの.spec.template.metadata.annotationsに設定されている3つのキーの値を参照して、メトリクスを収集します。この設定は変更しないでください。

    • prometheus.io/scrape

    • prometheus.io/path

    • prometheus.io/port

    - job_name: 'hmppcto-metrics-scraper'
       kubernetes_sd_configs:
         - role: pod
       relabel_configs:
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
          action: keep
          regex: "true"
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
          action: replace
          target_label: __metrics_path__
          regex: (.+)
        - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
          action: replace
          regex: (.+):(?:\d+);(\d+)
          replacement: ${1}:${2}
          target_label: __address__

    次の設定で、Podに設定されているKubernetesのメタデータをラベルとして設定します。追加されるラベルを次に示します。ラベルに関する設定は必要に応じて追加してください。

    • namespace:Podの名前空間

    • pod_name:Pod名

    • label_app_kubernetes_io_name:Podの.spec.template.metadata.labelsの「app.kubernetes.io/name」に設定されている値

      - source_labels: [__meta_kubernetes_namespace]
        action: replace
        target_label: namespace
      - source_labels: [__meta_kubernetes_pod_name]
        action: replace
        target_label: pod_name
      - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
        action: replace
        target_label: label_app_kubernetes_io_name

    次の設定で、HMP-PCTOのPod内に存在するコンテナを、メトリクスの収集対象から除く設定をします。この設定は変更しないでください。

      - source_labels: [__meta_kubernetes_pod_container_name]
        regex: "dependency-checker"
        action: drop
      - source_labels: [__meta_kubernetes_pod_container_name]
        regex: "filebeat-sidecar"
        action: drop
  2. 「- job_name: 'jaeger-collector-scraper'」の行から「target_label: label_app_kubernetes_io_name」の行で、Jaeger-collectorのメトリクスを収集します。Jaeger-collectorのメトリクスを収集することで、受信したSpanを格納する内部キューの使用状況を確認し、チューニングができます。Jaeger-collectorを使用する場合に設定してください。

    次の設定で、Jaeger-collectorのメトリクスを収集します。この設定は変更しないでください。

      - job_name: 'jaeger-collector-scraper'
        kubernetes_sd_configs:
        - role: endpoints
        metrics_path: /metrics
        relabel_configs:
        - source_labels: [__address__]
          regex: (.+):\\d+
          replacement: ${1}:14269
          target_label: __address__
          action: replace
        - source_labels: [__meta_kubernetes_service_name]
          regex: jaeger-collector
          action: keep

    次の設定で、Podに設定されているKubernetesのメタデータをラベルとして設定します。追加されるラベルを次に示します。ラベルに関する設定は必要に応じて追加してください。

    • namespace:Podの名前空間

    • pod_name:Pod名

    • label_app_kubernetes_io_name:Podの.spec.template.metadata.labelsの「app.kubernetes.io/name」に設定されている値

        - source_labels: [__meta_kubernetes_namespace]
          action: replace
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          action: replace
          target_label: pod_name
        - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
          action: replace
          target_label: label_app_kubernetes_io_name
  3. 「remote_write:」の行から「max_samples_per_send: 2000」の行で、Metricbeatにメトリクスを送信するための設定を定義します。

  4. Metricbeatはデータを送信する際の通信プロトコルとしてHTTP/2に対応しているため、HTTP/2の通信を利用できるように明示的に設定します。