说明:
腾讯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=3600proxyMode是代理模式,在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,需要利用腾讯的外网负载均衡功能做一个端口映射
这样,通过外网负载均衡的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
到这里zabbix proxy就已经搭建完成,剩下的就是添加agentd
六. 添加agentd客户端
Configuration|Host,添加新主机
添加跟正常的差不多,就是由代理监控那里要选择一下我们刚刚添加的代理节点,agent接口里面填的IP也是agent的IP,不是proxy的IP