我一直在尝试设置 Zabbix 来监控我在 2 台不同 Amazon EC2 机器上的 2 个 tomcat 服务器,但徒劳无功。
主机上的 Z 是绿色的,但是 te 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 日))
我 native 的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 的开源监控工具之一!
关于Zabbix JMX Tomcat 监控,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24862967/