这个实验是在zabbix监控平台已搭建的基础上进行的,并且由一个监控主机server2(zabbix-agent)
一、agent采集监控数据方式(键值对)
agent采集数据是以键值对的方式进行采集,一个键对应一个值。
二、通过jmx协议监控java程序
JMX 全称是Java Management Extensions,即Java管理扩展。Java程序会开放一些端口,用来获取运行状况。
从Zabbix2.0开始,内置了监控JMX的功能,叫做"Zabbix Java Gateway ",在Zabbix Serve上会启动名为"Zabbix Java Gateway "的进程,当需要获取JMX数据时,Zabbix Server会"问 "JMX Gateway,然后JMX Gateway 根据JMX管理API去查询需要的数据。在使用时,Java程序不需要在代码中新增任何东西,只需要在启动时加上一些JVM参数,使得它可以支持使用监控端口监控JMX。
数据采集过程:
zabbix server --------->zabbix java gatetway------------>java app
zabbix使用JMX监控tomcat
1.配置server2(agent客户端),安装tomcat和jdk,并打开tomcat
https://tomcat.apache.org #可以查看tomcat的官方文档
[root@server2 ~]# rpm -ivh jdk-8u121-linux-x64.rpm #下载kdk插件
[root@server2 ~]# tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local/ #解压tomcat到指定位置
[root@server2 ~]# cd /usr/local/
[root@server2 local]# ls
apache-tomcat-8.5.24 etc include lib64 nginx share
bin games lib libexec sbin src
[root@server2 local]# ln -s apache-tomcat-8.5.24/ tomcat ##将解压的包做个软连接方便用
[root@server2 ~]# vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS='-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8888 ##指定端口
-Dcom.sun.management.jmxremote.ssl=false ##是否对连接开启ssl加密,默认开启
-Dcom.sun.management.jmxremote.authenticate=false' ##是否开启用户验证
[root@server2 ~]# cd /usr/local/tomcat/bin/
[root@server2 bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@server2 bin]# systemctl restart zabbix-agent
[root@server2 bin]# netstat -antlp
tcp6 0 0 :::8888 :::* LISTEN 2867/java
tcp6 0 0 :::10050 :::* LISTEN 2920/zabbix_agentd
这时可以访问到tomcat:
2.zabbix-server端
[root@server1 zabbix]# yum install -y zabbix-java-gateway.x86_64 ##安装JMX插件
[root@server1 zabbix]# cd /etc/zabbix/
[root@server1 zabbix]# vim zabbix_java_gateway.conf #修改配置文件
9 LISTEN_IP="0.0.0.0"
17 LISTEN_PORT=10052
35 START_POLLERS=5
[root@server1 zabbix]# systemctl start zabbix-java-gateway #开启服务
[root@server1 zabbix]# systemctl enable zabbix-java-gateway #设置开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-java-gateway.service to /usr/lib/systemd/system/zabbix-java-gateway.service.
[root@server1 zabbix]# netstat -antlp | grep 10052
tcp6 0 0 :::10052 :::* LISTEN 17655/java
[root@server1 zabbix]# vim zabbix_server.conf
288 JavaGateway=172.25.46.1
296 JavaGatewayPort=10052
304 StartJavaPollers=5
[root@server1 zabbix]# systemctl restart zabbix-server
ps aux #可以查看到运行的以下进程
配置->主机(server2)->JMX添加
配置->主机(server2)-模版
server2的JMX图表变亮
如果JXM图表还是灰色,就检查以下两边的配置文件后重启服务
三、通过SNMP协议采集数据
即通过SNMP的查询和陷入进行监控数据的采集。适合对网络设备,如防火墙、交换机、路由器等的监控数据的采集。目前Zabbix系统支持SNMP v1 SNMP v2c和SNMP v3版本的协议。通过SNMP协议采集数据不需要在被监控设备上安装任何第三方软件,但是需要配置和开启SNMP服务,并允许监控服务器查询。这个是我们目前使用比较多的数据采集方法。缺点是,其通信协议走的UDP协议,传输为不可靠传输,所以存在丢数据的现象。同时,MIB库一般是跟被监控设备有关,不适合监控自定义的项目。
四、通过IPMI代理采集数据
智能平台管理接口(IPMI,Intelligent Platform Management Interface),是管理基于Intel架构的企业系统中所使用的外围设备所采用的一种工业标准。通过这种方法采集数据的优点是:它可以采集到其它方法无法采集到的硬件状态信息,例如CPU温度、风扇转数等等。缺点是,需要被监控硬件能够支持。而这个一般在购买服务器(这种方法一般只适用于服务器)时是需要单独购买控制卡的。