Zabbix 基础与进阶(2) —— zabbix工作模式的部署
zabbix 是一款著名的分布式的监控系统。支持通过代理服务器zabbix proxy收集zabbixagent的数据,然后把收集保存在本地数据库并发送给zabbix server进行统一存储和展示。
Zabbix 服务工作于 Agent/Server 架构模型
Zabbix 各工作模式介绍
工作模式中的主动或被动模式,均是站在agent的角度命名的。
被动模式
工作模式简单易用,但 server 端压力较大,需要定期向管理范围内的所有 agent 端主机发送请求信息,如果监控的主机过多时,可能无法及时获取到所有被监控主机的最新数据,被动模式仅适用于监控项目较少的小规模集群。
zabbix 的 agent 端被动接受到 server 端发出的数据采集指令后,方才采集本地监控的主机、进程或设备的信息发送给 server 端。
主动模式
- 不使用代理
可以减轻 server 端同时发出多个请求的压力,但 server 端需要被动接受管理范围内的所有 agent 端主机的所有采集的数据信息并将数据写入数据库,导致 Server 端的写压力较大,同样不适合大规模的主机集群监控。
agent 端无需接收任何指令,主动收集本地监控采集到的数据并发送给 server 端,此模式可减轻 server 端的一部分压力。
- 使用代理
使用代理来分散 server 端的同时接收大量数据的压力,适合用于大规模集群的监控工作。
主机角色分配
本实验各角色、IP、主机名分配以及其他备注如表
roles | IP addr | hostname | comments |
zabbix_server | 172.16.50.1 | node1 | 提供web监控管理页面 |
zabbix_proxy | 172.16.50.2 | node2 | zabbix_proxy |
zabbix_tomcat | 172.16.50.14 | node14 | zabbix_agent(被动式) |
zabbix_database | 172.16.50.15 | node15 | MySQL,zabbix_agent(主动式) |
zabbix各类工作模式的配置
在server端、agent端、database端以及Web GUI均部署完成后,可以选择一种工作模式对某个agent端的监控项进行监控
被动模式
- 修改server端配置文件
vim /usr/local/zabbix/etc/zabbix_server.conf
#修改以下几项
LogFile=/var/log/zabbix/zabbix_server.log
DebugLevel=3 #可以修改为4(debug模式,显示更详细信息)
DBHost=172.16.50.15
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306
Timeout=30 #收集数据的超时时间,默认为4,该值过小会导致无法收集数据,建议改大
StartPollers=25 #修改预启动的线程数,默认为5,建议改大
- 重启zabbix服务
/etc/init.d/zabbix_server restart
ss -tnl
#
LISTEN 0 128 *:10051 *:*
- 将zabbix设置为开机启动
chkconfig zabbix_server on
主动模式
部署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管理界面操作。