Tomcat 部署验证
安装tomcat(docker安装,删除注释)
services:
tomcat:
image: tomcat:8.5
ports:
- "8080:8080"
- "12345:12345"
environment:
CATALINA_OPTS:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345 #端口
-Dcom.sun.management.jmxremote.rmi.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.1.1.11 #容器自己的ip
启动 Tomcat:
docker compose up -d
检查 JMX 端口监听:
netstat -tuln | grep 12345
应看到 12345 端口处于监听状态。
二、Zabbix 服务部署验证
配置jdk
sudo yum install java-1.8.0-openjdk
使用:cmdline-jmxclient-0.10.3.jar 测试
java -jar cmdline-jmxclient-0.10.3.jar - 10.1.1.11:12345 java.lang:type=Memory NonHeapMemoryUsage
配置 zabbix_server.conf
LogType=console
DBHost=zabbix-mysql
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
User=zabbix
JavaGateway=zabbix-java-gateway #网关地址
JavaGatewayPort=10052 #网关端口
StartJavaPollers=20 #网关并发数
vi /opt/zabbix-docker/docker-compose.yaml
services:
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:centos-5.2-latest
restart: always
environment:
- DB_SERVER_HOST=zabbix-mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
- ZBX_SERVER_HOST=zabbix-server-mysql
ports:
- 8080:8080
volumes:
- /etc/localtime:/etc/localtime
- /data2/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
networks:
- zbx_net
depends_on:
- zabbix-server-mysql
- zabbix-mysql
zabbix-mysql:
image: mysql:8.0.23
restart: always
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
command:
- mysqld
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8
- --collation-server=utf8_bin
volumes:
- /etc/localtime:/etc/localtime
- /data2/zabbix/db:/var/lib/mysql
networks:
- zbx_net
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:centos-5.2-latest
restart: always
ports:
- 10052:10052
volumes:
- /etc/localtime:/etc/localtime
environment:
- ZBX_JAVAGATEWAY_ENABLE=true
networks:
- zbx_net
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:centos-5.2-latest
restart: always
volumes:
- /data2/zabbix/zabbix-server:/etc/zabbix
- /data2/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- /etc/localtime:/etc/localtime
ports:
- 10051:10051
environment:
- DB_SERVER_HOST=zabbix-mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=root
- ZBX_JAVAGATEWAY=zabbix-java-gateway
- ZBX_JAVAGATEWAYPORT=10052
depends_on:
- zabbix-mysql
- zabbix-java-gateway
networks:
- zbx_net
networks:
zbx_net:
driver: bridge
docker compose up -d
检查容器状态:
docker compose ps
所有容器应处于 Up 状态。
验证 Zabbix Java Gateway:
docker logs zabbix-docker_zabbix-server-mysql_1 | grep "Java Gateway"
应显示 Java Gateway 连接成功。
三、Zabbix Web 配置
登录 Zabbix Web:
浏览器访问 http://服务端IP:8080
默认账号:Admin,密码:zabbix
添加 JMX 监控项:
步骤:配置 → 主机 → 选择目标主机 → JMX 接口 → 添加监控项
关键参数:
类型:JMX agent
键值:jmx["java.lang:type=Memory",NonHeapMemoryUsage]
端口:12345
IP 地址:Tomcat 宿主机的 IP(10.1.1.12)
链接 JMX 模板:
步骤:配置 → 主机 → 选择目标主机 → 模板 → 选择 Template JMX Generic
添加jmx配置
添加模版
观察主机jmx项状态
四、故障排查清单
网络连通性:
# 从 Zabbix Server 容器测试到 Tomcat 的连接
docker exec -it zabbix-docker_zabbix-server-mysql_1 telnet 10.1.1.11:12345
应显示 Connected。
防火墙规则:
# 宿主机执行
sudo firewall-cmd --list-ports | grep -E "12345|10052"
确保 12345/tcp 和 10052/tcp 开放。
日志分析:
Tomcat 日志:docker logs zabbix-docker_tomcat_1
Zabbix Server 日志:docker logs zabbix-docker_zabbix-server-mysql_1
Zabbix Java Gateway 日志:docker logs zabbix-docker_zabbix-java-gateway_1
五、优化建议
JMX 安全加固:
启用认证:authenticate=true
配置 SSL:ssl=true
限制访问 IP:通过防火墙规则
Zabbix 性能调优:
调整 StartJavaPollers 值(根据监控规模)
优化 MySQL 性能(如启用查询缓存)
监控项预配置:
使用 Zabbix 官方 JMX 模板(Template App JMX)
预定义关键指标(如堆内存、线程数、类加载数)