zabbix agent主动模式监控
在我们的zabbixserver端主机数量过多的时候,如果有由server端去收集数据,zabbix会出现严重的性能问题,主要的表现有3点
- 当被监控端到达一个量级的时候,web会操作卡,容易出现502
- 图层断裂 也就是数据丢失
- 开启的进程太多 即使减少item的数量,以后加入机器也会出现问题
既然这么容易出问题,那么肯定有非常好的解决方案
- 添加proxy节点做分布式监控
- 调整agentd为主动模式
我们先来说一下主动模式
首先了解一下什么是主动模式 什么是被动模式
主动模式就是主动发起请求到zabbix server 询问我需要干的事情
并主动把数据发给zabbixserver
被动模式就是等待zabbix server主动请求我的数据
server端和agent端的关系
如果server端是主动,那么agent端就是被动
如果agentd端是被动,那么server就是主动
第一步是修改我们的agentd配置文件
172.16.147.26 agentd
172.16.147.23 server
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpm
yum -y install zabbix-agent zabbix-proxy-mysql
grep '^[a-Z]' /etc/zabbix/zabbix-agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
ServerActive=172.16.147.26
Hostname=linuxnode2
RefreshActiveChecks=60
BufferSize=200
Timeout=10
Include=/etc/zabbix/zabbix_agentd.d/*.conf
客户端agent模式,设置为0表示关闭被动模式,被监控端的 zabbix_agentd 不监听本地端口,所以无法在 netstat -tunpl 中查看到zabbix_agentd进程
取值范围:0-100
默认值:3
zabbix启动之后开启被动监控的进程数量,如果设置为0,那么zabbix被动监控被禁用,并且不会监听相应端口,也就是说10050端口不会开启。
Server=10.10.10.201 如果设置为纯被动模式,则应该注释掉这一条指令
ServerActive=... #主动模式的server IP地址
Hostname=test_host #重要:客户端的hostname,不配置则使用主机名
RefreshActiveChecks=120 #被监控端到服务器获取监控项的周期,默认120s即可
BufferSize=200 #被监控端存储监控信息的空间大小
Timeout=10 #超时时间
第二步调整监控模板
我们一般做ACTIVE是修改我们模板里面的items改为active模式
- 点击template OS linux 模板名称
- 点击最下方的full clone 完全克隆
- 修改名字 template OS linux Active
- 点击添加
- 进入模板列表找到刚才添加的模板 并点击监控项
- 全选
- 最下方找到批量更新
- 类型打钩 选择主动模式
- 更新
第三步 添加主机
- 配置主机
- 配置模板完成
添加完成后,你会发现zabbix的Z灯不亮 因为你使用的是主动模式
proxy代理模式
zabbix proxy 只是一个进程 需要一个数据库 没有web界面 不会处理事件 也不会发送邮件 只是一个采集数据的功能
千万要注意数据库 如果你数据库配置错误 不会报数据库错误 只会包获取不到数据
需要数据库
yum -y install zabbix-proxy-mysql
find / -name schema.sql
create database zabbix_proxy charset utf8;
grant all on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
读写 用proxy_r proxy_rw flush provilges
use zabbix_proxy
source /usr/share/doc/zabbix-proxy-mysql/create/schema.sql
hostnanme= proxy-node1 zabbixserver就是靠这个来识别
[root@vagrant-centos65 zabbix]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
Server=172.16.83.15
Hostname=proxy-node1
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
DBSocket=/tmp/mysql.sock
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
[root@vagrant-centos65 zabbix]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
ListenPort=10050
StartAgents=0
ServerActive=172.16.83.14
Hostname=linux_node3
Include=/etc/zabbix/zabbix_agentd.d/*.conf
再来一个配置文件 注意一个关键点 如果获取不到数据很有可能就是database没有配置好(老师踩过2次坑了)
[root@vagrant-centos65 zabbix]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
Server=172.16.147.23
Hostname=proxy_node1
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
web添加 proxy
- 主动模式
- 使用proxy的方式 代理