zabbix小结(十一)zabbix proxy架构

2014年7月10日 发表评论 阅读评论

一、zabbix proxy 概述

zabbix小结(一)zabbix概述 篇中有介绍过master -- proxy架构,其多用在在跨机房、跨网络的环境中 ,除此之外,其还可以减小master 的压力。proxy 虽然在安装过程中也需要配置数据库,不过其只向数据库中写入 代理主机信息,并不存入数据信息 。其架构图如下:

二、zabbix proxy的安装

由于在 zabbix小结(二)zabbix的安装 篇中有介绍到zabbix server端(master 端)的安装 ,所以这里就略过 master 的安装部分,主要介绍 proxy 的安装 。 

1、安装必备软件环境

# yum install -y gcc make cmake mysql-server mysql-devel
net-snmp  net-snmp  net-snmp-devel  curl curl-devel perl-DBI
libxml libxml2-devel 

注:操作系统为centos 的情况下,默认源里没有fping 软件包,需要从第三方源里下载安装 。

2、添加用户

# groupadd  -g 201 zabbix
# useradd -g zabbix -u 201 -m zabbix -s /sbin/nologin

3、下载zabbix及安装

这里以源码包为例,和master保持一致,版本选的还是2.3.3

# wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.3/zabbix-2.2.3.tar.gz
# tar zxvf zabbix-2.2.3.tar.gz

编译参数和编译 mater 端的方法基本一致,只是把 --enable-server 去掉了,如下(--enable-proxy是必须的):

#./configure  --enable-agent --enable-proxy
--with-mysql --enable-ipv6
--with-net-snmp --with-libcurl
--with-libxml2
--prefix=/usr --sysconfdir=/etc/zabbix/
#make install

4、创建和导入数据库

创建zabbix库

mysql -uroot -p
>create database zabbix default charset utf8;
> grant all on zabbix.* to zabbix@localhost identified by '123456';
>flush privileges;
>exit

导入表结构

mysql -uzabbix -p123456 zabbix < ./database/mysql/schema.sql

这里只需要导入schema.sql 即可,不需要像 mater 一样,要导入schema.sql 、images.sql 、data.sql 三个文件 。

5、配置服务

编辑/etc/services配置文件,新增下面部分:

# vim /etc/services
zabbix-agent 10050/tcp #Zabbix Agent
zabbix-agent 10050/udp #Zabbix Agent
zabbix-trapper 10051/tcp #Zabbix Trapper
zabbix-trapper 10051/udp #Zabbix Trapper

6、编辑zabbix_proxy.conf文件

zabbix_proxy.conf文件中,只需要指定如下几项即可正常使用:

# egrep -v "(^#|^$)" zabbix_proxy.conf
Server=127.0.0.1,172.20.0.233  //指定master 主机IP
Hostname=proxy_0_214  //指定本代理主机名,在master 的DM配置界面用
LogFile=/tmp/zabbix_proxy.log
DebugLevel=3  //默认3是warnings mode
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix
DBUser=zabbix
DBPassword=123456
ConfigFrequency=120

上面的 server、hostname、DB配置部分是必须的 。当proxy 通信不正常时,可以将debuglevel 调为4 开启debug模式 。

zabbix_proxy.conf 里的配置参数可以查看 官方wiki 参数表  ,其中有几项需要特别注意的,这里提下:

CacheSize      指定为 配置cache 、主机信息、项目数据 分配的内存大小
ConfigFrequency   proxy从master接收配置数据的时间间隔,默认是1小时
DataSenderFrequency   proxy 向 master 发送data 的频率间隔,默认是1秒
ProxyLocalBuffer   proxy 向master发送完的数据在本地保留多久,默认0,不保存 ,多在第三方应用需要用这些数据的情况时配置
Timeout   和agent连接的超时时间,默认3秒


7、zabbix proxy的启动

proxy可以使用启动脚本进行启动,源码包安装时,会在/usr/local/src/zabbix-2.2.3/misc/init.d 目录有相应操作系统的启动脚本样例,如centos的就选fredora 下的,ubuntu系统就选debian下的 。默认情况下可能没有zabbix_proxy 自启动脚本,可以按照 zabbix_server 或zabbix_agentd的进行下修改就可以了。除了使用脚本启动,也可以直接使用命令启动,如下:

zabbix_proxy -c /etc/zabbix/zabbix_proxy.conf


8、防火墙配置

开启相应的端口

iptables -A INPUT -p tcp  --dport 10050 -j ACCEPT
iptables -A INPUT -p tcp  --dport 10051 -j ACCEPT
iptables -A INPUT -p udp  --dport 10050 -j ACCEPT
iptables -A INPUT -p udp  --dport 10051 -j ACCEPT

三、master 端添加proxy主机

1、在server 端按添加普通主机的流程增加proxy主机 。步骤为:Configuration ----- Hosts ----- Create host ,如下图

proxy_zabbix

2、依次点击Administration ----- DM ----- Create proxy ,增加proxy主机,并按下图所示进行添加:

dm-proxy

注:需要注意,此处的proxy_name一定要和zabbix_proxy.conf里的配置的Hostname一致,不然会出现maste - proxy无法通信

3、增加完proxy,并save保存后,会看到下图的界面,通过查看 last seen 项是否有值显示,确认prxoy - master之间是否通信正常。

proxies

默认情况下,proxy和master之间每60秒进行一次心跳检测 。

四、增加agent主机(通过proxy)

第三步 中增加proxy主机的通示, 通过Configuration ----- Hosts ----- Create host 增加被监控的agent主机 。同增加普通主机不同的是在 Monitored by proxy 选项处,选择刚刚新增的代理主机 ————  proxy_0_214 。link 模块保存后,可以在hosts里看到通过代理增加的主机和普通方式增加的主机显示方式上会略有不同,如下图:

proxy_agent_host

通过代理增加的主机,在新增主机的主机名前会有代理服务器的hostname,格式 为 " proxy_hostname: agent_hostname " 。

同样,测试proxy和agent之间是否正常,也可以使用zabbix_get命令,如:

# zabbix_get -s 172.20.0.42 -p 10050 -k "system.cpu.util[,user]"
1.519579





本站的发展离不开您的资助,金额随意,欢迎来赏!

分类: 开源软件 标签:
  1. 沉默
    2014年7月16日13:25 | #1

    博主你好: 我目前是跨机房,并且两个机房网络不通,得走公网,我将server的10051和proxy的10051都映射到公网了,但是目前proxy日志提示找不到server。 您能给在这种场景下说说细节么? 可以的话回复我QQ邮箱,谢谢!

    • admin
      2014年7月16日22:00 | #2

      第一,你可以使用telnet命令验证对端的端口是否已确定打开;
      第二,确认zabbix_proxy.conf配置文件中指定server的IP地址,如你所说的跨机房的话,server地址必须是一个公网地址或VPN内网地址
      第三,尽量将10050、10051等和zabbix相关的端口都映射或在局域网中先试验通过,通过netstat或ss命令确实是否仅仅只用到了10051端口
      第四,以上都行不通时,可以考虑通过VPN打通或haproxy代理端口转发

  2. 苏幕遮
    2017年12月1日14:29 | #3

    博主,请问一个问题

    假设被监控机器是A,A后台已经开启了agent进程。在zabbix-server里,需要新建一个host,写A的资料,请问Agent interface是写proxy的IP么?端口还是填写10050么?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.