このページでは、Helm チャートを使用して、導入された環境内に Kafka Prometheus エクスポータを追加する方法について説明します。Cisco Cloud Observability Helm チャートパッケージは、必要なすべての依存関係を提供します。Cisco Cloud Observability Helm チャートがインストールされていない場合は、「Install Kubernetes and App Service Monitoring」を参照してください。


要件

Prometheus を統合する前に、環境で Kafka および JMX エクスポータを構成する必要があります。Prometheus の「Exporters and integrations」を参照してください。

スケーリング要件

Cisco Cloud Observability Distribution for OpenTelemetry™ Collector レプリカは、5,000 の Kafka パーティションを処理できます。この制限により、Cisco Cloud Observability のメトリック、イベント、ログ、およびトレース(MELT)データ用の十分なストレージが確保されます。追加のパーティションを処理するには、5,000 パーティションごとに 1 つの Cisco Cloud Observability Distribution for OpenTelemetry™ Collector レプリカを追加します。たとえば、16 の Cisco Cloud Observability Distribution for OpenTelemetry™ Collector レプリカを持つ 16 ノードの Kubernetes クラスタは、合計 80,000 の Kafka パーティションを処理できます。

This page has not yet been translated to Japanese.

Kafka の Prometheus エクスポータモニタリングを有効にする

Cisco Cloud Observability Helm チャートを使用して Kafka の Prometheus エクスポータモニタリングを有効にするには、collectors-values.yaml ファイルに注釈を付ける必要があります。

  1. 次のスニペットをコピーして、Kubernetes 展開の collectors-values.yaml ファイルに貼り付けます。設定の完全なリストについては、AppDynamics OpenTelemetry Collector Service Settings」を参照してください。

    appdynamics-otel-collector:
      enablePrometheus: true
      spec: 
        replicas: <your-desired-number-of-replicas-here> 
    CODE

    replicas 値を Kubernetes クラスタ内の Kubernetes ノードの数に設定します。Cisco Cloud Observability の展開を有効にするために、replicas を設定する必要があります。設定しないと、Cisco Cloud Observability Distribution for OpenTelemetry™ Collector は実行されません。「スケーリング要件」を参照してください。

    enablePrometheus 設定を true または false に変更した後、[Observe] ページで最新のエンティティとメトリックを表示するには、他のコレクタを再起動する必要があります。

  2. 最新バージョンを使用して Helm チャートコマンドを実行し、オペレータとコレクタをアップグレードします構成したら、次のコマンドを実行して検証します。

    kubectl get po -n appdynamics
    YML

    サンプル出力:

    NAMESPACE      NAME                                                              READY   STATUS    RESTARTS        AGE
    appdynamics    appd-prom-appdynamics-otel-collector-collector-0                  1/1     Running   0               115s
    appdynamics    appd-prom-appdynamics-otel-collector-collector-1                  1/1     Running   0               114s
    appdynamics    appd-prom-appdynamics-otel-collector-targetallocator-676bfkxxxv   1/1     Running   0               115s
    appdynamics    opentelemetry-operator-controller-manager-58d65d7848-z5t5n        2/2     Running   0               7h19m
    YML
  3. Kubernetes アノテーションは、メタデータをオブジェクトに添付するように設計されています。アノテーションは、クライアントがこのメタデータを取得するために使用できるキーと値のペアです。Kubernetes アノテーションを使用して、Prometheus エクスポータエンドポイントを公開します。

    デフォルト値とは異なるpathまたはportで Prometheus エクスポータを開始する場合は、それに応じて prometheus.io/path および prometheus.io/port アノテーションの値を更新する必要があります。


    1. Kafka エクスポータ:

      appdynamics.com/exporter_type: "kafka"
      appdynamics.com/kafka_cluster_name: "<your-kafka-cluster-name-here>"
      prometheus.io/path: "/metrics"
      prometheus.io/port: "9308"
      CODE

      構成したら、次を実行します。

      kubectl describe svc [Kafka exporter service name] [-n namespace]
      CODE

      サンプル出力:

      Name:              kafka-demo-metrics
      Namespace:         kafka
      Annotations:       appdynamics.com/exporter_type: kafka
                         appdynamics.com/kafka_cluster_name: kafka-demo
                         prometheus.io/path: /metrics
                         prometheus.io/port: 9308
      YML
    2. Kafka の JMX エクスポータ:

      appdynamics.com/exporter_type: "kafkajmx"
      appdynamics.com/kafka_cluster_name: "<your-kafka-cluster-name-here>"
      prometheus.io/path: "/"
      prometheus.io/port: "5556"
      CODE

      構成したら、次を実行します。

      kubectl describe svc [JMX exporter service name] [-n namespace]
      YML

      サンプル出力:

      Name:              kafka-demo-jmx-metrics
      Namespace:         kafka
      Annotations:       appdynamics.com/exporter_type: kafkajmx
                         appdynamics.com/kafka_cluster_name: kafka-demo
                         prometheus.io/path: /
                         prometheus.io/port: 5556
      YML
  4. JMX 構成ルールを更新して、生成されたメトリックが適切に取り込まれるようにします。これらのルールは、デフォルトのルールの代わりに適用する必要があります。

    jmxUrl: <your-full-jmx-url-to-connect-to-here>
    lowercaseOutputName: true
    lowercaseOutputLabelNames: true
    whitelistObjectNames: ["kafka.controller:*","kafka.server:*","java.lang:*","kafka.network:*","kafka.log:*"] 
    rules:
      - pattern: kafka.controller<type=(KafkaController), name=(.+)><>(Value)
        name: kafka_controller_$1_$2_$3
        type: GAUGE
      - pattern: kafka.controller<type=(ControllerStats), name=(.+)><>(Count)
        name: kafka_controller_$1_$2_total
        type: COUNTER
      - pattern : kafka.network<type=(RequestMetrics), name=(RequestsPerSec), request=(.+), version=(.+)><>(Count)
        name: kafka_network_$1_$2_total
        type: COUNTER
        labels:
          request: $3
          version: $4
      - pattern : kafka.network<type=(RequestMetrics), name=(TotalTimeMs), request=(.+)><>(Count)
        name: kafka_network_$1_$2_$3_total
        type: COUNTER
        labels:
          request: $3
      - pattern: kafka.server<type=(KafkaServer|ReplicaManager), name=(.+)><>(Value)
        name: kafka_server_$1_total_$2_$3
        type: GAUGE
      - pattern: kafka.server<type=(.+), name=(.+), topic=(.+)><>(Count)
        name: kafka_server_$1_$2_total
        type: COUNTER
        labels:
          topic: $3
      - pattern: kafka.server<type=(DelayedOperationPurgatory), name=(PurgatorySize), delayedOperation=(.+)><>(Value)
        name: kafka_server_$1_$2_$3_$4
        type: GAUGE
      - pattern: kafka.server<type=(ReplicaManager), name=(.+)><>(Count)
        name: kafka_server_$1_broker_$2_total
        type: COUNTER
      - pattern: kafka.server<type=(BrokerTopicMetrics), name=(BytesOutPerSec|BytesInPerSec|MessagesInPerSec)><>(Count)
        name: kafka_server_$1_broker_$2_total
        type: COUNTER
      - pattern: kafka.server<type=(BrokerTopicMetrics), name=(FailedProduceRequestsPerSec|FailedFetchRequestsPerSec)><>(Count)
        name: kafka_server_$1_$2_total
        type: COUNTER
      - pattern: kafka.server<type=(SessionExpireListener), name=(.+)><>(Count)
        name: kafka_server_$2_total
        type: COUNTER
      - pattern: kafka.log<type=(LogFlushStats), name=(LogFlushRateAndTimeMs)><>(Count)
        name: kafka_log_$1_$2_total
        type: COUNTER
      - pattern: kafka.log<type=(Log), name=(Size), topic=(.+), partition=(.+)><>(.+)
        name: kafka_log_$1_$2
        labels:
          topic: $3
          partition: $4
        type: GAUGE
      - pattern : java.lang<type=(.*)>
        type: GAUGE
    CODE

次のステップ

Cisco Cloud Observability はデータを収集し、エンティティ中心のページ(ECP)を [Observe] ページに追加します。Cisco Cloud Observability UI で Kafka エンティティをモニターできるようになりました。「Kafka エンティティの監視」を参照してください。

This page has not yet been translated to Japanese.

Prometheus® と Kubernetes®(該当する場合)は、The Linux Foundation® の商標です。