zabbix 是一款著名的分布式的监控系统。支持通过代理服务器zabbix proxy收集zabbixagent的数据,然后把收集保存在本地数据库并发送给zabbix server进行统一存储和展示。
Zabbix 服务工作于 Agent/Server 架构模型
工作模式中的主动或被动模式,均是站在agent的角度命名的。
工作模式简单易用,但 server 端压力较大,需要定期向管理范围内的所有 agent 端主机发送请求信息,如果监控的主机过多时,可能无法及时获取到所有被监控主机的最新数据,被动模式仅适用于监控项目较少的小规模集群。
zabbix 的 agent 端被动接受到 server 端发出的数据采集指令后,方才采集本地监控的主机、进程或设备的信息发送给 server 端。
可以减轻 server 端同时发出多个请求的压力,但 server 端需要被动接受管理范围内的所有 agent 端主机的所有采集的数据信息并将数据写入数据库,导致 Server 端的写压力较大,同样不适合大规模的主机集群监控。
agent 端无需接收任何指令,主动收集本地监控采集到的数据并发送给 server 端,此模式可减轻 server 端的一部分压力。
使用代理使用代理来分散 server 端的同时接收大量数据的压力,适合用于大规模集群的监控工作。
本实验各角色、IP、主机名分配以及其他备注如表
rolesIP addrhostnamecommentszabbix_server172.16.50.1node1提供web监控管理页面zabbix_proxy172.16.50.2node2zabbix_proxyzabbix_tomcat172.16.50.14node14zabbix_agent(被动式)zabbix_database172.16.50.15node15MySQL,zabbix_agent(主动式)在server端、agent端、database端以及Web GUI均部署完成后,可以选择一种工作模式对某个agent端的监控项进行监控
部署zabbix_proxy端
zabbix proxy端也需要在zabbix database 主机上创建用户和专用的库,用于暂存一些数据,本实验演示过程中将proxy的数据库与server端的数据库公用同一个数据库,在实际生产环境中,二者一般不会使用同一个数据库。
创建zabbix用户
useradd -s /sbin/nologin zabbix 安装Zabbix proxy安装依赖包
如果需要通过代理来监控tomcat类服务,也需要安装openjdk程序
yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel java-1.8.0-openjdk-devel -y在 zabbix database 主机上为proxy创建用户和库并授权
CREATE DATABASE zabbix_proxy CHARACTER SET utf8 COLLATE utf8_bin; GRANT ALL ON zabbix_proxy.* TO proxy@'172.16.50.%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;在zabbix proxy主机测试是否能够使用mysql客户端登录
mysql -uproxy -p123456 -h172.16.50.15编译安装
./configure --prefix=/usr/local/zabbix --enable-proxy --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java make -j 4 && make install在本机导入数据库
mysql -uproxy -p123456 -h172.16.50.15 zabbix_proxy < /usr/local/src/zabbix-3.0.10/database/mysql/schema.sql #验证导入结果 mysql -uproxy -p123456 -h172.16.50.15 zabbix_proxy -e "show tables;" 配置zabbix proxy: vim /usr/local/zabbix/etc/zabbix_proxy.conf #修改如下内容 ProxyMode=0 #0为主动,1为被动 Server=172.16.50.1 #zabbix server服务器的地址或主机名 ServerPort=10051 Hostname=my_proxy #代理服务器名称,需要与zabbix server添加代理时候的proxy name是一致的! ListenPort=10051 LogFile=/tmp/zabbix_proxy.log DebugLevel=4 DBHost=172.16.50.15 #数据库服务器地址 DBName=zabbix_proxy DBUser=proxy DBPassword=123456 DBPort=3306 ProxyLocalBuffer=3 ProxyOfflineBuffer=24 HeartbeatFrequency=60 #心跳间隔检测时间,,默认60秒,范围0-3600秒,被动模式不使用 ConfigFrequency=5 #间隔多久从zabbix server 获取监控信息 DataSenderFrequency=5 #数据发送时间间隔,默认为1秒,范围为1-3600秒,被动模式不使用 StartPollers=25 #启动的线程数,与客户端的数据保持一致 JavaGateway=172.16.50.14 #java gateway服务器地址 JavaGatewayPort=10052 StartJavaPollers=25 #与监控的java 应用一致 Timeout=30 LogSlowQueries=3000启动服务
/usr/local/zabbix/sbin/zabbix_proxy -c /usr/local/zabbix/etc/zabbix_proxy.conf添加代理
在Web GUI 页面进行操作
配置zabbix_agent端(此处即为zabbix_database端)Web 客户端安装zabbix agent
yum install gcc -y useradd zabbix -s /sbin/nologin cd /usr/local/src/ tar xvf zabbix-3.0.10.tar.gz cd zabbix-3.0.10 ./configure --prefix=/usr/local/zabbix --enable-agent make install cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ vim /etc/init.d/zabbix_agentd #修改以下内容 BASEDIR=/usr/local/zabbix修改配置文件
grep "^[a-Z]" /usr/local/zabbix/etc/zabbix_agentd.conf LogFile=/tmp/zabbix_agentd.log Server=172.16.50.2 #此处server应该指向zabbix_proxy端 ListenPort=10050 StartAgents=3 ServerActive=172.16.50.2 Hostname=172.16.50.15 Timeout=30 UnsafeUserParameters=1启动服务
/etc/init.d/zabbix_agentd start ss -tnl # LISTEN 0 128 *:10050 *:*在web GUI管理界面操作。