メインコンテンツまでスキップ

Kafka Agent インストール

1. モジュール説明​

Kafka Agent(exem-kafka-agent)は、Kafkaクラスタの Broker、Topic、Consumer Groupメトリックデータを収集し、exemONE収集サーバー(Receiver)へ送信するモニタリングエージェントです。 Kafka AgentはOn-PremiseとDockerの2つの方式でインストールできます。

インストール方式適した環境実行方法
On-Premise物理サーバー、VMjava -jarで直接実行
DockerDocker(exemONE Dockerパッケージ)docker-composeで実行

2. 対応環境​

項目内容
OSLinux
(公式サポート基準 — バンドルJREがlinux/x64用のため。独自のJavaで起動すれば他のOSでも実行可能)
RuntimeJDK 17以上
PlatformKafka Cluster
LibraryNetty
Protobuf
Apache ZooKeeper 3.9.2
Gson 2.11.0
Apache Commons Codec 1.16.0
Spring Security Crypto
ProtocolgRPC 9009 → Receiver
TargetKafka 0.8.0以上
(Brokerモニタリング — JMX方式、JMX有効化が必要)
Kafka 0.10.0以上
(Clusterモニタリング — AdminClient API方式)
OtherZookeeperモード (Zookeeperサーバー接続情報で登録)
KRaftモード (全ブローカー接続情報で登録)
クラスタ
ブローカー
トピック
パーティションのメタデータ/リアルタイムメトリック

3. メトリック収集方式​

Kafka Agentは2つの方式でメトリックを収集します。方式によって収集可能なデータが異なります。

JMX方式 — KafkaプロセスにJMXを有効化してリアルタイムモニタリングおよび詳細なメトリックを収集します。Kafka ServerまたはJavaでサービスされるKafka Consumer/Producerに以下のオプションを適用します。

export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true \
-Djava.rmi.server.hostname={jmx_ip} \
-Dcom.sun.management.jmxremote.port={jmx_port} \
-Dcom.sun.management.jmxremote.rmi.port={jmx_port} \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false"

Admin Client方式 — KafkaライブラリのAdmin Client APIを使用して、トピック、パーティション、ブローカーなどのクラスタメタデータと状態メトリックを収集します。bootstrap serverアドレスが必要です。

4. On-Premiseでインストールする​

事前要件

Java 17以上がインストールされている必要があります。

  1. EXEM-KAFKA-AGENT-{VERSION}.tar.gzインストールファイルを準備します。

  2. パッケージを解凍します。

    tar -zxvf EXEM-KAFKA-AGENT-{VERSION}.tar.gz
  3. exem/kafka/cfg/kafka.confファイルを開き、収集サーバーのアドレスを入力します。

    RECEIVER_ADDR=<Receiver IP>:9009
  4. エージェントを実行します。

    java -jar {パッケージパス}/exem/kafka/lib/exem-kafka-agent.jar

5. Dockerでインストールする​

  1. EXEM-KAFKA-AGENT~.tar.gzファイルを解凍します。

  2. $EXEMONE_HOME/containersにexemone-kafka-agentフォルダを作成し、その下にcfg、logフォルダを作成します。

  3. cfgフォルダにkafka.confとcfg.reloadファイルを配置します。kafka.confにReceiverアドレスを入力します。

    RECEIVER_ADDR=<Receiver IP>:9009
    注記

    IPで設定してReceiverと接続できない場合はexemone-receiver:9009と入力してください。

  4. $EXEMONE_HOME/dockerfile/kafka-agentフォルダを作成し、Dockerfileを配置します。

  5. kafka-agentイメージをロードします。

    docker load -i <kafka-agent-イメージ>.tar.gz
  6. .envファイルにkafka-agentイメージ情報を追加します。

    KAFKA_AGENT_IMAGE=maxgauge/exemone-kafka-agent
    KAFKA_AGENT_VERSION=3.0.12
  7. docker-compose.ymlにkafka-agentサービスを追加します。

    kafka-agent:
    labels:
    io.exem: true
    io.exem.prod: exemone
    io.exem.one.type: application
    io.exem.one.app: kafka-agent
    container_name: exemone-kafka-agent
    build:
    context: ${EXEMONE_HOME}/dockerfile/kafka-agent
    args:
    KAFKA_AGENT_IMAGE: ${KAFKA_AGENT_IMAGE}
    KAFKA_AGENT_VERSION: ${KAFKA_AGENT_VERSION}
    EXEMONE_USER_UID: ${EXEMONE_USER_UID}
    EXEMONE_USER_GID: ${EXEMONE_USER_GID}
    volumes:
    - /etc/localhost:/etc/localhost:ro
    - $EXEMONE_HOME/containers/exemone-kafka-agent/cfg:/home/exemone/kafka/cfg
    - $EXEMONE_HOME/containers/exemone-kafka-agent/log:/home/exemone/kafka/log
    deploy:
    resources:
    limits:
    cpus: '2'
    memory: 4g
    environment:
    HOST_UID: ${EXEMONE_USER_UID}
    HOST_GID: ${EXEMONE_USER_GID}
    networks:
    - exemone_network
    depends_on:
    receiver:
    condition: service_started
    restart: unless-stopped
    logging: *logging
    security_opt:
    - no-new-privileges
  8. kafka-agentを起動します。

    scripts/restart.sh kafka-agent