监测
监控 Debezium
你可以使用 Apache Kafka 和 Kafka Connect 提供的 JMX 指标来监控 Debezium。要使用这些指标,必须在启动 Kafka 和 Kafka Connect 服务时启用它们。启用 JMX 需要设置正确的环境变量。必须设置哪些环境变量,取决于你是在本地安装中运行 Kafka 和 Kafka Connect,还是在 Docker 容器中运行。
| 如果你在同一台机器上运行多个服务,请务必为每个服务使用不同的 JMX 端口。 |
|---|
用于监控 Debezium 连接器的指标
除了 Kafka 和 Kafka Connect 内置的 JMX 指标支持之外,每个连接器还提供了额外的指标,你可以利用这些指标来监控它们的活动。
- Db2 连接器指标
- MongoDB 连接器指标
- MySQL 连接器指标
- Oracle 连接器指标
- PostgreSQL 连接器指标
- SQL Server 连接器指标
- Cassandra 连接器指标
- Vitess 连接器指标
- Spanner 连接器指标
- Informix 连接器指标
- CockroachDB 连接器指标
在本地安装中启用 JMX
对于 Kafka 和 Kafka Connect,你需要在启动每个服务时设置相应的环境变量来启用 JMX。
Kafka JMX 环境变量
使用本地安装运行 Kafka 时,kafka-server-start.sh 脚本会识别以下环境变量:
JMX_PORT
启用 JMX 并指定 JMX 将使用的端口号。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.port=$JMX_PORT。
KAFKA_JMX_OPTS
JMX 选项,在启动时直接传递给 JVM。默认选项为:
-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false
Kafka Connect JMX 环境变量
使用本地安装运行 Kafka 时,connect-distributed.sh 脚本会识别以下环境变量:
JMX_PORT
启用 JMX 并指定 JMX 将使用的端口号。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.port=$JMX_PORT。
KAFKA_JMX_OPTS
在启动时直接传递给 JVM 的 JMX 选项。默认选项为:
-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false
在 Docker 中启用 JMX
如果你通过 Debezium 容器镜像运行 Kafka 和 Kafka Connect,启用 JMX 需要设置几个额外的环境变量,而在本地机器上运行时通常不需要这些变量。这是因为 JVM 需要知道它要向 JMX 客户端通告的主机名。因此,Debezium 用于 Kafka 和 Kafka Connect 的容器镜像使用若干环境变量来启用和配置 JMX。大部分环境变量在所有镜像中都相同,但也存在一些细微差别。
Docker 中 Kafka 的 JMX 环境变量
debezium/kafka 镜像识别以下与 JMX 相关的环境变量:
JMXPORT(必需)
用于 JMX 的端口号。该值用于指定以下 JVM 参数:
-Dcom.sun.management.jmxremote.port=$JMXPORT-Dcom.sun.management.jmxremote.rmi.port=$JMXPORT
JMXHOST(必需)
Docker 主机的 IP 地址或可解析的主机名,JMX 用它来构造发送给 JMX 客户端的 URL。取值为 localhost 或 127.0.0.1 将无法正常工作。通常可以使用 0.0.0.0。该值用于指定 JVM 参数 -Djava.rmi.server.hostname=$JMXHOST。
JMXAUTH
JMX 客户端连接时是否必须使用密码认证。必须为 true 或 false,默认值为 false。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH。
JMXSSL
JMX 客户端是否使用 SSL/TLS 进行连接。必须为 true 或 false,默认值为 false。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.ssl=$JMXSSL。
示例 1. 在 Kafka Docker 容器中启用 JMX
下面的示例 Docker 命令使用 debezium/kafka 镜像启动一个容器,为 JMXPORT 和 HOST_NAME 环境变量设置了值,并将 Docker 主机的 9011 端口映射到容器的 JMX 端口:
$ docker run -it --rm --name kafka --hostname kafka \
-p 9092:9092 -p 9011:9011 \
-e CLUSTER_ID=<YOUR_UNIQUE_CLUSTER_IDENTIFIER> \
-e NODE_ID=1 \
-e NODE_ROLE=combined \
-e KAFKA_CONTROLLER_QUORUM_VOTERS=1@kafka:9093 \
-e KAFKA_LISTENERS=PLAINTEXT://kafka:9092,CONTROLLER://kafka:9093 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 \
-e JMXPORT=9011 \
-e JMXHOST=10.0.1.10\
quay.io/debezium/kafka:{debezium-docker-label}Docker 中的 Kafka Connect JMX 环境变量
debezium/connect 镜像识别以下与 JMX 相关的环境变量:
JMXPORT(必需)
用于 JMX 的端口号。该值用于指定以下 JVM 参数:
-Dcom.sun.management.jmxremote.port=$JMXPORT-Dcom.sun.management.jmxremote.rmi.port=$JMXPORT
JMXHOST(必需)
Docker 主机的 IP 地址或可解析的主机名,JMX 使用它来构造发送给 JMX 客户端的 URL。取值为 localhost 或 127.0.0.1 将无法正常工作。通常可以使用 0.0.0.0。该值用于指定 JVM 参数 -Djava.rmi.server.hostname=$JMXHOST。
JMXAUTH
JMX 客户端连接时是否必须使用密码认证。取值必须是 true 或 false,默认为 false。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH。
JMXSSL
JMX 客户端是否使用 SSL/TLS 进行连接。取值必须是 true 或 false,默认为 false。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.ssl=$JMXSSL。
示例 2. 在 Kafka Connect Docker 容器中启用 JMX
以下 Docker 命令示例使用 debezium/connect 镜像启动一个容器,为 JMXPORT 和 JMXHOST 环境变量指定取值,并将 Docker 主机的 9012 端口映射到容器的 JMX 端口:
$ docker run -it --rm --name connect \
-p 8083:8083 -p 9012:9012 \
-e JMXPORT=9012 -e JMXHOST=10.0.1.10 \
-e GROUP_ID=1 \
-e CONFIG_STORAGE_TOPIC=my_connect_configs \
-e OFFSET_STORAGE_TOPIC=my_connect_offsets \
-e STATUS_STORAGE_TOPIC=my_connect_statuses \
--link kafka:kafka \
--link mysql:mysql \
quay.io/debezium/connect:latest使用 Prometheus 和 Grafana
Debezium 和 Kafka 暴露的指标可以通过 Prometheus 和 Grafana 导出并展示。你可以在 Debezium 示例仓库 中找到所需配置的示例,以及针对不同连接器的示例仪表盘。
| 这些仪表盘并不属于 Debezium 本身,仅由维护者尽力维护。 |
|---|
Java Flight Recording
Kafka Connect 的 Debezium 容器镜像还提供了对 JDK Flight Recorder 的易用支持。要启用记录,需要将环境变量 ENABLE_JFR=true 设置好。这样记录会在容器启动时自动开始。默认情况下记录是启用的,即使用默认设置进行持续记录,之后你可以使用 jcmd 或 JDK Mission Control 将其导出。
你可以修改记录器的行为。为此,你需要设置以 JFR_RECORDING_ 为前缀的环境变量来设定记录参数。前缀之后的部分会转换为小写,下划线会被替换为短横线,因此 JFR_RECORDING_PATH_TO_GC_ROOTS=true 会变成 path-to-gc-roots=true。
可以通过以 JFR_OPT_ 为前缀的环境变量来配置 Flight Recorder 的控制选项。
评论
登录后参与评论
KnowForge