zabbix通过proxy代理监控腾讯cvm服务器

说明:
腾讯CVM服务器,特别是openqq的服务器是没有外网IP的。如果需要通过外网服务器监控腾讯CVM服务器,方法有2种:
一种是每台CVM都映射外网出来(把每台CVM的10050端口-zabbix agentd端口映射到外网)。。。。这种是不安全也是很不方便的;
另一种则是把其中一台CVM(以后简称proxy)映射到外网(把proxy的10051端口-zabbix proxy端口映射到外网),然后其它的内网CVM服务器将数据(通过内网)传送到proxy,再由proxy(通过外网)传送到zabbix server服务器。
openqq的CVM服务器只有在同一区才内网互通,如广州二区跟广州二区内网互通,广州二区跟广州一区内网就不通,请注意。

具体:
一. 编译安装zabbix proxy,方法跟zabbix server差不多,不过proxy不需要web服务,只需要单启proxy进程就可以
1.1 编译安装

# useradd -M -s /sbin/nologin zabbix  //建立zabbix帐号,不需要家目录,也不需要登录
# tar xvf zabbix-2.2.6.tar.gz
# cd zabbix-2.2.6
# ./configure --prefix=/usr/local/zabbix --enable-proxy --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl
# make && make install

 
1.2 复制启动脚本、拷贝bin文件
#复制agentd的启动脚本

# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
# chmod +x /etc/init.d/zabbix_agentd
# vim /etc/init.d/zabbix_agentd   //修改BASEDIR为/usr/local/zabbix

 
#复制proxy的启动脚本

# cp /etc/init.d/zabbix_agentd /etc/init.d/zabbix_proxy  //proxy跟agentd的启动脚本差不多,按下面修改下就可以
# vim /etc/init.d/zabbix_proxy //修改第8行的@name为zabbix_proxy、修改第25行的BINARY_NAME为zabbix_proxy

 
#拷贝bin文件

# cd /usr/local/zabbix/bin/ && for i in *;do ln -s /usr/local/zabbix/bin/${i} /usr/bin/${i};done
# cd /usr/local/zabbix/sbin/ && for i in *;do ln -s /usr/local/zabbix/sbin/${i} /usr/sbin/${i};done

 
1.3 建立zabbix proxy的数据库,内网CVM服务器在发送到zabbix server之前都是存放在proxy的数据库里的

> create database zabbix character set utf8;
> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
> flush privileges;
> source database/mysql/schema.sql  #需要注意的是proxy不需要导入data.sql 和 images.sql 这两份SQL,否则会出问题

 
1.4 添加相应服务,这个其实有没有做好像都一样

# cat >> /etc/services <

 
二. 修改proxy配置,参照如下改

# egrep -v "^#|^$" /usr/local/zabbix/etc/zabbix_proxy.conf
ProxyMode=1   //ProxyMode为1表示被动模式,即proxy等待server来取数据
Server=x.x.x.x  //x.x.x.x表示zabbix server的IP
Hostname=Openqq Proxy
LogFile=/tmp/zabbix_proxy.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/tmp/mysql.sock
#ConfigFrequency=3600

proxyMode是代理模式,在zabbix server的web里面配置会有选择,0是主动模式,1是被动模式。配置成1被动模式。设置成主动模式时,openqq的CVM好像无法主动推送监控数据到zabbix server去。
Server 是指定zabbix Server 的地址
Hostname 是指定proxy的名称,一会在zabbix server的web配置里填的名称要和这个一样
ConfigFrequency 这个默认注释,默认值为3600,当proxy处于被动模式时,这个值是没有用的。只有当proxy处于主动模式时ConfigFrequency才有意义。

三. 修改zabbix server配置,修改ProxyConfigFrequency,ProxyDataFrequency为以下值
ProxyConfigFrequency=60
ProxyDataFrequency=60
这里要特别讲一下,也是当初搞得我特别郁闷的:zabbix server也有ConfigFrequency参数,这个是当proxy设置为被动模式时才有用的。当proxy处于被动模式时,zabbix server会根据zabbix_server.conf的ConfigFrequency,主动向proxy推送需要监控哪几台数据、监控哪些值,proxy就会根据server的要求发送监控数据给server。
如果proxy设置成被动模式,zabbix server的zabbix_server.conf的ConfigFrequency又设置成非常长,就有可能导致zabbix server告警无法监控agentd。而这时proxy、agentd也会出现cannot send list of active checks to [zabbix server IP]: host [host1] not monitored.这也是网上其他人没有提及到。
当然如果后面不再添加新主机,把ProxyConfigFrequency弄长点也便于减轻zabbix server的压力。

四. 设置CVM的负载均衡,将proxy的10051端口映射出来
腾讯的CVM是不对外服务的,要想zabbix server能连接proxy,需要利用腾讯的外网负载均衡功能做一个端口映射z1
z2
这样,通过外网负载均衡的vip:vport访问到内部zabbix proxy的10051端口了。

五. zabbix server的web添加proxy节点
Administartion|DM,选择新建DM,弹出以下界面
Proxy name代理的名称,跟前面proxy配置的Hostname一致
Proxy mode代理的类型,选passive,跟前面proxy配置的一致
Interface,这里的ip,port就选CVM的外网负载均衡的vip:vport。vip最好选跟zabbix server同线路的ip
z3
到这里zabbix proxy就已经搭建完成,剩下的就是添加agentd

六. 添加agentd客户端
Configuration|Host,添加新主机
z4
添加跟正常的差不多,就是由代理监控那里要选择一下我们刚刚添加的代理节点,agent接口里面填的IP也是agent的IP,不是proxy的IP

发表评论

邮箱地址不会被公开。 必填项已用*标注