Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置
本实验是在《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
目录
一、proxy简介
- 1、Zabbix架构中的组建
- 2、监控流程
- 3、Zabbix逻辑架构
- 4、常用的监控架构平台
二、zabbix-proxy分布式监的配置
- 1、安装部署zabbix-proxy服务
- 步骤一:在zabbix监控的web界面上移除server3
- 步骤二:在server3上安装zabbix-proxy
- 步骤三:修改server3的主机名为proxy,给三个节点添加地址解析
- 步骤四:数据库
- 步骤五:开启数据库、初始化数据库
- 步骤六:登陆数据库,创建数据库,用户授权
- 步骤七:将数据导入刚创建好的库中
- 步骤八:配置zabbix-proxy的主配置文件、开启服务
- 2、在web界面上编辑agent的proxy代理信息
- 3、在proxy上设置
- 步骤一:开启proxy服务
- 步骤二:查看日志
- 4、在server1上进行设置、查看日志,发现报错
- 5、在web界面设置将server2上的agent代理程序该为proxy
- 6、在server2上配置server指向proxy
- 步骤一:编辑zabbix_agent的主配置文件 、重启zabbix-agent服务在server2上查看是否已经在server3的监控中
- 步骤二:查看看日志
- 步骤三:在server1上重新加载,使得server1和proxy数据同步
- 步骤四:在server1上查看日志(发现没有报错)
- 步骤五:在server2上查看日志看数据是否同步成功
- 7、设置proxy监控java的功能
- 步骤一:在进行上诉的实验后登录并刷新web界面
- 步骤二:配置zabbix_proxy主配置文件开启proxy中的javagateway并且指向server端
- 步骤三:查看日志(查看是否已经关联成功!!!)
- 步骤四:再次刷新(查看实验结果 )
一、proxy简介
1、Zabbix架构中的组建
- Zabbix-server: C语言
- Zabbix-agent: C语言
- Zabbix-web: GUI用于用于实现zabbix的设定和展示,PHP开发
- Zabbix-proxy: 分布式监控环境中专用组件
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接收到请求并且响应<HEADER><DATALEN>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的压力
二、zabbix-proxy分布式监的配置
实验环境
主机名 | 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服务以免对实验造成影响
[aaa@qq.com ~]# systemctl stop zabbix-agent.service
[aaa@qq.com ~]# systemctl disable zabbix-agent.service
步骤二:
在server3上安装zabbix-proxy
[aaa@qq.com ~]# yum install zabbix-proxy-mysql.x86_64 -y ##安装proxy软件
[aaa@qq.com ~]# systemctl stop firewalld ##关闭防火墙
注意:安装的时候使用的是真机的网络yum源,因此需要关闭真机的防火墙
步骤三:
修改server3的主机名为proxy,给三个节点添加地址解析
1、修改主机的名称
[aaa@qq.com ~]# hostnamectl set-hostname proxy ##修改主机名
[aaa@qq.com ~]# exit
logout
Connection to 172.25.6.3 closed.
[aaa@qq.com kiosk]# ssh 172.25.6.3
aaa@qq.com's password:
Last login: Tue Mar 24 15:40:14 2020 from foundation6.ilt.example.com
[aaa@qq.com ~]#
2、在server1、server2上添加解析
[aaa@qq.com ~]# vim /etc/hosts
...
172.25.6.3 server3 proxy
...
步骤四:
安装数据库,这里的数据库用来存放监控项模板
zabbix-server会告诉zabbix-proxy应该去拿哪些数据,因此zabbix-proxy也要有数据库
[aaa@qq.com ~]# yum install mariadb-server.x86_64 -y ##安装数据库
步骤五:
开启数据库、初始化数据库
[aaa@qq.com ~]# systemctl start mariadb.service ##开启数据库
[aaa@qq.com ~]# systemctl enable mariadb.service ##开机自启
[aaa@qq.com ~]# mysql_secure_installation ##初始化数据库
步骤六:
登陆数据库,创建数据库,用户授权
[aaa@qq.com ~]# mysql -uroot -pppp
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to aaa@qq.com identified by 'ppp';
登录查看数据库授权是否成功
[aaa@qq.com ~]# mysql -uzabbix -pppp ##使用zabbix登录数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| zabbix_proxy | ##看到zabbix_proxy成功!!
+--------------------+
登录验证数据库创建是否成功
步骤七:
将数据导入刚创建好的库中
[aaa@qq.com ~]# zcat /usr/share/doc/zabbix-proxy-mysql-4.4.1/schema.sql.gz | mysql -pppp zabbix_proxy ##将数据到取数据库中
查看是否导入成功
[aaa@qq.com ~]# mysql -uzabbix -pppp ##登录数据库中
MariaDB [(none)]> use zabbix_proxy ##进入zabbix_proxy下
MariaDB [zabbix_proxy]> show tables; ##查看数据库中的信息
验证数据库导入是否成功
(发现数据库中多出来很多表九说明导入成功!!!)
步骤八:
配置zabbix-proxy的主配置文件、开启服务
[aaa@qq.com ~]# vim /etc/zabbix/zabbix_proxy.conf ##修改配置文件
...
Server=172.25.6.1 ##服务主机的ip改为server1
ServerPort=10051 ##服务主机监听的端口
Hostname=proxy ##proxy主机的名称
DBPassword=ppp ##数据库的登录密码
...
[aaa@qq.com ~]# systemctl start zabbix-proxy.service ##开启zabbix—proxy服务
[aaa@qq.com ~]# systemctl enable zabbix-proxy.service
2.在web界面设置
步骤一:
编辑agent的proxy代理信息
管理—> agent代理程序 —>创建代理 —> 填写信息 —>添加
3、在proxy上设置
步骤一:
开启proxy服务
[aaa@qq.com ~]# systemctl start zabbix-proxy.service
[aaa@qq.com ~]#
[aaa@qq.com ~]# systemctl enable zabbix-proxy.service
步骤二:
查看日志
步骤二:
查看日志
[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_agentd.log
4.在server1上进行设置
查看日志,发现报错
[aaa@qq.com ~]# 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的监控中
[aaa@qq.com ~]# vim /etc/zabbix/zabbix_agentd.conf
...
Server=172.25.6.3 ##将服务指向agent主机
ServerActive=172.25.6.3
...
[aaa@qq.com ~]# systemctl restart zabbix-agent.service ##重启服务
步骤二:
查看看日志(检查设置是否成功!!!)
[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_agentd.log ##查看日志信息
步骤三:
在server1上重新加载,使得server1和proxy数据同步
[aaa@qq.com ~]# zabbix_server -R config_cache_reload ##重新载入使proxy数据和server1上的数据同步
步骤四:
在server1上查看日志(发现没有报错)
[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_server.log
步骤五:
在server2上:
重启proxy,查看日志
发现proxy可以收到server发给它的数据项模板
[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_agentd.log ##查看日志信息
发现agent正常启动
7、设置proxy监控java的功能
步骤一:
在进行上诉的实验后登录并刷新web界面
发现agent的zabbix监控正常,但是jmx是灰色的
因为agent是指向proxy的,但是proxy上面没有javagateway服务
步骤二:
配置zabbix_proxy主配置文件
开启proxy中的javagateway并且指向server端
[aaa@qq.com ~]# vim /etc/zabbix/zabbix_proxy.conf
...
JavaGateway=172.25.6.1 ##添加JavaGateway
JavaGatewayPort=10052 ##监听的端口信息
StartJavaPollers=5
...
[aaa@qq.com ~]# systemctl restart zabbix-proxy.service ##重启服务
重启zabbix-proxy服务
步骤三:
查看日志(查看是否已经关联成功!!!)
[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_proxy.log ##查看日志信息
步骤四:
再次刷新(查看实验结果 )
上一篇: 15.使用Canvas 绘图(2)
下一篇: SpringMVC