欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

程序员文章站 2022-07-11 11:51:09
...

本实验是在《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架构中的组建

  1. Zabbix-server: C语言
  2. Zabbix-agent: C语言
  3. Zabbix-web: GUI用于用于实现zabbix的设定和展示,PHP开发
  4. Zabbix-proxy: 分布式监控环境中专用组件

 

Zabbix分布式监控(8)—— 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列表
  1.     Agent打开TCP连接(主动检测变成Agent打开)
  2.     Agent请求items检测列表
  3.     Server返回items列表
  4.     Agent 处理响应
  5.     关闭TCP连接
  6.     Agent开始收集数据

(2)主动检测提交数据过程如下:

  Agent建立TCP连接
    Agent提交items列表收集的数据
    Server处理数据,并返回响应状态
    关闭TCP连接

【被动监测】通信过程如下:

  1.     Server打开一个TCP连接
  2.     Server发送请求agent.ping\n
  3.     Agent接收到请求并且响应<HEADER><DATALEN>1
  4.     Server处理接收到的数据1
  5.     关闭TCP连接

 

这里,被动模式每次都需要打开一个tcp连接,这样当监控项越来越多时,就会出现server端性能问题了。

那实际监控中是用主动的还是被动的呢?这里主要涉及两个地方:
1、新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。
2、agentd配置文件中StartAgents参数的设置,如果为0,表示禁止被动模式,否则开启。
一般建议不要设置为0,因为监控项目很多时,可以部分使用主动,部分使用被动模式。

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

3、Zabbix逻辑架构

定义一个template模板,里面包括多个items,trigger,graphs套用给host或者hostgroups。
server监控项目items通过zabbix poller进程(可以有多个进程实现并发处理)包括snmp,agent协议收集被监控主机信息。
如果阈值超过triggers触发器规定,就是形成一个events事件,然后actions处理动作
(包括运行预先定制的脚本,不成功发送email或SMS)。
在服务器升级的时候提前设定maintenance维护模式不对服务器产生告警通知。

通过逻辑拓扑图展示工作流程

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

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分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

停止zabbix-agent服务以免对实验造成影响

[aaa@qq.com ~]# systemctl stop zabbix-agent.service 
[aaa@qq.com ~]# systemctl disable zabbix-agent.service 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤二:

在server3上安装zabbix-proxy

[aaa@qq.com ~]# yum install zabbix-proxy-mysql.x86_64  -y      ##安装proxy软件
[aaa@qq.com ~]# systemctl stop firewalld                       ##关闭防火墙

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

注意:安装的时候使用的是真机的网络yum源,因此需要关闭真机的防火墙

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤三:

修改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 ~]# 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

2、在server1、server2上添加解析

[aaa@qq.com ~]# vim /etc/hosts
...

172.25.6.3    server3 proxy
 
...

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤四:

安装数据库,这里的数据库用来存放监控项模板
zabbix-server会告诉zabbix-proxy应该去拿哪些数据,因此zabbix-proxy也要有数据库

[aaa@qq.com ~]# yum install mariadb-server.x86_64 -y     ##安装数据库

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤五:

开启数据库、初始化数据库

[aaa@qq.com ~]# systemctl start mariadb.service      ##开启数据库
[aaa@qq.com ~]# systemctl enable mariadb.service     ##开机自启
[aaa@qq.com ~]# mysql_secure_installation            ##初始化数据库 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤六:

登陆数据库,创建数据库,用户授权

[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成功!! 
+--------------------+

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

登录验证数据库创建是否成功 

Zabbix分布式监控(8)—— 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分布式监控(8)—— zabbix-proxy分布式监控配置

验证数据库导入是否成功

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

(发现数据库中多出来很多表九说明导入成功!!!)

 

步骤八:

配置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 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

2.在web界面设置

步骤一:

编辑agent的proxy代理信息

管理—> agent代理程序 —>创建代理 —> 填写信息 —>添加

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

3、在proxy上设置

步骤一:

开启proxy服务

[aaa@qq.com ~]# systemctl start zabbix-proxy.service 
[aaa@qq.com ~]# 
[aaa@qq.com ~]# systemctl enable zabbix-proxy.service 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤二:

查看日志

步骤二:

查看日志

[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_agentd.log

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

 

4.在server1上进行设置

查看日志,发现报错

[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_server.log 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

5.在web界面设置

将server2上的agent代理程序该为proxy

配置—> 主机 —> server2—> agent代理程序接口—> agent代理程序检测 —> 更新

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

将server2上的agent代理程序该为proxy

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-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            ##重启服务

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤二:

查看看日志(检查设置是否成功!!!)

[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_agentd.log     ##查看日志信息 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤三:

在server1上重新加载,使得server1和proxy数据同步

[aaa@qq.com ~]# zabbix_server -R config_cache_reload      ##重新载入使proxy数据和server1上的数据同步

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤四:

在server1上查看日志(发现没有报错)

[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_server.log 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤五:

在server2上:

重启proxy,查看日志

发现proxy可以收到server发给它的数据项模板

[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_agentd.log     ##查看日志信息 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

发现agent正常启动

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

 

7、设置proxy监控java的功能

步骤一:

在进行上诉的实验后登录并刷新web界面

发现agent的zabbix监控正常,但是jmx是灰色的
因为agent是指向proxy的,但是proxy上面没有javagateway服务

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤二:

配置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分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

重启zabbix-proxy服务

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤三:

查看日志(查看是否已经关联成功!!!)

[aaa@qq.com ~]# cat /var/log/zabbix/zabbix_proxy.log     ##查看日志信息 

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置

 

步骤四:

再次刷新(查看实验结果 )

Zabbix分布式监控(8)—— zabbix-proxy分布式监控配置