一、通过JMX监控 JVM
默认情况下,在 ./bin/zkServer.sh 脚本中是默认开启了JMX监控的,并且是不需要认证的,详情可见ZOOMAIN变量;
ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=$JMXPORT -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH -Dcom.sun.management.jmxremote.ssl=$JMXSSL -Dzookeeper.jmx.log4j.disable=$JMXLOG4J org.apache.zookeeper.server.quorum.QuorumPeerMain"
但是一般情况下为了数据保密是需要认证和授权,这个时候就需要添加以下变量,并将上述$JMXAUTH变量设置为true
ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=$JMXPORT -Dcom.sun.management.jmxremote.authenticate=$JMXAUTH -Dcom.sun.management.jmxremote.ssl=$JMXSSL -Dzookeeper.jmx.log4j.disable=$JMXLOG4J -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access org.apache.zookeeper.server.quorum.QuorumPeerMain"
==注意:==如果你想添加其他系统参数,也可以通过此方式添加;想要加深了解JMX,请阅读这篇文件
二、JVM设置
可以在 ./bin/zkEnv.sh 文件中的以下配置中新增JVM相关配置
# default heap for zookeeper server
ZK_SERVER_HEAP="${ZK_SERVER_HEAP:-1000}"
export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
三、Prometheus 进行指标监控
要开启prometheus指标监控,需要启用 Prometheus MetricsProvider 设置,可以将以下配置新增到zoo.cfg配置文件中,其中端口默认是7000;
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpPort=7000
并且在prometheus的配置文件中新加如下配置
cat > /tmp/test-zk.yaml <<EOF
global:
scrape_interval: 10s
scrape_configs:
- job_name: test-zk
static_configs:
- targets: ['192.168.10.32:7000','192.168.10.33:7000','192.168.10.34:7000']
EOF
cat /tmp/test-zk.yaml
告警设置,详见zookeeper监控官网,想要了解更多prometheus 请阅读我的prometheus专栏详解。