zoukankan      html  css  js  c++  java
  • 第6章Zabbix分布式监控

    Zabbix是一个分布式的监控系统。分布式监控适合跨机房、跨地域的网络监控。从多个Proxy收集数据,而每个Proxy可以采集多个设备的数据,从而轻松地构建分布式监控系统。

    ZabbixProxy可以用在以下环境中。

    1.监控远程区域。

    2.监控拥有不可靠网络连接的区域。

    3.当监控以千计的设备时分担Zabbix-Server服务器的压力。

    4.简化分布式监控的维护。

    Proxy架构的使用环境可以用6-1来表示。

    6-1

    1.ProxyServer之间只需要一个TCP端口连接。因此,从安全方面考虑,需要一条防火墙规则来确保数据传输的安全。

    2.Proxy采集到的数据在传送给服务器之前都报错在本地。这样保证ProxyServer断开数据不丢失。ProxyLocalBufferProxyOfflineBuffer控制数据在本地保存的时间。

    1.1准备部署Proxy环境

    下面要开始实践了,首先说明下实践环境:

    主机名

    IP地址

    描述

    版本

    linux-node1.com

    192.168.90.11

    Zabbix-Server

    CentOS7

    linux-node2.com

    192.168.90.12

    Zabbix-Proxy

    CentOS7

    linux-node4.com

    192.168.90.14

    Zabbix-Agent

    CentOS6

    1.2安装Zabbix-proxy

    源码安装Zabbix的时候加上--enable-proxy参数。

    1.采用yum安装,yum安装方式如下:

    [root@linux-node2 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

    [root@linux-node2 ~]# yum install zabbix-proxy zabbix-proxy-mysql mariadb -y

    1.  导入Zabbix-Proxy的数据库

    [root@linux-node2 ~]# systemctl start mariadb

    MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;

    MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbi_proxy@localhost identified by 'zabbix_proxy';

    MariaDB [(none)]> flush privileges;

    [root@linux-node2 ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.0.3/

    [root@linux-node2 zabbix-proxy-mysql-3.0.3]# zcat schema.sql.gz |mysql -uroot zabbix_proxy

    3.配置Zabbix-Proxy.conf

    zabbix-proxy配置文件详解:https://www.zabbix.com/documentation/3.0/manual/appendix/config/zabbix_proxy

    [root@linux-node2 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf

    Server=192.168.90.11

    Hostname=Zabbix proxy

    LogFile=/var/log/zabbix/zabbix_proxy.log

    LogFileSize=0

    PidFile=/var/run/zabbix/zabbix_proxy.pid

    DBName=zabbix_proxy

    DBUser=zabbix_proxy

    DBPassword=zabbix_proxy

    SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

    Timeout=4

    ExternalScripts=/usr/lib/zabbix/externalscripts

    LogSlowQueries=3000

    4.启动Zabbix-Proxy服务

    [root@linux-node2 ~]# systemctl start zabbix-proxy

    [root@linux-node2 ~]# systemctl enable zabbix-proxy

    1.3Web界面配置Proxy

    Zabbix Server GUI中配置zabbix-proxy:单击AdministratorPrxies 如图6-2所示

    6-2

    1.4监控Proxy架构主机

    1.监控一台Agent主机,Agent端调整为主动模式,以及监听的ServerProxyIP

    [root@linux-node4 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf

    PidFile=/var/run/zabbix/zabbix_agentd.pid

    LogFile=/var/log/zabbix/zabbix_agentd.log

    LogFileSize=0

    Server=127.0.0.1

    ServerActive=192.168.90.12

    Hostname=linux-node4.com

    Include=/etc/zabbix/zabbix_agentd.d/

    2.添加主机的方式和正常模式一样。唯一的不同是Monitored by Proxy选项选择的是Proxy名称。如图6-3

    6-3

    3.添加主动模式)模板,如图6-4所示

    6-4

    4.查看使用Proxy监控,如图6-5、图6-6

    6-5

    6-6

     

    如果zabbix_proxy出现错误:started to fail (ZBX_TCP_READ() failed: [4] Interrupted system call)

    解决办法:注释server以及Proxy主机上hosts中取消Zabbix Agent,重启server以及Proxy

    1.5Proxy主被模式

    zabbix-agent的工作方式有Active(主动模式)和Passive(被动模式)。Zabbix-ServerZabbix-Agent之间的通信是Zabbix的专用协议,数据格式为JSON。主动模式由于是Agent将采集到的数据主动发送给Server,而不要需要Server每次连接Agent等待采集,所以采用主动模式会使Zabbix-Server具有最好的性能,在实际生产环境中,一定要将工作模式设置为主动模式,并尽可能地采用更多的Proxy,以降低Server的负担。

    1.5.1Porxy被动模式

    默认情况下,Zabbix-Agent工作在被动模式下,工作的模式是由KeyZabbix_agent.conf参数配置决定的。

    6-7

    zabbix-agent.conf文件中设置被动模式,即将Server参数设置为允许连接的Server,修改配置文件需要重启Zabbix-agent

    Server 127.0.0.1,192.168.90.11

    被动模式的流程

    1.Server打开一个TCP连接。

    2.Server发送一个KeyAgent.ping

    3.Agent接受到这个请求,然后响应数据

    4.Server对接收到的数据进行处理。

    5.TCP连接关闭。

    1.5.2Proxy主动模式

    zabbix-agent.conf文件中设置主动模式,即将ServerActive参数设置为允许连接的{Server|Proxy},即可配置主动模式。修改配置文件需要重启Zabbix-agent

    ServerActive 127.0.0.1,192.168.90.11

    item中,将Items的检测方式修改为主动模式(默认为被动模式),为了提高性能或者环境需要,将所有的items批量修改为主动模式。

    6-8

    6-9

    AgentServer请求检测列表

    1.AgentServer建立一个TCP的连接。

    2.Agent请求需要检测的数据列表。

    3.Server响应Agent,发送一个Items列表。

    4.Agent响应请求。

    5.TCP连接完成本次会话后关闭。

    6.Agent开始周期性地收集数据。

    Agent发送数据给Server

    1.AgentServer建立一个TCP连接。

    2.Agent发送在采集周期内,需要采集数据给server

    3.Server处理Agent发送的数据。

    4.TCP连接关闭。

  • 相关阅读:
    网络安全分析
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1540 机器
    java实现 洛谷 P1540 机器
  • 原文地址:https://www.cnblogs.com/xuliangwei/p/6658849.html
Copyright © 2011-2022 走看看