您正在查看 Debezium 未发布版本的文档。
如果您想查看此页面的最新稳定版本,请在此 查看。

监控 Debezium

您可以使用 Apache KafkaKafka Connect 提供的 JMX 指标来监控 Debezium。要使用这些指标,您必须在启动 Kafka 和 Kafka Connect 服务时启用它们。启用 JMX 涉及设置正确的环境变量。必须设置的环境变量取决于您是在本地安装还是在 Docker 容器中运行 Kafka 和 Kafka Connect。

如果您在同一台机器上运行多个服务,请务必为每个服务使用不同的 JMX 端口。

用于监控 Debezium 连接器的指标

除了 Kafka 和 Kafka Connect 中对 JMX 指标的内置支持外,每个连接器还提供额外的指标,您可以使用它们来监控其活动。

在本地安装中启用 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

JMX 选项,它们在启动时直接传递给 JVM。默认选项为

  • -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。localhost127.0.0.1 的值将不起作用。通常,可以使用 0.0.0.0。该值用于指定 JVM 参数 -Djava.rmi.server.hostname=$JMXHOST

JMXAUTH

JMX 客户端连接时是否必须使用密码认证。必须是 truefalse。默认为 false。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH

JMXSSL

JMX 客户端是否使用 SSL/TLS 进行连接。必须是 truefalse。默认为 false。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.ssl=$JMXSSL

示例 1. 在 Kafka Docker 容器中启用 JMX

以下示例 Docker 命令使用 debezium/kafka 镜像启动一个容器,为 JMXPORTHOST_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。localhost127.0.0.1 的值将不起作用。通常,可以使用 0.0.0.0。该值用于指定 JVM 参数 -Djava.rmi.server.hostname=$JMXHOST

JMXAUTH

JMX 客户端连接时是否必须使用密码认证。必须是 truefalse。默认为 false。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH

JMXSSL

JMX 客户端是否使用 SSL/TLS 进行连接。必须是 truefalse。默认为 false。该值用于指定 JVM 参数 -Dcom.sun.management.jmxremote.ssl=$JMXSSL

示例 2. 在 Kafka Connect Docker 容器中启用 JMX

以下示例 Docker 命令使用 debezium/connect 镜像启动一个容器,为 JMXPORTJMXHOST 环境变量提供值,并将 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 公开的指标可以通过 PrometheusGrafana 进行导出和显示。您可以在 Debezium 示例存储库 中找到所需配置和不同连接器示例仪表板的示例。

这些仪表板不是 Debezium 本身的一部分,并且是基于尽力而为的原则维护的。

Java Flight Recording

Debezium Kafka Connect 的容器镜像还为 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 的控制选项。