先简单的介绍一下zabbix分布式的2种实现方式proxy与node的优缺点
Proxy:
Zabbix proxy 是一个或多个从监控设备收集监测数据和发送到zabbixserver 的进程,属于代表zabbix server 的运行,所有收集到的数据被暂时存放在代理服务器,之后统一由代理服务器转发给zabbix proxy 所属的服务器,部署proxy是可选的,但是对于分担单个zabbix服务器的负载是非常有益的。如果尽在proxies上收集数据,那么将减轻服务器上的进程对cpu资源和磁盘I/O的消耗。
zabbix proxy在没有本地管理员的情况下,是集中监控远程区域,分支和网络的理想解决方案。
Node:
使用node节点,建立一个层次结构的分布式监测。每一个节点是一个完整的zabbix服务器,和负责监视它自己的位置,zabbx 支持高达一千个节点的分布式安装。
使用node节点的好处:
1、在大型的网络中,涉及多个地点建立一个多层次的监控,在层次结构中的一个节点报告其主节点。
2、一个节点可以在本地配置或通过其主节点,它的所有子节点的配置数据的副本。
3、数据收集更多的免疫可能的通信问题。如果主站和子节点之间的通信发生故障时,节点可以保持运行状态。历史信息和事件存储在本地。当通信又回来了,一个子节点将有选择地将数据发送到主节点。
4、节点可以分裂一个单一的zabbix服务器的工作,监视数千台主机。
5、新节点的连接和拆卸,不影响现有的设置的功能。无需重新启动所需的任何节点。
所以本文选为以proxy为主是zabbix分布式(同时我的跨机房监控方案也是proxy,好处是安装配置方便,坏处是如果proxy代理有问题,所有监控主机都报警,但可以在配置里添加一个检测来解决)。
环境为
Ip 状态 hostname 软件版本 系统 192.168.56.101 zabbix agent server 2.0.6 ubuntu server 12.04 192.168.56.102 zabbix server centos 2.0.6 centos 6.2 192.168.56.103 zabbix proxy client1 2.0.6 ubuntu server 12.04
1.安装依赖库
如果是debian或者ubuntu需要安装
apt-get install mysql-server gcc make libghc6-hsql-mysql-dev libcurl4-openssl-dev libsnmp-dev snmp curl
如果是centos或者redhat的需要安装
yum install install mysql-server mysql-devel gcc make wget net-snmp* curl libcurl
2.添加用户
groupadd zabbix useradd zabbix -g zabbix –s /sbin/nologin
注意:
如果是redhat或者centos系统,如果不想用户登录,可以使用-s /sbin/nologin,如果是debian或者ubuntu系统,可以使用-s /usr/sbin/nologin
3.下载源码包
去官网下载的zabbix-2.0.6.tar.gz,或者在这里下载http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.6/zabbix-2.0.6.tar.gz
4.解压与安装
tar zxvf zabbix-2.0.6.tar.gz cd zabbix-2.0.6 ./configure --prefix=/usr/local/zabbix --enable-proxy --with-mysql --with-net-snmp --with-libcurl make install
5.配置数据库
mysql –u root –p create database zabbix character set utf8; grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; mysql -uzabbix -p'zabbix' zabbix < database/mysql/schema.sql
6.修改zabbix_proxy.conf文件
下面是我的修改后的配置
root@client1:/usr/local/zabbix/etc# grep -v "#" zabbix_proxy.conf|sed '/^$/d' Server=192.168.56.102 Hostname=client1 LogFile=/tmp/zabbix_proxy.log DBName=zabbix DBUser=zabbix DBPassword=zabbix DBSocket=/tmp/mysql.sock ProxyLocalBuffer=0 ProxyOfflineBuffer=1 ConfigFrequency=600 DataSenderFrequency=10 StartPollers=10 StartPollersUnreachable=1 StartTrappers=10 StartPingers=1 CacheSize=64M Timeout=10 TrapperTimeout=30
参数介绍
Server=192.168.56.102 #zabbix server的ip地址或者域名 Hostname=client1 #proxy主机名,在zabbix web会以这个名字为准 #DB 设定档 DBName=zabbix DBUser=zabbix DBPassword=zabbix DBSocket=/tmp/mysql.sock ProxyLocalBuffer=0 #设定为0小时,除非有其他第三方应用和插件需要调用 ProxyOfflineBuffer=1 #proxy或者server无法连接时,保留离线的监控数据的时间,单位小时 ConfigFrequency=600 #server和proxy配置修改同步时间间隔,设定5-10分钟即可。 DataSenderFrequency=10 #数据发送时间间隔,10-30s; #网络传输质量越好,可以设定间隔时间越短,监控效果也越迅速; StartPollers=10 #开启多线程数,一般不要超过30个; StartPollersUnreachable=1 #该线程用来单独监控无法连接的主机,1个即可; StartTrappers=10 #trapper线程数 StartPingers=1 #fping线程数 CacheSize=64M #用来保存监控数据的缓存数,根据监控主机数量适当调整; Timeout=10 #超时时间,设定不要超过30s,不然会拖慢其他监控数据抓取时间; TrapperTimeout=30 #同上 FpingLocation=/usr/sbin/fping #配合simple check icmp检测使用,如不需要可关闭; 其他配置默认即可;
7.启动
/usr/local/zabbix/sbin/zabbix_proxy
8.去agent节点修改配置文件
主要修改
Server=192.168.56.103 ServerActive=192.168.56.103:10051
其中Server为代理服务器的ip,ServerActive也为代理服务器的ip与端口
然后重启服务
ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
9.web添加proxy节点
高级配置-》节点管理-》代理节点-》创建节点
填写proxy的主机名即可,与配置文件一致:
Active - 代理服务器将主动连接zabbix服务器并请求配置数据
被动模式 - zabbix服务器连接代理服务器
现在我也把代理的主机server给添加了,如果不想在这里添加,可以在系统配置-》主机-》Create host,”由代理监控”选择刚添加的proxy
查看状态
同时也提醒大家一下,如果使用自动注册功能,并且在agent里设置了serveractive的话,就能自动的在server上注册,但一定要先建立好节点。