使用 JMX 监控 ksqlDB
Monitor ksqlDB with JMX
我已按照此页面上的说明进行操作:https://docs.ksqldb.io/en/latest/operate-and-deploy/monitoring/
所以这是我的 docker-compose:
的 ksqldb-server 部分
ksqldb-server:
image: confluentinc/ksqldb-server:0.15.0
hostname: ksqldb-server
container_name: ksqldb-server
depends_on:
- kafka
- schema-registry
- kafka-connect
ports:
- "8088:8088"
- "1099:1099"
environment:
KSQL_LISTENERS: http://0.0.0.0:8088
KSQL_BOOTSTRAP_SERVERS: kafka:29092
KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"
KSQL_KSQL_SCHEMA_REGISTRY_URL: http://schema-registry:8081
KSQL_KSQL_CONNECT_URL: http://kafka-connect:8083
KSQL_KSQL_QUERY_PULL_METRICS_ENABLED: "true"
KSQL_JMX_OPTS: >
-Djava.rmi.server.hostname=localhost
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.rmi.port=1099
我在同一个 docker-compose 文件中设置了 Prometheus,当我访问 {prometheus-url}/targets 时,我看到 Get "http://ksqldb-server:1099/metrics": EOF
我在研究期间已经尝试了很多配置,包括将 -Djava.rmi.server.hostname
更改为主机的 IP 地址或 ksqldb-server 的容器 IP 地址,但其中 none 有效。有人有解决办法吗?
jmxremote.port
值也不是适当的 Prometheus 目标;它适用于 jconsole、Visualvm 或其他 JMX 监控工具,如您链接到的文档所述
如果要使用 Prometheus,需要下载 JMX exporter agent JAR 并将其安装到容器中,并修改 JVM 参数以包含 agent+scraper port+mbeans 配置文件...
您也可以切换到使用 minikube 并应用 Confluent ksqlDB Helm Chart,does this for you
好吧,在再次处理这个话题六个月后,我设法设置了它。这遵循了 swist 在我的 GitHub issue 中建议的方法,我也是在创建此问题时创建的。
您需要 JMX 导出器。下载它 here
您需要一个 YAML 文件,告诉 JMX 导出器要导出哪些指标。你可以得到它here。如果您 仅 对 ksqlDB 指标感兴趣,请删除所有其他模式,例如kafka 模式。
将 JMX Exporter 和 YAML 文件放在要监视 ksqlDB 实例的每个节点上
在启动ksqlDB之前,创建环境变量KSQL_JMX_OPTS
如下:
export KSQL_JMX_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.util.logging.config.file=logging.properties \
-javaagent:[BLUB]/jmx_prometheus_javaagent.jar=7010:ksqldb.yml"
您需要在每次有新会话时创建此变量或永久创建它。 [BLUB] 是您的 JMX JAR 的绝对路径。
现在您可以 运行 ksqlDB 并且指标在端口 7010 可用(您可以指定任何其他空闲端口)。如果您想拥有一个好的仪表板,请使用此 one。
我已按照此页面上的说明进行操作:https://docs.ksqldb.io/en/latest/operate-and-deploy/monitoring/
所以这是我的 docker-compose:
的 ksqldb-server 部分 ksqldb-server:
image: confluentinc/ksqldb-server:0.15.0
hostname: ksqldb-server
container_name: ksqldb-server
depends_on:
- kafka
- schema-registry
- kafka-connect
ports:
- "8088:8088"
- "1099:1099"
environment:
KSQL_LISTENERS: http://0.0.0.0:8088
KSQL_BOOTSTRAP_SERVERS: kafka:29092
KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"
KSQL_KSQL_SCHEMA_REGISTRY_URL: http://schema-registry:8081
KSQL_KSQL_CONNECT_URL: http://kafka-connect:8083
KSQL_KSQL_QUERY_PULL_METRICS_ENABLED: "true"
KSQL_JMX_OPTS: >
-Djava.rmi.server.hostname=localhost
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.rmi.port=1099
我在同一个 docker-compose 文件中设置了 Prometheus,当我访问 {prometheus-url}/targets 时,我看到 Get "http://ksqldb-server:1099/metrics": EOF
我在研究期间已经尝试了很多配置,包括将 -Djava.rmi.server.hostname
更改为主机的 IP 地址或 ksqldb-server 的容器 IP 地址,但其中 none 有效。有人有解决办法吗?
jmxremote.port
值也不是适当的 Prometheus 目标;它适用于 jconsole、Visualvm 或其他 JMX 监控工具,如您链接到的文档所述
如果要使用 Prometheus,需要下载 JMX exporter agent JAR 并将其安装到容器中,并修改 JVM 参数以包含 agent+scraper port+mbeans 配置文件...
您也可以切换到使用 minikube 并应用 Confluent ksqlDB Helm Chart,does this for you
好吧,在再次处理这个话题六个月后,我设法设置了它。这遵循了 swist 在我的 GitHub issue 中建议的方法,我也是在创建此问题时创建的。
您需要 JMX 导出器。下载它 here
您需要一个 YAML 文件,告诉 JMX 导出器要导出哪些指标。你可以得到它here。如果您 仅 对 ksqlDB 指标感兴趣,请删除所有其他模式,例如kafka 模式。
将 JMX Exporter 和 YAML 文件放在要监视 ksqlDB 实例的每个节点上
在启动ksqlDB之前,创建环境变量
KSQL_JMX_OPTS
如下:export KSQL_JMX_OPTS="-Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -Djava.util.logging.config.file=logging.properties \ -javaagent:[BLUB]/jmx_prometheus_javaagent.jar=7010:ksqldb.yml"
您需要在每次有新会话时创建此变量或永久创建它。 [BLUB] 是您的 JMX JAR 的绝对路径。
现在您可以 运行 ksqlDB 并且指标在端口 7010 可用(您可以指定任何其他空闲端口)。如果您想拥有一个好的仪表板,请使用此 one。