
Zabbix自定义监控项
1.zabbix自定义监控深入
- 1.详细介绍基础模板中的监控项, 以及自定义添加监控项中的每一个参数的作用和使用方法。
- 2.自定义监控tcp11种状态(传参方式)
tcp11种状态
1.ESTABLISHED 2.SYN_SENT 3.SYN_RECV 4.FIN_WAIT1 5.FIN_WAIT2 6.TIME_WAIT 7.CLOSE 8.CLOSE_WAIT 9.LAST_ACK 10.LISTEN 11.CLOSING1.增加监控键值
UserParameter[root@zabbix01 ~]#cat /etc/zabbix/zabbix_agentd.d/tcp.conf UserParameter=tcp_state[*],netstat -antup |grep -c $1 // 使用传参的方式一条命令监控11种TCP状态 [root@zabbix-agent ~]# systemctl restart zabbix-agent2.zabbix-server测试
1.权限不足示例
[root@zbx_server ~]#zabbix_get -s 10.10.40.10 -k tcp_state['ESTABLISHED'] (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)2.解决权限不足(u+s)
[root@zabbix01 ~]#ll /usr/bin/netstat -rwxr-xr-x. 1 root root 155000 Aug 3 2017 /usr/bin/netstat [root@zabbix01 ~]#chmod u+s /usr/bin/netstat [root@zabbix01 ~]#ll /usr/bin/netstat -rwsr-xr-x. 1 root root 155000 Aug 3 2017 /usr/bin/netstat [root@zbx_server ~]#zabbix_get -s 10.10.40.10 -k tcp_state['ESTABLISHED']
- 3.在zabbixWeb端进行添加
注意[ ]中填入的变量不可有其它不支持的符号
- 4.TCP有11种状态, 如何快速添加监控项,可以对针对我们刚才添加过的监控项进行克隆。
点击克隆按钮,填入新变量如SYN_SENT
2.zabbix自定义配置阈值
触发器的函数方法:
- abschange
参数:忽略 支持类型:float,int,str,text,log 作用:返回最近获得的值与之前获得值差的绝对值,对于字符串类型:0表示相等,1表示不同
- avg
参数:秒或#num 支持类型:float,int 作用:返回一段时间的平均值 举例: avg(5):最后5秒的平均值 avg(#5):表示最近5次得到值的平均值 avg(3600,86400):表示一天前的一个小时的平均值 如果仅有一个参数,表示指定时间的平均值,从现在开始算起,如果有第二个参数,表示漂移,从第二个参数前开始算时间, #n表示最近n次的值 示例: 触发器名称:Comparing average load today with average load of the same time yesterday (使用 time_shift 时间偏移量参数). {server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2 This expression will fire if the average load of the last hour tops the average load of the same hour yesterday more than two times.
- max
参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔的最大值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法. 示例: 触发器名称:Free disk space is too low Problem: 最近5分钟内剩余磁盘空间小于10GB ({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G)
- min
参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔的最小值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法. 示例: 触发器名称:Free disk space is too low Problem:最近10分钟内磁盘空间大于40GB ({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)
- nodata
参数:秒 支持值类型:any 描述:当返回值为1表示指定的间隔(间隔不应小于30秒)没有接收到数据,0表示其他. 示例: 触发器名称:No heartbeats within last 3 minutes 使用函数 nodata(): {zabbix.zabbix.com:tick.nodata(3m)}=1
- change
参数:忽略 支持类型:float,int,str,text,log 作用:返回最近获得值与之前获得值的差值,对于字符串0表示相等,1表示不同 举例: change(0)>n:忽略参数一般输入0,表示最近得到的值与上一个值的差值大于n
- count
参数:秒或#num 支持类型:float,int,str,text,log 作用:返回指定时间间隔内数值的统计, 举例: count(600)最近10分钟得到值的个数 count(600,12)最近10分钟得到值的个数等于12 count(600,12,"gt")最近10分钟得到值的个数大于12 count(#10,12,"gt")最近10个值中,值大于12的个数 count(600,12,"gt",86400)24小时之前的10分钟内值大于12的个数 count(600,6/7,"band")-thenumberofvaluesforlast10minuteshaving'110'(inbinary)inthe3leastsignificantbits. count(600,,,86400)24小时之前的10分钟数据值的个数 第一个参数:指定时间段 第二个参数:样本数据 第三个参数:操作参数 第四个参数:漂移参数 #支持的操作类型 eq: 相等 ne: 不相等 gt: 大于 ge: 大于等于 lt: 小于 le: 小于等于 like: 内容匹配
- date
参数:忽略 支持类型:any 作用:返回当前的时间,格式YYYYMMDD
- dayofmonth
返回当前是本月的第几天
- dayofweek
返回当前是本周的第几天
- delta
参数:秒或#num 支持类型:float,int 作用:返回时间间隔内的最大值与最小值的差值
- diff
参数:忽略 支持值类型:float,int,str,text,log 作用:返回值为1表示最近的值与之前的值不同,0为其他情况 示例: 触发器名称:/etc/passwd has been changed 使用函数 diff(): {www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0
- fuzzytime
参数:秒 支持值类型:float,int 作用:返回值为1表示监控项值的时间戳与ZabbixServer的时间多N秒,0为其他.常使用system.localtime来检查本地时间是否与Zabbixserver时间相同. 示例: 触发器名称:Check if client local time is in sync with Zabbix server time 使用函数 fuzzytime(): {MySQL_DB:system.localtime.fuzzytime(10)}=0 主机MySQL_DB当前服务器时间如果与zabbix server之间的时间相差10秒以上,表达式返回true,触发器状态改变为“problem”
- last
参数:秒或#num 支持值类型:float,int,str,text,log 作用:最近的值,如果为秒,则忽略,#num表示最近第N个值,请注意当前的#num和其他一些函数的#num的意思是不同的 例子: last(0)等价于last(#1)last(#3)表示最近**第**3个值(并不是最近的三个值) 本函数也支持第二个参数**time_shift**,例如 last(0,86400)返回一天前的最近的值 如果在history中同一秒中有多个值存在,Zabbix不保证值的精确顺序 #num从Zabbix1.6.2起开始支持,timeshift从1.8.2其开始支持,可以查询avg()函数获取它的使用方法
- logeventid
参数:string 支持值类型:log 描述:检查最近的日志条目的EventID是否匹配正则表达式.参数为正则表达式,POSIX扩展样式.当返回值为0时表示不匹配,1表示匹配。该函数从Zabbix1.8.5起开始支持.
- logseverity
参数:忽略 支持值类型:log 描述:返回最近日志条目的日志等级(logseverity).当返回值为0时表示默认等级,N为具体对应等级(整数,常用于Windowseventlogs).Zabbix日志等级来源于Windowseventlog的Information列.
- logsource
参数:string 支持值类型:log 描述:检查最近的日志条目是否匹配参数的日志来源.当返回值为0时表示不匹配,1表示匹配。通场用于Windowseventlogs监控.例如logsource["VMWareServer"]
- now
参数:忽略 支持值类型:any 描述:返回距离Epoch(1970年1月1日00:00:00UTC)时间的秒数
- prev
参数:忽略 支持值类型:float,int,str,text,log 描述:返回之前的值,类似于last(#2)
- regexp
参数:第一个参数为string,第二个参数为秒或#num 支持值类型:str,log,text 描述:检查最近的值是否匹配正则表达式,参数的正则表达式为POSIX扩展样式,第二个参数为秒数或收集值的数目,将会处理多个值.本函数区分大小写。当返回值为1时表示找到,0为其他.
- str
参数:第一个参数为string,第二个参数为秒或#num 支持值类型:str,log,text 描述:查找最近值中的字符串。第一个参数指定查找的字符串,大小写敏感。第二个可选的参数指定秒数或收集值的数目,将会处理多个值。当返回值为1时表示找到,0为其他. 示例: 触发器名称:Zabbix agent needs to be upgraded 使用函数str(): {zabbix.zabbix.com:agent.version.str("beta8")}=1 如果当前zabbix agent版本包含beta8(假设当前版本为1.0beta8),这个表达式会返回true. strlen 参数:秒或#num 支持值类型:str,log,text 描述:指定最近值的字符串长度(并非字节),参数值类似于last函数.例如strlen(0)等价于strlen(#1),strlen(#3)表示最近的第三个值,strlen(0,86400)表示一天前的最近的值.该函数从Zabbix1.8.4起开始支持 sum 参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔中收集到的值的总和.时间间隔作为第一个参数支持秒或收集值的数目(以#开始).从Zabbix1.8.2开始,本函数支持time_shift作为第二个参数。可以查看avg函数获取它的用法 time 参数:忽略 支持值类型:any 描述:返回当前时间,格式为HHMMSS,例如1230551.演示取出内存的百分比(取出内存的可用的MB大小 / 总的内存大小 = 实际可用的百分比)
1.定义剩余内存百分比[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.d/oldboy.conf UserParameter=Mem_pre,free -m|awk '/^Mem/{print $NF*100/$2}' [root@web03 ~]# systemctl restart zabbix-agent2.在ZabbixServer验证监控项是否可用
[root@ZabbixServer ~]# zabbix_get -s 10.0.0.30 -k 'Mem_pre' 72.17663.Zabbix-Web页面配置监控项
2.自定义单条件触发器,设置内存低于 30% 进行报警
1.创建触发器
2.填写表达式
问题表达式:{Web03-10.0.0.30:Mem_pre.last()}30
恢复表达式:{Web03-10.0.0.30:Mem_pre.last()}30
3.压低内存,检查报警邮件(以内存1G为例,使用下面方式进行消耗内存)
dd if=/dev/zero of=/dev/null bs=500M count=1024
3.生产建议:内存低于百分之10加上,swap使用超过百分之5,再次进行监控报警(更精准)
1.增加swap的监控[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.d/oldboy.conf UserParameter=Swap_pre,free -m|awk '/^Swap/{print $3*100/$2}' [root@web03 ~]# systemctl restart zabbix-agent2.在ZabbixServer使用zabbix_get命令测试
[root@ZabbixServer ~]# zabbix_get -s 10.0.0.30 -k 'Swap_pre' 03.在ZabbixWeb创建监控项
4.基于之前建立的触发器进行修改,修改为多条规则同时满足才触发
{Web03-10.0.0.30:Mem_pre.last()}<30 and {Web03-10.0.0.30:Swap_pre.last()}>1
5.使用dd命令消耗客户端内存(只满足内存低于30%,所以不会进行报警)
dd if=/dev/zero of=/dev/null bs=300M count=1024
6.使用dd命令消耗客户端内存(满足内存低于30%,并且swap使用率超过1%)dd if=/dev/zero of=/dev/null bs=800M count=1024
7.常用的触发器表达式,常用的函数,触发器表达式参考url
and 并且 or 或者 last() 比对最新的值 avg() 平均值 diff() 比对上一次文件的内容 nodata() 收不到数据进行报警nodata(5m) (5m) 表示最近5分钟得到值 (#5) 表示最近5次得到的值








