Debezium同步之监测Debezium

目录

   监控 Debezium 连接器的指标

   在本地安装中启用 JMX

Zookeeper JMX 环境变量

Kafka JMX 环境变量

Kafka Connect JMX 环境变量

   在 Docker 中启用 JMX

Docker 中的 Zookeeper JMX 环境变量

Docker 中的 Kafka JMX 环境变量

Docker 中的 Kafka Connect JMX 环境变量

   使用 Prometheus 和 Grafana

   Java 飞行记录


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

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

   监控 Debezium 连接器的指标

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

  • MySQL 连接器指标

  • MongoDB 连接器指标

  • PostgreSQL 连接器指标

  • SQL Server 连接器指标

  • Db2 连接器指标

  • Oracle 连接器指标

  • Cassandra 连接器指标

   在本地安装中启用 JMX

使用 Zookeeper、Kafka 和 Kafka Connect,您可以通过在启动每个服务时设置适当的环境变量来启用 JMX。

Zookeeper JMX 环境变量

Zookeeper 内置了对 JMX 的支持。使用本地安装运行 Zookeeper 时,zkServer.sh脚本会识别以下环境变量:

JMXPORT

启用 JMX 并指定将用于 JMX 的端口号。该值用于指定 JVM 参数-Dcom.sun.management.jmxremote.port=$JMXPORT

JMXAUTH

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

JMXSSL

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

JMXLOG4J

是否应禁用 Log4J JMX MBean。必须是true(默认)或false. 默认值为true. 该值用于指定 JVM 参数-Dzookeeper.jmx.log4j.disable=$JMXLOG4J

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 容器镜像运行 Apache Zookeeper、Kafka 和 Kafka Connect,启用 JMX 需要几个在本地计算机上运行时通常不需要的额外环境变量。这是因为 JVM 需要向 JMX 客户端通告自己的主机名。因此,Debezium 的 Zookeeper、Kafka 和 Kafka Connect 容器镜像使用多个环境变量来启用和配置 JMX。所有图像的大多数环境变量都相同,但存在一些细微差别。

Docker 中的 Zookeeper JMX 环境变量

debezium/zookeeper图像识别以下与 JMX 相关的环境变量:

JMXPORT(必需的)

将用于 JMX 的端口号。该值用于指定以下 JVM 参数:

  • -Dcom.sun.management.jmxremote.port=$JMXPORT

  • -Dcom.sun.management.jmxremote.rmi.port=$JMXPORT

JMXHOST(必需的)

Docker 主机的 IP 地址或可解析的主机名,JMX 使用它来构造发送到 JMX 客户端的 URL。localhostor的值127.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

JMXLOG4J

是否应禁用 Log4J JMX MBean。必须是truefalse。默认值为true. 该值用于指定 JVM 参数-Dzookeeper.jmx.log4j.disable=$JMXLOG4J

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

以下示例 Docker 命令使用具有和环境变量debezium/zookeeper值的映像启动容器,并将 Docker 主机的端口 9010 映射到容器的 JMX 端口:JMXPORTJMXHOST

$ docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 -p 9010:9010 -e JMXPORT=9010 -e JMXHOST=10.0.1.10 debezium/zookeeper:latest

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。localhostor的值127.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 Docker 容器中启用 JMX

以下示例 Docker 命令使用具有和环境变量debezium/kafka值的映像启动容器,并将 Docker 主机的端口 9011 映射到容器的 JMX 端口:JMXPORTHOST_NAME

$ docker run -it --rm --name kafka -p 9092:9092 -p 9011:9011 -e JMXPORT=9011 -e JMXHOST=10.0.1.10 --link zookeeper:zookeeper debezium/kafka:latest

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。localhostor的值127.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

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

以下示例 Docker 命令使用具有和环境变量debezium/connect值的映像启动容器,并将 Docker 主机的端口 9012 映射到容器的 JMX 端口:JMXPORTJMXHOST

$ 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 zookeeper:zookeeper \
  --link kafka:kafka \
  --link mysql:mysql \
  debezium/connect:latest

   使用 Prometheus 和 Grafana

Debezium 和 Kafka 公开的指标可以用Prometheus和Grafana导出和显示。您可以在Debezium 示例存储库中找到所需配置的示例和不同连接器的示例仪表板。

这些仪表板不是 Debezium 本身的一部分,而是尽最大努力维护。

   Java 飞行记录

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_前缀环境变量进行配置。

你可能感兴趣的:(debezium,运维)