zabbix-添加主机实战【JMX方式】

1、基础知识

1.1、需求

对于一些java应用来说,zabbix可以通过 JMX 的方式来进行主机的监控效果。
JMX 全称为 Java Management Extension 。开启JMX后能观察tomcat服务运行时出现的故障,以及监视内存、cpu等使用情况。

1.2、思路

对监控 JMX 应用程序的原生支持以名为“Zabbix Java gateway”的 Zabbix 守护进程的形式存在,自Zabbix 2.0 开始可用。 Zabbix Java gateway 是一个用 Java 编写的守护进程。
Java 网关接受来自 Zabbix 服务器或代理的传入连接,并且只能用作“被动代理”。
每个 Java 网关的访问直接在 Zabbix 服务器或代理配置文件中配置,因此每个 Zabbix 服务器或Zabbix 代理只能配置一个 Java 网关。如果主机具有 JMX 代理类型的项目和其他类型的项目,则只有JMX 代理项目将传递到 Java 网关进行检索。

1.3、注意

建议 StartJavaPollers 小于或等于 START_POLLERS,否则可能会出现 Java 网关中没有可用线程来服务传入请求的情况

2、环境准备

2.1、主机准备

192.168.10.26
内存:2G
CPU:1核

2.2、配置zabbix仓库

2.2.1、获取下载的地址

2.2.2、配置

# 官网仓库安装,下载速度慢,不建议,国内的
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb

# 手动配置清华源,安装快,给力
cat << 'CAT_END' > /etc/apt/sources.list.d/zabbix.list
# Zabbix main repository
deb https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/6.4/ubuntu/ jammy main
deb-src https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/6.4/ubuntu/ jammy main
CAT_END

cat << 'CAT_END' > /etc/apt/sources.list.d/zabbix-agent2-plugins.list
deb [arch=amd64] https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix-agent2-plugins/1/ubuntu/ jammy main
deb-src [arch=amd64] https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix-agent2-plugins/1/ubuntu/ jammy main
CAT_END
apt update

2.3、安装tomcat环境

主要目标是学习,这里使用快速安装方法

2.3.1、查询tomcat支持的版本

# apt search tomcat
...
tomcat10/lunar 10.1.6-1 all
  Apache Tomcat 10 - Servlet and JSP engine
...

2.3.2、安装tomcat10并启动

apt install -y tomcat10
systemctl start tomcat10
systemctl enable tomcat10 

2.3.3、检查端口是否开启

# netstat -tunlp | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      3161/java 

2.3.4、浏览器测试访问

3、安装zabbix-java-gateway【tomcat主机安装】

3.1、安装

apt install zabbix-java-gateway

3.2、配置【zabbix_java_gateway.conf 】

# grep -E '^[a-zA-Z]' /etc/zabbix/zabbix_java_gateway.conf 
LISTEN_IP="192.168.10.26"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"
START_POLLERS=50
TIMEOUT=30

参考官网地址:https://www.zabbix.com/documentation/current/en/manual/appendix/config/zabbix_java

3.3、启动服务

systemctl start zabbix-java-gateway
systemctl enable zabbix-java-gateway

3.4、查询端口是否开启

# netstat -tunlp | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      3161/java           
tcp6       0      0 :::10052 # 此端口就是zabbix java gateway               :::*                    LISTEN      3475/java 

4、zabbix server 配置JMX

4.1、配置

# grep -i 'java' /etc/zabbix/zabbix_server.conf | grep -v '^#'
JavaGateway=192.168.10.26  # 指定zabbix java gateway 主机的地址
JavaGatewayPort=10052
StartJavaPollers=20        # 设定的java线程数量要小于zabbix-java-gateway的START_POLLERS

4.2、重启服务zabbix-server

systemctl restart zabbix-server

4.3、查询java poller开启进程数量

# ps -aux | grep 'java poller' | grep -v grep  | wc -l
20

5、tomcat应用开启 JMX监控

5.1、查找tomcat的专属启动文件

# find / -name 'catalina.sh'
/usr/share/tomcat10/bin/catalina.sh

5.2、配置catalina.sh

5.2.1、配置内容

# vi /usr/share/tomcat10/bin/catalina.sh
# ----- Execute The Requested Command -----------------------------------------
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote \
        -Djava.rmi.server.hostnam=192.168.10.26 \
        -Dcom.sun.management.jmxremote.port=12345 \
        -Dcom.sun.management.jmxremote.authenticate=false \
        -Dcom.sun.management.jmxremote.ssl=false \
        -Dcom.sun.management.jmxremote.registry.ssl=false"

5.2.2、属性解析

-Dcom.sun.management.jmxremote                     # 当前应用启用JMX监控功能
-Djava.rmi.server.hostname=192.168.10.26           # Tomcat 所在服务器 IP 地址
-Djava.net.preferIPv4Stack=true                    # 使用ipv4避免开启端口是IPv4
-Dcom.sun.management.jmxremote.port=12345          # 专用的jmx监听端口
-Dcom.sun.management.jmxremote.ssl=false           # 是否使用 ssl
-Dcom.sun.management.jmxremote.authenticate=false  # 是否开启认证(有需求的话可以开启认证,需定义用户名和密码)

5.3、重启服务并且检查端口

systemctl restart tomcat10

# netstat -tunlp | grep 12345
tcp6       0      0 :::12345                :::*                    LISTEN      3747/java 

5.4、使用测试工具测试

# 只能在tomcat主机上进行测试
# java -jar cmdline-jmxclient-0.10.3.jar - localhost:12345 java.lang:type=Memory HeapMemoryUsage
05/25/2023 12:53:36 +0000 org.archive.jmx.Client HeapMemoryUsage: 
committed: 32440320
init: 33554432
max: 494665728
used: 16454392

6、zabbix server增加JMX监控

6.1、增加主机和监控模板

6.2、监控状态正常

7、总结

# 总体的流程
zabbix-server -> JavaGateway[192.168.10.26:10052] -> rmi[192.168.10.26:12345]

 

posted @ 2023-05-25 21:03  小粉优化大师  阅读(112)  评论(0编辑  收藏  举报