本实验是在《Zabbix分布式监控(7)—— Zabbix使用JMX监控tomcat》实验基础上进行的,已经配置好了zabbix-server和zabbix-agent主机,server1上已经装好zabbix-java-gateway、server2上已经装好tomcat, server并在zabbix-web界面上配置好了图案的汉字化。
上一篇博客的链接:https://blog.csdn.net/dghfttgv/article/details/105086652
1、Zabbix架构中的组建
2、监控流程
一个监控系统运行的大概的流程是这样的:
agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,
zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
【主动监测】通信过程如下:
zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy。
很多人会提出疑问:zabbix多久获取一次active items?它会根据配置文件中的RefreshActiveChecks的频率进行,
如果获取失败,那么将会在60秒之后重试。分两个部分:
- (1)获取ACTIVE ITEMS列表
- Agent打开TCP连接(主动检测变成Agent打开)
- Agent请求items检测列表
- Server返回items列表
- Agent 处理响应
- 关闭TCP连接
- Agent开始收集数据
(2)主动检测提交数据过程如下:
Agent建立TCP连接 Agent提交items列表收集的数据 Server处理数据,并返回响应状态 关闭TCP连接
【被动监测】通信过程如下:
- Server打开一个TCP连接
- Server发送请求agent.ping\n
- Agent接收到请求并且响应
1 - Server处理接收到的数据1
- 关闭TCP连接
这里,被动模式每次都需要打开一个tcp连接,这样当监控项越来越多时,就会出现server端性能问题了。
那实际监控中是用主动的还是被动的呢?这里主要涉及两个地方:
1、新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。
2、agentd配置文件中StartAgents参数的设置,如果为0,表示禁止被动模式,否则开启。
一般建议不要设置为0,因为监控项目很多时,可以部分使用主动,部分使用被动模式。
3、Zabbix逻辑架构
定义一个template模板,里面包括多个items,trigger,graphs套用给host或者hostgroups。
server监控项目items通过zabbix poller进程(可以有多个进程实现并发处理)包括snmp,agent协议收集被监控主机信息。
如果阈值超过triggers触发器规定,就是形成一个events事件,然后actions处理动作
(包括运行预先定制的脚本,不成功发送email或SMS)。
在服务器升级的时候提前设定maintenance维护模式不对服务器产生告警通知。
通过逻辑拓扑图展示工作流程
4、常用的监控架构平台
1、server-agentd模式:
这个是最简单的架构了,常用于监控主机比较少的情况下。
2、server-proxy-agentd模式:
这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。
当需要监控的agent很多的时候,并且每个agent上面有很多的数据项被监控,这对于zabbix-server来说无疑是一种压力
因此zabbix-server不再主动去找agent,而是由zabbix-proxy去主动找agent拿监控的数据,然后再发送给zabbix-server
这样就可以缓解监控方zabbix-server的压力
实验环境
主机名 | ip | 服务 | 说明 |
---|---|---|---|
server1 | 172.25.6.1 | zabbix-server,zabbix-web,mariadb-server zabbix-agent | zabbix-server监控方 |
server2 | 172.25.6.2 | zabbix-agent | zabbix-agent被监控方 |
server3 | 172.25.6.3 | zabbix-proxy | zabbix-proxy代理 |
本实验的原理 :
zabbix-server<----------zabbix-proxy------------>zabbix-agent
proxy主动去采集被监控方agent的数据然后再主动发给server
实验步骤:
1、安装部署zabbix-proxy服务
步骤一:
在zabbix监控的web界面上
删除server3主机,因为要把server3主机作为zabbix-proxy
停止zabbix-agent服务以免对实验造成影响
[root@server3 ~]# systemctl stop zabbix-agent.service
[root@server3 ~]# systemctl disable zabbix-agent.service
步骤二:
在server3上安装zabbix-proxy
[root@server3 ~]# yum install zabbix-proxy-mysql.x86_64 -y ##安装proxy软件
[root@server3 ~]# systemctl stop firewalld ##关闭防火墙
注意:安装的时候使用的是真机的网络yum源,因此需要关闭真机的防火墙
步骤三:
修改server3的主机名为proxy,给三个节点添加地址解析
1、修改主机的名称
[root@server3 ~]# hostnamectl set-hostname proxy ##修改主机名
[root@server3 ~]# exit
logout
Connection to 172.25.6.3 closed.
[root@foundation6 kiosk]# ssh 172.25.6.3
[email protected]'s password:
Last login: Tue Mar 24 15:40:14 2020 from foundation6.ilt.example.com
[root@proxy ~]#
2、在server1、server2上添加解析
[root@server2 ~]# vim /etc/hosts
...
172.25.6.3 server3 proxy
...
步骤四:
安装数据库,这里的数据库用来存放监控项模板
zabbix-server会告诉zabbix-proxy应该去拿哪些数据,因此zabbix-proxy也要有数据库
[root@proxy ~]# yum install mariadb-server.x86_64 -y ##安装数据库
步骤五:
开启数据库、初始化数据库
[root@proxy ~]# systemctl start mariadb.service ##开启数据库
[root@proxy ~]# systemctl enable mariadb.service ##开机自启
[root@proxy ~]# mysql_secure_installation ##初始化数据库
步骤六:
登陆数据库,创建数据库,用户授权
[root@proxy ~]# mysql -uroot -pppp
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'ppp';
登录查看数据库授权是否成功
[root@proxy ~]# mysql -uzabbix -pppp ##使用zabbix登录数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| zabbix_proxy | ##看到zabbix_proxy成功!!
+--------------------+
登录验证数据库创建是否成功
步骤七:
将数据导入刚创建好的库中
[root@proxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-4.4.1/schema.sql.gz | mysql -pppp zabbix_proxy ##将数据到取数据库中
查看是否导入成功
[root@proxy ~]# mysql -uzabbix -pppp ##登录数据库中
MariaDB [(none)]> use zabbix_proxy ##进入zabbix_proxy下
MariaDB [zabbix_proxy]> show tables; ##查看数据库中的信息
验证数据库导入是否成功
(发现数据库中多出来很多表九说明导入成功!!!)
步骤八:
配置zabbix-proxy的主配置文件、开启服务
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf ##修改配置文件
...
Server=172.25.6.1 ##服务主机的ip改为server1
ServerPort=10051 ##服务主机监听的端口
Hostname=proxy ##proxy主机的名称
DBPassword=ppp ##数据库的登录密码
...
[root@proxy ~]# systemctl start zabbix-proxy.service ##开启zabbix—proxy服务
[root@proxy ~]# systemctl enable zabbix-proxy.service
2.在web界面设置
步骤一:
编辑agent的proxy代理信息
管理—> agent代理程序 —>创建代理 —> 填写信息 —>添加
3、在proxy上设置
步骤一:
开启proxy服务
[root@proxy ~]# systemctl start zabbix-proxy.service
[root@proxy ~]#
[root@proxy ~]# systemctl enable zabbix-proxy.service
步骤二:
查看日志
步骤二:
查看日志
[root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log
4.在server1上进行设置
查看日志,发现报错
[root@server1 ~]# cat /var/log/zabbix/zabbix_server.log
5.在web界面设置
将server2上的agent代理程序该为proxy
配置—> 主机 —> server2—> agent代理程序接口—> agent代理程序检测 —> 更新
将server2上的agent代理程序该为proxy
6、在server2上配置server指向proxy
步骤一:
编辑zabbix_agent的主配置文件 、重启zabbix-agent服务在server2上查看是否已经在server3的监控中
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
...
Server=172.25.6.3 ##将服务指向agent主机
ServerActive=172.25.6.3
...
[root@server2 ~]# systemctl restart zabbix-agent.service ##重启服务
步骤二:
查看看日志(检查设置是否成功!!!)
[root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log ##查看日志信息
步骤三:
在server1上重新加载,使得server1和proxy数据同步
[root@server1 ~]# zabbix_server -R config_cache_reload ##重新载入使proxy数据和server1上的数据同步
步骤四:
在server1上查看日志(发现没有报错)
[root@server1 ~]# cat /var/log/zabbix/zabbix_server.log
步骤五:
在server2上:
重启proxy,查看日志
发现proxy可以收到server发给它的数据项模板
[root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log ##查看日志信息
发现agent正常启动
7、设置proxy监控java的功能
步骤一:
在进行上诉的实验后登录并刷新web界面
发现agent的zabbix监控正常,但是jmx是灰色的
因为agent是指向proxy的,但是proxy上面没有javagateway服务
步骤二:
配置zabbix_proxy主配置文件
开启proxy中的javagateway并且指向server端
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
...
JavaGateway=172.25.6.1 ##添加JavaGateway
JavaGatewayPort=10052 ##监听的端口信息
StartJavaPollers=5
...
[root@proxy ~]# systemctl restart zabbix-proxy.service ##重启服务
重启zabbix-proxy服务
步骤三:
查看日志(查看是否已经关联成功!!!)
[root@proxy ~]# cat /var/log/zabbix/zabbix_proxy.log ##查看日志信息
步骤四:
再次刷新(查看实验结果 )