Kafka Agent インストール
1. モジュール説明
Kafka Agent(exem-kafka-agent)は、Kafkaクラスタの Broker、Topic、Consumer Groupメトリックデータを収集し、exemONE収集サーバー(Receiver)へ送信するモニタリングエージェントです。 Kafka AgentはOn-PremiseとDockerの2つの方式でインストールできます。
| インストール方式 | 適した環境 | 実行方法 |
|---|---|---|
| On-Premise | 物理サーバー、VM | java -jarで直接実行 |
| Docker | Docker(exemONE Dockerパッケージ) | docker-composeで実行 |
2. 対応環境
| 項目 | 内容 |
|---|---|
| OS | Linux (公式サポート基準 — バンドルJREがlinux/x64用のため。独自のJavaで起動すれば他のOSでも実行可能) |
| Runtime | JDK 17以上 |
| Platform | Kafka Cluster |
| Library | Netty Protobuf Apache ZooKeeper 3.9.2 Gson 2.11.0 Apache Commons Codec 1.16.0 Spring Security Crypto |
| Protocol | gRPC 9009 → Receiver |
| Target | Kafka 0.8.0以上 (Brokerモニタリング — JMX方式、JMX有効化が必要) Kafka 0.10.0以上 (Clusterモニタリング — AdminClient API方式) |
| Other | Zookeeperモード (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以上がインストールされている必要があります。
EXEM-KAFKA-AGENT-{VERSION}.tar.gzインストールファイルを準備します。パッケージを解凍します。
tar -zxvf EXEM-KAFKA-AGENT-{VERSION}.tar.gzexem/kafka/cfg/kafka.confファイルを開き、収集サーバーのアドレスを入力します。RECEIVER_ADDR=<Receiver IP>:9009エージェントを実行します。
java -jar {パッケージパス}/exem/kafka/lib/exem-kafka-agent.jar
5. Dockerでインストールする
EXEM-KAFKA-AGENT~.tar.gzファイルを解凍します。$EXEMONE_HOME/containersにexemone-kafka-agentフォルダを作成し、その下にcfg、logフォルダを作成します。cfgフォルダにkafka.confとcfg.reloadファイルを配置します。kafka.confにReceiverアドレスを入力します。RECEIVER_ADDR=<Receiver IP>:9009注記IPで設定してReceiverと接続できない場合は
exemone-receiver:9009と入力してください。$EXEMONE_HOME/dockerfile/kafka-agentフォルダを作成し、Dockerfileを配置します。kafka-agentイメージをロードします。
docker load -i <kafka-agent-イメージ>.tar.gz.envファイルにkafka-agentイメージ情報を追加します。KAFKA_AGENT_IMAGE=maxgauge/exemone-kafka-agent
KAFKA_AGENT_VERSION=3.0.12docker-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-privilegeskafka-agentを起動します。
scripts/restart.sh kafka-agent