文章目录
- 前言
- 一、zabbix中的JMX监控
- 二、集成告警平台:zabbix监控结合睿象云报警
- 三、分布式监控
- 1.agent端主动回传数据
- 2.proxy代理
前言
一、zabbix中的JMX监控
JMX介绍:
Jmx(Java Management Extensions)java管理拓展
JMX特点:
JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
总的来说:JMX 既是 Java 管理系统的一个标准,一个规范,也是一个接口,一个框架。
JMX监控流程:zabbix server 调用java网关去访问远端的JMX接口8888,然后采集tomcat数据
首先在server3上下载apache-tomcat的源码包和java的openjdk:
[root@server3 ~]# yum install -y java-1.8.0-openjdk.x86_64
[root@server3 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
链接
[root@server3 ~]# cd /usr/local/
[root@server3 local]# ln -s apache-tomcat-7.0.37/ tomcat
接下来我们根据官网的开源文档配置: Apache Tomcat 8 (8.5.81) - Monitoring and Managing Tomcat
修改配置文件,并开启服务
[root@server3 local]# cd tomcat/
[root@server3 tomcat]# cd bin/
[root@server3 bin]# vim catalina.sh ##后附截图
...
CATALINA_OPTS='-Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false'
[root@server3 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
[root@server3 bin]# netstat -antlp|grep :8888
tcp6 0 0 :::8888 :::* LISTEN 8025/java
开启的8888端口就是JMX的远程监控端口。
server1安装zabbix-java-gateway,开启服务,修改server配置
[root@server1 ~]# yum install -y zabbix-java-gateway
保持java网关的默认配置开启服务:
[root@server1 zabbix]# systemctl enable --now zabbix-java-gateway.service
[root@server1 zabbix]# netstat -antlp|grep :10052
tcp6 0 0 :::10052 :::* LISTEN 15393/java
修改server配置
[root@server1 zabbix]# vim /etc/zabbix/zabbix_server.conf ##后附截图
...
JavaGateway=192.168.56.11
JavaGatewayPort=10052
StartJavaPollers=5 ##同时开启多少个Java线程与之连接
[root@server1 zabbix]# systemctl restart zabbix-server.service
新增的组件就是监控java的组件:
前端配置
关联模板
部署完成
二、集成告警平台:zabbix监控结合睿象云报警
地址:https://caweb.aiops.com/
首先先注册一个睿象云账号,进去之后选择zabbix:
创建appkey
在server端进入 /etc/zabbix/zabbix_server.conf 可以看到我们的告警路径:
根据睿象云官方步骤操作即可:
部署探针
下载安装包放置/usr/lib/zabbix/alertscripts目录:
[root@server1 ~]# cd /usr/lib/zabbix/alertscripts
[root@server1 alertscripts]# tar xf ca_zabbix_release-4.0.1.tar.gz
[root@server1 alertscripts]# cd cloudalert/bin
[root@server1 bin]# ./install.sh 80521b7c-eb16-46d8-a0fd-6a621f4938e4 ##自动调用api:
请输入Zabbix管理地址:http://192.168.117.11/zabbix
Check connection success!
请输入Zabbix管理员账号:Admin
请输入Zabbix管理员密码: % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 170 0 70 100 100 583 833 --:--:-- --:--:-- --:--:-- 840
Authentication success!
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 109 0 42 100 67 1067 1703 --:--:-- --:--:-- --:--:-- 1717
Check api version success!
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 314 0 57 100 257 1078 4862 --:--:-- --:--:-- --:--:-- 4942
Create new media type success!
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 192 0 54 100 138 1030 2632 --:--:-- --:--:-- --:--:-- 2653
Create new group success!
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 398 0 51 100 347 452 3076 --:--:-- --:--:-- --:--:-- 3098
Create new user success!
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1660 0 51 100 1609 750 23676 --:--:-- --:--:-- --:--:-- 24014
Create new action success!
Install zabbix agent success!
[root@server1 alertscripts]# chown zabbix.zabbix cloudalert/ -R ##保证zabbix权限
为保证实验纯净,在网页前端把我们不用的告警媒介全部禁掉:
在睿象云平台设置告警提醒类型和方式:
测试:
首先,我们把server端的agent服务停掉:
[root@server2 ~]# systemctl stop zabbix-agent.service
因为agent端的触发器里有一个五分钟之内检测不到agent就会报警:
稍等片刻后,先显示此时已经连不上了,在监测-问题处已经可以看到,然后会在睿象云平台看到,并以自己设置好的方式进行提醒
[root@server2 ~]# systemctl start zabbix-agent.service
重启服务后,会显示问题已解决
三、分布式监控
1.agent端主动回传数据
之前的配置都是server端主动采集agent端的数据,此种方式agent端越多zabbix主机的压力就越大,接下来我们让agent端主动将数据发给agent端:(主动被动完全取决于agent端link的模板)
在网页前端,将server2上的模板取消连接并清理:
重新选择模板并更新,此模板是agent端主动将信息回传回来:
可以看到监控项已变更:
此时agent主动回传数据已经完成。
2.proxy代理
上面虽然提高了sever端的效率,但是server端就一个,他没有得到水平扩容的能力:(可以查看官方文档:https://www.zabbix.com/documentation/5.0/zh/manual/distributed_monitoring ),我们可以通过添加一个proxy代理来进一步减轻server端的压力。
Zabbix 代理
Zabbix proxy 可以代替 Zabbix server 收集性能和可用性数据,承担一些收集数据的负担,分担了 Zabbix server 的负荷。
此外,使用proxy是实现集中式和分布式监控的最简单方法,所有 agents 和 proxies 发送给一个 Zabbix server,从而集中收集所有数据。
Zabbix proxy 使用场景:
监控远程区域设备
监控本地网络不稳定区域
监控上千设备时,减轻 zabbix server 的负荷
简化分布式监控的维护
我们将server2作为proxy节点,并修改主机名为proxy;在前端网页删除server2主机
[root@server2 ~]# systemctl disable --now zabbix-agent.service
[root@server2 ~]# hostnamectl set-hostname proxy
[root@proxy ~]# vim /etc/hosts
192.168.56.12 server2 proxy
[root@proxy ~]# yum install zabbix-proxy-mysql ##安装proxy软件
在server1上创建proxy数据库
在server1上创建proxy数据库
[root@server1 ~]# mysql -p
mysql> create database zabbix_proxy character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> create user 'zabbix'@'%' identified by 'Westos-123';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on zabbix_proxy.* to 'zabbix'@'%';
Query OK, 0 rows affected (0.00 sec)
从proxy拷贝数据库文件
[root@proxy ~]# cd /usr/share/doc/zabbix-proxy-mysql-5.0.31/
[root@proxy zabbix-proxy-mysql-5.0.31]# scp schema.sql.gz server1:
导入proxy数据库
[root@server1 ~]# zcat schema.sql.gz | mysql -uzabbix -pYakexi+007 zabbix_proxy
修改proxy配置
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.117.11 #指向zabbix_server
Hostname=proxy #主机名
DBHost=192.168.117.11 #proxy数据库配置
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=Westos-123
JavaGateway=192.168.117.11 #jmx配置
JavaGatewayPort=10052
StartJavaPollers=5
[root@proxy ~]# systemctl restart zabbix-proxy.service ##重开服务
前端创建proxy
为主机配置代理
再重启proxy服务
[root@proxy ~]# systemctl restart zabbix-proxy.service
修改agent配置,指向proxy地址
[root@server3 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.56.12
ServerActive=192.168.56.12
[root@server3 ~]# systemctl restart zabbix-agent.service
查看日志,没有报错就表示成功
[root@server3 ~]# cat /var/log/zabbix/zabbix_agentd.log
如果agent日志中出现类似的报错,说明proxy还没有完全同步server端数据,需要再次重启proxy服务
最终配置完毕后,监控状态也是可用的