本文共 3843 字,大约阅读时间需要 12 分钟。
先简单的介绍一下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代理有问题,所有监控主机都报警,但可以在配置里添加一个检测来解决)。
环境为
1 2 3 4 | 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需要安装
1 | apt- get install mysql-server gcc make libghc6-hsql-mysql-dev libcurl4-openssl-dev libsnmp-dev snmp curl |
如果是centos或者redhat的需要安装
1 | yum install install mysql-server mysql-devel gcc make wget net-snmp* curl libcurl |
2.添加用户
1 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,或者在这里下载
4.解压与安装
1 2 3 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.配置数据库
1 2 3 4 | 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文件
下面是我的修改后的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 |
参数介绍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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.启动
1 | /usr/local/zabbix/sbin/zabbix_proxy |
8.去agent节点修改配置文件
主要修改
1 2 | Server= 192.168 . 56.103 ServerActive= 192.168 . 56.103 : 10051 |
其中Server为代理服务器的ip,ServerActive也为代理服务器的ip与端口
然后重启服务
1 2 | 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上注册,但一定要先建立好节点。
本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1334573,如需转载请自行联系原作者