zabbix2 ---- java gateway
zabbix2 ---- java gateway
java gateway
Zabbix Java gateway 的守护进程基于 Java 语言编写。为了在特定主机上找到 JMX 计数器的值,Zabbix server 向 Zabbix Java gateway 发送请求,后者使用 JMX 管理 API 来远程查询相关的应用。该应用不需要安装额外的软件。只需要在启动时,命令行添加 -Dcom.sun.management.jmxremote 选项即可
Zabbix server 或 Zabbix proxy 配置文件中,可以直接配置每个 Java gateway 的访问,因此每个 Zabbix pserver 或 Zabbix proxy 只能配置一个 Java gateway。如果主机将有 JMX agent 或其他类型的监控项,则只将 JMX agent 监控项传递给 Java gateway 进行检索
当必须通过 Java gateway 更新监控项时,Zabbix server 或 proxy 将连接到 Java gateway 并请求该值,Java gateway 将检索该值并将其传递回 Zabbix server 或 Zabbix proxy。 因此,Java gateway 不会缓存任何值。
Zabbix server 或 proxy 尝试尽可能地将请求汇集到单个 JMX 目标(受监控项取值间隔影响),并在单个连接中将它们发送到 Java Gateway 以获得更好的性能。
此外,建议让 StartJavaPollers 选项的值小于或等于 START_POLLERS,否则可能会出现 Java gateway 中没有可用线程来为传入请求提供服务的情况
https://www.zabbix.com/documentation/4.0/zh/manual/concepts/java
https://tomcat.apache.org/tomcat-8.5-doc/monitoring.html
zabbix server --> java gateway --> tomcat app1 --> java gateway --> zabbix server
zabbix server --> agent --> zabbix server
zabbix server开启java gateway
grep '^[a-Z]' /etc/zabbix/zabbix_server.conf
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=192.168.10.11
DBName=zabbix
DBUser=zabbix
DBPassword=pass123
JavaGateway=192.168.10.2 #java gateway地址
JavaGatewayPort=10052
StartJavaPollers=5 #与java gateway收集器相等 START_POLLERS
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=8M
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
Timeout=30
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr
确保java gateway启用,java gateway 可以是独立的一台主机
yum install zabbix-java-gateway
修改zabbix java gateway配置文件
grep '^[a-Z]' /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5 #收集器设置,与java-gateway收集器相等,根据采集时间来决定
TIMEOUT=30 #采集数据超时时间
修改tomcat启动脚本
catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote #启用远程监控JMX
-Dcom.sun.management.jmxremote.port=12345 #默认启动JMX端口号,要与zabbix添加主机端口保持一致即可
-Dcom.sun.management.jmxremote.ssl=false #不使用ssl认证
-Dcom.sun.management.jmxremote.authenticate=false #不使用用户名密码
-Djava.rmi.server.hostname=192.168.10.12" #tomcat本机的IP,zabbix通过此IP来收集相关数据
启动并验证端口是否启动 12345
修改zabbix agent配置文件
grep ^[a-Z] /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.2
ServerActive=127.0.0.1
Hostname=192.168.10.12
Include=/etc/zabbix/zabbix_agentd.d/*.conf
zabbix web添加
使用cmdline-jmxclient测试是否可以获取数据
https://github.com/zabbix-book/cmdline-jmxclient
http://www.crawler.archive.org/cmdline-jmxclient/downloads.html
当前分配的线程数
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.10.12:12345
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.10.12:12345 'Catalina:name="http-bio-8080",type=ThreadPool' currentThreadCount
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.10.12:12345 'Catalina:name="http-bio-8080",type=ThreadPool' maxThreads
官方默认的模板数据较少,可使用自定义模板进行导入数据
应用自定义模板