jmx エクスポーターを使用して kafka インジケーターと構成を収集する

前提条件

カフカ、プロメテウスをインストール

JMX エクスポーターを使用してメトリックを公開する

jmx エクスポーターと構成ファイルをダウンロードします。Jmx エクスポーターには、サーバー メトリック、プロデューサー メトリック、コンシューマー メトリックなど、Kafka の各コンポーネントのインジケーターが含まれていますが、これらのインジケーターはプロメテウス形式ではないため、名前を変更してプロメテウス形式に変更する必要があります。名前変更規則は で構成されますkafka-2_0_0.yml

wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.12.0/jmx_prometheus_javaagent-0.12.0.jar
wget https://raw.githubusercontent.com/prometheus/jmx_exporter/master/example_configs/kafka-2_0_0.yml 

kafka クラスタの監視を有効にする

有効にする方法は比較的簡単で、kafka-server-start.sh次の 2 行を に追加するだけです。

...
#添加如下两行
export JMX_PORT="7081"
export KAFKA_OPTS="-javaagent:/Users/charlie.liu/kafka_2.13-3.2.3/monitor/jmx_prometheus_javaagent-0.12.0.jar=7072:/Users/charlie.liu/kafka_2.13-3.2.3/monitor/kafka-2_0_0.yml"

COMMAND=$1
case $COMMAND in
  -daemon)
    EXTRA_ARGS="-daemon "$EXTRA_ARGS
    shift
    ;;
  *)
    ;;
esac

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"

prometheus の設定ファイルは以下の通りで、起動後に kafka のインジケーターを確認できます。

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "kafka-cluster"
    static_configs:
    - targets: ["localhost:7072"]

生産者/消費者の指標を収集する

kafka のプロデューサー メトリックおよびコンシューマー メトリックの形式は、kafka サーバー メトリックの形式とは異なるため、ファイルに追加できる特定の名前変更構成が必要ですkafka-2_0_0.yml

# MBean: kafka.producer:type=producer-metrics,client-id=([-.w]+)
- pattern: kafka.(.*)<type=(.*)-metrics, client-id=(.*)><>(.+):\w*
  name: kafka_$2-metrics
  labels:
    client_id: "$3"
    attr_name: "$4"
  help: "Kafka global client JMX metric $1 $2-metrics"
  type: GAUGE

# MBean: kafka.producer:type=producer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)
# MBean: kafka.consumer:type=consumer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)
- pattern: kafka.(.*)<type=(.*)-metrics, client-id=(.*), node-id=(.*)><>(.+):\w*
  name: kafka_$2_$5-metrics
  labels:
    client_id: "$3"
    node_id: "$4"
    attr_name: "$5"
  help: "Kafka client JMX metric $1 $2-metrics"
  type: GAUGE

- pattern: kafka.(.*)<type=(.*)-metrics, client-id=(.*), topic=(.*)><>(.+):\w*
  name: kafka_$2_$5-metrics
  labels:
    client_id: "$3"
    topic: "$4"
    attr_name: "$5"
  help: "Kafka client JMX metric $1 $2-metrics"
  type: GAUGE

次のようにコンシューマを起動します。

KAFKA_OPTS="-javaagent:/kafka_2.13-3.2.3/monitor/jmx_prometheus_javaagent-0.12.0.jar=7073:/kafka_2.13-3.2.3/monitor/kafka-2_0_0.yml" kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic charlie-test1 --from-beginning

プロメテウス構成ファイルにコンシューマー ターゲットを追加し、プロメテウス構成をリロードしてコンシューマー インデックスを見つけます。プロデューサー インデックス コレクションはコンシューマーに似ています。

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "kafka-cluster"
    static_configs:
    - targets: ["localhost:7072"]

  - job_name: "kafka-consumer"
    static_configs:
    - targets: ["localhost:7073"]

公式は、Jmx エクスポーターの他の例を示しています。

例えば、写真素材が不足している場合、「病院証明写真」を追加することができます。

注: Jmx エクスポーターのさまざまな構成によって生成される kafka インジケーターの名前は異なるため、統一された kafka grafana ダッシュボードはなく、自分で描画することをお勧めします。

おすすめ

転載: blog.csdn.net/dageliuqing/article/details/127659753