Zabbix是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
其能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix由Zabbix server与zabbix agent组成,server主动向它收集监控数据,agent提供丰富的key,包括不限于cpu、内存、网络、磁盘、web等等。
那自定义监控适合应用于哪些场景呢?
自定义监控全流程
客户端
通过命令、脚本取出对应的值
创建键值与重启
UserParameter=key,cmd UserParameter=固定写法,表示要自定义键值 key表示键值名字,命名最好就是 单词+"." (点) cmd表示命令或脚本
#UserParameter=key,cmd #UserParameter=check.ngx,sh /server/scripts/xxx.sh UserParameter=check.ngx,ss -lntup|grep -w 80|wc -l 1. 写入自定义key(键值) cat /etc/zabbix/zabbix_agent2.d/web.conf #UserParameter=key,cmd #UserParameter=check.ngx,sh /server/scripts/xxx.sh UserParameter=check.ngx,ss -lntup|grep -w 80|wc -l 2. 重启客户端 3. 客户端本地测试键值 zabbix_agent2 -t check.ngx check.ngx [s|1] s表示类型 文字 1表示结果 键值的结果
zabbix_agent2.conf里面有==Include=/etc/zabbix/zabbix_agent2.d/*.conf==修改后记得重启zbx客户端
服务端
服务端手动测试
yum install -y zabbix-get zabbix_get 向客户端要指定键值的数据。
web页面:创建监控项
信息类型:这里键值结果都是数字,选择数字(无正负即可),如果有小数选择浮点类型,如果是字符,选择字符串。
更新间隔:这里调整为5s,生产环境非必须尽量增长间隔比如1m、10m、1h等等。
web页面:触发器
根据监控项获取的数值(内容),决定是否要告警、是否要提示异常
补充 仪表盘数据刷新调整
监控项键值获取的数据 等于 0 表示异常 zbx 6.0 写法 last(/web01/check.ngx) = 0 zbx 5.x及之前的写法 { web01:check.ngx.last() } = 0 {主机:key.功能} = 0
web页面:添加图形
自定义监控小结
用一句话形容自定义监控:只要能通过命令、脚本取出来的东西就可以自定义监控。
*常用键值与触发器函数*
键值
zabbix_get -s 172.16.1.7 -k net.if.in[eth0,] zabbix_get -s 172.16.1.7 -k proc.num[nginx] zabbix_get -s 172.16.1.7 -k net.tcp.port[,80]
触发器函数
last(/Zabbix server/vfs.file.cksum[/etc/passwd,sha256],#1) <> last(/Zabbix server/vfs.file.cksum[/etc/passwd,sha256],#2)
max(/Zabbix server/vm.memory.size[available],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Zabbix server/vm.memory.size[total])>0 最近5分钟可用内存小于 指定的值 max(/Zabbix server/vm.memory.size[available],5m) < {$MEMORY.AVAILABLE.MIN} and 并且 内存大小大于0 last(/Zabbix server/vm.memory.size[total])>0
自定义监控-参数案例
客户端
lastlog |grep root |awk '{print $3}' root未来可能是其他用户.
UserParameter=key,cmd UserParameter=user.login.check[*],lastlog |grep "$1" |awk '{print $3}'
[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/web.conf #UserParameter=key,cmd #UserParameter=check.ngx,sh /server/scripts/xxx.sh UserParameter=check.ngx,ss -lntup|grep -w 80|wc -l UserParameter=user.login.check[*],lastlog |grep -w "$1" |awk '{print $$3}' [root@web01 ~]# systemctl restart zabbix-agent2.service [root@web01 ~]# zabbix_agent2 -t user.login.check[root] user.login.check[root] [s|10.0.0.1]
如果没有自定义键值传参,awk取列的时候要使用$$列。
如果没有传参,awk正常使用即可
服务端
[root@m03-zabbix-server-lidao996 ~]# zabbix_get -s 172.16.1.7 -k user.login.check[root] 10.0.0.1
最近1个值和上一个值是否一致(不一致) last(/web01/user.login.check[root],#1) <> last(/web01/user.login.check[root],#2)
使用模板
步骤如下:
创建模板->添加自定义监控项->添加触发器->添加图形->模板关联主机->客户端配置自定义键值
创建模板
添加自定义监控项
复制触发器与图形
模板关联主机
本文作者:Gustav
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!