Skip to main content
 首页 » 编程设计

Zabbix JMX Tomcat监控

2024年02月04日25落叶

我一直在尝试设置 Zabbix 来监控 2 台不同的 Amazon EC2 机器上的 2 台 tomcat 服务器,但没有成功。

主机上的 Z 为绿色,但 JMX 为红色,并出现这些错误
- ZBX_TCP_READ() 失败:[4] 系统调用中断
- 其他错误 [111] 连接被拒绝 以及许多此类错误,一个接一个,从某种意义上说,我解决了一个错误,然后又出现了一个新错误。


这些是一些假设
所有机器都运行 Ubuntu 12.10 及更高版本
服务器的IP地址: 66.55.12.120(运行Zabbix服务器v2.2.4(修订版46772)(2014年6月23日)
代理的 IP 地址: 87.52.45.198(运行 Zabbix 代理 v2.2.2(修订版 42525)(2014 年 2 月 12 日)
我的本地计算机的 IP 地址: 76.89.54.111

这是我到目前为止所做的事情。

在服务器端:
1)使用sudo apt-get install zabbix-server-mysql安装Zabbix_server。
2) GUI、mysql数据库均已安装并配置。
3) 以下是我在文件
/etc/zabbix/zabbix_server.conf

中所做的仅有的 3 处更改
  ...  
  JavaGateway=localhost 
  JavaGatewayPort=10052 
  StartJavaPollers=5 
  ... 

4) 使用 sudo apt-get install zabbix-java-gateway 安装 Zabbix Java 网关。
5) 以下是我在文件中所做的仅有的 3 处更改
/etc/zabbix/zabbix_java_gateway.conf

  ...  
  LISTEN_IP="127.0.0.1" 
  LISTEN_PORT=10052 
  START_POLLERS=5 
  ... 


在客户端: 1)使用安装的Zabbix客户端 sudo apt-get install zabbix-agent
2) 以下是我在文件中所做的仅有的 3 处更改

  /etc/zabbix/zabbix_agentd.conf  
  ...  
  Server=66.55.12.120 
  StartAgents=5 
  ServerActive=66.55.12.120:10051 
  Hostname=Security-test-JMX-EC2 
  ... <br /> 

3) 主机名与在 GUI 上创建主机时提到的主机名相同。

我认为 IP 和端口存在一些问题。因此,以下是从机器的 Amazon EC2 安全组获取的两台机器的出站规则

OUTBOUND RULES for SERVER SECURITY GROUP: 
Type      Protocol  Port   Source           Reasoning 
Custom-   TCP       8080   0.0.0.0/0 
TCP Rule     
 
All ICMP  All       N/A    0.0.0.0/0     
 
Custom-   TCP       10052  27.52.52.128/32   For access from Agent 
TCP Rule 
 
Custom-   TCP       8081   76.84.120.130/32  To access Zabbix GUI from- 
TCP Rule                                     -my local machine's web browser 
 
Custom-   TCP       10051  27.52.52.128/32   As the agent responds to-  
TCP Rule                                     -the server on Port 10051TCP Rule- 
                                             -Must allow inbound communications- 
                                             - from the agent. 
 
Custom-   TCP       11000  27.52.52.128/32   The agent's JMX reporting- 
TCP Rule                                     -happens on port 11000(not on 12345). 
 
OUTBOUND RULES for CLIENT SECURITY GROUP: 
Type    Protocol Port   Source 
HTTPS     TCP   443     0.0.0.0/0 
 
Custom-   TCP   10050   66.55.12.120/32 
TCP Rule 
 
Custom-   TCP   10052   66.55.12.120/32 
TCP Rule 
 
Custom-   TCP   11000   66.55.12.120/32 
TCP Rule 
 
HTTP      TCP   80  76.89.54.111/32 
 
Custom-   TCP   8080    76.89.54.111/32 
TCP Rule 
 
Custom-   TCP   8443    76.89.54.111/32 
TCP Rule 


我缺少什么?请指导我。 任何帮助表示赞赏。

谢谢
古瑟姆

请您参考如下方法:

如果可以,请在 zabbix 主机上运行 VisualVm(可能使用隧道 X session ),并查看是否可以使用它连接到目标 JVM。如果您无法从中进行连接,您将无法从 Zabbix 进行连接。

尝试使用以下 CATALINA_OPTS,替换为您希望 JMX 监听的目标上的 IP:

export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=falseom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<LOCAL_IP>" 

这将禁用所有 JMX 安全性,因此请注意!

一旦你希望它能够连接,Zabbix 中的“Tomcat JMX”项目也都是不正确的!例如

Zabbix 默认值不正确:

jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",bytesReceived]

正确输入:

jmx["Catalina:type=ThreadPool,name=\"http-bio-8080\"", bytesReceived]

请注意转义的引号和不正确的线程名称。将 Mbeans 插件添加到 VisualVM,并使用它浏览目标 VM 上的 MBean,并检查 Zabbix 名称。

它最终确实有效,但设置起来确实很痛苦。然而,Zabbix 是少数完全支持 JMX 的开源监控工具之一!