Debezium JMX相關的技術博客:
- Debezium系列之:安裝jmx導出器監(jiān)控debezium指標
- Debezium系列之:為Debezium集群JMX頁面增加監(jiān)控,JMX頁面出現(xiàn)異常時發(fā)送飛書告警,確保任務能夠獲取debezium集群指標
- Debezium系列之:深入解讀Debezium重要的jmx指標
- Debezium系列之:mysql JMX metrics指標詳細解讀
更多內(nèi)容請閱讀博主Debezium專欄,博主會持續(xù)更新Debezium專欄:
- Debezium專欄
Docker相關技術可以參考博主下面幾篇技術博客:
- Docker核心原理,Docker在線安裝和離線安裝
- Docker 鏡像和容器
- docker系列之:Centos7安裝docker compose
- Docker編排工具Compose詳解
一、概述
您可以使用 Apache Zookeeper、Apache Kafka 和 Kafka Connect 提供的 JMX 指標來監(jiān)控 Debezium。要使用這些指標,您必須在啟動 Zookeeper、Kafka 和 Kafka Connect 服務時啟用它們。啟用 JMX 涉及設置正確的環(huán)境變量。您必須設置的環(huán)境變量取決于您是在本地安裝還是在 Docker 容器中運行 Zookeeper、Kafka 和 Kafka Connect。
注意:
- 如果您在同一臺計算機上運行多個服務,請確保為每個服務使用不同的 JMX 端口。
二、用于監(jiān)控 Debezium 連接器的指標
除了 Kafka、Zookeeper 和 Kafka Connect 中對 JMX 指標的內(nèi)置支持之外,每個連接器還提供其他指標,您可以使用這些指標來監(jiān)控其活動。
- Db2 connector metrics
- MongoDB connector metrics
- MySQL connector metrics
- Oracle connector metrics
- PostgreSQL connector metrics
- SQL Server connector metrics
- Cassandra connector metrics
三、在本地安裝中啟用 JMX
使用 Zookeeper、Kafka 和 Kafka Connect,您可以通過在啟動每個服務時設置適當?shù)沫h(huán)境變量來啟用 JMX。
1.Zookeeper JMX 環(huán)境變量
Zookeeper 內(nèi)置了對 JMX 的支持。使用本地安裝運行 Zookeeper 時,zkServer.sh 腳本可識別以下環(huán)境變量:
- JMXPORT:啟用 JMX 并指定將用于 JMX 的端口號。該值用于指定 JVM 參數(shù) -Dcom.sun.management.jmxremote.port=$JMXPORT。
- JMXAUTH:JMX 客戶端在連接時是否必須使用密碼身份驗證。必須是真或假。默認為 false。該值用于指定 JVM 參數(shù) -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH。
- JMXSSL:JMX 客戶端是否使用 SSL/TLS 進行連接。必須是真或假。默認為 false。該值用于指定 JVM 參數(shù) -Dcom.sun.management.jmxremote.ssl=$JMXSSL。
- JMXLOG4J:是否應禁用 Log4J JMX MBean。必須為 true(默認)或 false。默認為 true。該值用于指定 JVM 參數(shù) -Dzookeeper.jmx.log4j.disable=$JMXLOG4J。
2.KafkaJMX環(huán)境變量
使用本地安裝運行 Kafka 時,kafka-server-start.sh 腳本可識別以下環(huán)境變量:
- JMX_PORT:啟用 JMX 并指定將用于 JMX 的端口號。該值用于指定 JVM 參數(shù) -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
3.Kafka Connect JMX 環(huán)境變量
使用本地安裝運行 Kafka 時,connect-distributed.sh 腳本可識別以下環(huán)境變量:
- JMX_PORT:啟用 JMX 并指定將用于 JMX 的端口號。該值用于指定 JVM 參數(shù) -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 需要幾個額外的環(huán)境變量,而在本地計算機上運行時通常不需要這些變量。這是因為 JVM 需要主機名來向 JMX 客戶端通告自己。因此,Debezium 的 Zookeeper、Kafka 和 Kafka Connect 容器映像使用多個環(huán)境變量來啟用和配置 JMX。所有圖像的大多數(shù)環(huán)境變量都是相同的,但也有一些細微的差異。
1.Docker 中的 Zookeeper JMX 環(huán)境變量
debezium/zookeeper 映像可識別以下與 JMX 相關的環(huán)境變量:
JMXPORT(必填)
將用于 JMX 的端口號。該值用于指定以下 JVM 參數(shù):
- -Dcom.sun.management.jmxremote.port=$JMXPORT
- -Dcom.sun.management.jmxremote.rmi.port=$JMXPORT
JMXHOST(必填)
- Docker 主機的 IP 地址或可解析主機名,JMX 使用它來構造發(fā)送到 JMX 客戶端的 URL。 localhost 或 127.0.0.1 值將不起作用。通常,可以使用 0.0.0.0。該值用于指定 JVM 參數(shù) -Djava.rmi.server.hostname=$JMXHOST。
JMX認證
- JMX 客戶端在連接時是否必須使用密碼身份驗證。必須是真或假。默認為 false。該值用于指定 JVM 參數(shù) -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH。
JMXSSL
- JMX 客戶端是否使用 SSL/TLS 進行連接。必須是真或假。默認為 false。該值用于指定 JVM 參數(shù) -Dcom.sun.management.jmxremote.ssl=$JMXSSL。
JMXLOG4J
- 是否應禁用 Log4J JMX MBean。必須是真或假。默認為 true。該值用于指定 JVM 參數(shù) -Dzookeeper.jmx.log4j.disable=$JMXLOG4J。
示例 1. 在 Zookeeper Docker 容器中啟用 JMX
以下示例 Docker 命令使用 debezium/zookeeper 映像以及 JMXPORT 和 JMXHOST 環(huán)境變量的值啟動容器,并將 Docker 主機的端口 9010 映射到容器的 JMX 端口:
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
quay.io/debezium/zookeeper:latest
2.Docker 中的 Kafka JMX 環(huán)境變量
debezium/kafka 映像可識別以下與 JMX 相關的環(huán)境變量:
JMXPORT(必填)
將用于 JMX 的端口號。該值用于指定以下 JVM 參數(shù):
- -Dcom.sun.management.jmxremote.port=$JMXPORT
- -Dcom.sun.management.jmxremote.rmi.port=$JMXPORT
JMXHOST(必填)
- Docker 主機的 IP 地址或可解析主機名,JMX 使用它來構造發(fā)送到 JMX 客戶端的 URL。 localhost 或 127.0.0.1 值將不起作用。通常,可以使用 0.0.0.0。該值用于指定 JVM 參數(shù) -Djava.rmi.server.hostname=$JMXHOST。
JMXAUTH
- JMX 客戶端在連接時是否必須使用密碼身份驗證。必須是真或假。默認為 false。該值用于指定 JVM 參數(shù) -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH。
JMXSSL
- JMX 客戶端是否使用 SSL/TLS 進行連接。必須是真或假。默認為 false。該值用于指定 JVM 參數(shù) -Dcom.sun.management.jmxremote.ssl=$JMXSSL。
示例 2. 在 Kafka Docker 容器中啟用 JMX
以下示例 Docker 命令使用 debezium/kafka 映像以及 JMXPORT 和 HOST_NAME 環(huán)境變量的值啟動容器,并將 Docker 主機的端口 9011 映射到容器的 JMX 端口:
docker run -it --rm --name kafka
-p 9092:9092
-p 9011:9011
-e JMXPORT=9011
-e JMXHOST=10.0.1.10
--link zookeeper:zookeeper quay.io/debezium/kafka:latest
3.Docker 中的 Kafka Connect JMX 環(huán)境變量
debezium/connect 映像可識別以下與 JMX 相關的環(huán)境變量:
JMXPORT (Required)
將用于 JMX 的端口號。該值用于指定以下 JVM 參數(shù):
- -Dcom.sun.management.jmxremote.port=$JMXPORT
- -Dcom.sun.management.jmxremote.rmi.port=$JMXPORT
JMXHOST(必填)
- Docker 主機的 IP 地址或可解析主機名,JMX 使用它來構造發(fā)送到 JMX 客戶端的 URL。 localhost 或 127.0.0.1 值將不起作用。通常,可以使用 0.0.0.0。該值用于指定 JVM 參數(shù) -Djava.rmi.server.hostname=$JMXHOST。
JMXAUTH
- JMX 客戶端在連接時是否必須使用密碼身份驗證。必須是真或假。默認為 false。該值用于指定 JVM 參數(shù) -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH。
JMXSSL
- JMX 客戶端是否使用 SSL/TLS 進行連接。必須是真或假。默認為 false。該值用于指定 JVM 參數(shù) -Dcom.sun.management.jmxremote.ssl=$JMXSSL。
示例 3. 在 Kafka Connect Docker 容器中啟用 JMX
以下示例 Docker 命令使用 debezium/connect 映像以及 JMXPORT 和 JMXHOST 環(huán)境變量的值啟動容器,并將 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 zookeeper:zookeeper \
--link kafka:kafka \
--link mysql:mysql \
quay.io/debezium/connect:latest
五、使用 Prometheus 和 Grafana
Debezium 和 Kafka 公開的指標可以通過 Prometheus 和 Grafana 導出和顯示。
更多內(nèi)容參考博主下面這篇技術博客:
- Debezium系列之:監(jiān)控 Debezium 實例
更詳細的實現(xiàn)步驟,可以移步博主Debezium專欄。
六、Java Flight Recording
Kafka Connect 的 Debezium 容器映像還為 JDK Flight Recorder 提供易于使用的支持。要啟用記錄,需要設置環(huán)境變量 ENABLE_JFR=true。然后,容器啟動時將自動開始錄制。默認情況下,記錄處于啟用狀態(tài),即使用默認設置完成連續(xù)記錄,然后您可以使用 jcmd 或 JDK Mission Control 轉儲記錄。
可以修改記錄器的行為。為此,您需要設置以 JFR_RECORDING_ 為前綴的環(huán)境變量來設置錄制參數(shù)。前綴后面的部分轉換為小寫,下劃線替換為破折號,因此 JFR_RECORDING_PATH_TO_GC_ROOTS=true 變?yōu)?path-to-gc-roots=true。文章來源:http://www.zghlxwxcb.cn/news/detail-514126.html
Flight Recorder控制選項可以通過 JFR_OPT_ 前綴的環(huán)境變量進行配置。文章來源地址http://www.zghlxwxcb.cn/news/detail-514126.html
到了這里,關于Debezium系列之:監(jiān)控 Debezium的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!