更多细节详情看【zabbix官方文档】
需求
Zabbix 的URL健康监测功能允许你检测 Web 地址是否可用、正常工作以及响应速度。这对于监控网站的可用性和性能非常有用。例如,你可以监控公司网站、API 端点或其他关键服务的 URL。
-
【官方表述 Web monitoring items】
-
【官方表述 Trigger expression】
-
【官方表述 Supported trigger functions】
一、配置 Web 监测
步骤:配置 -- 主机 -- Web监测 -- 创建Web场景 -- 场景 -- 步骤 -- 添加
二、配置触发器
步骤:配置 -- 主机 -- 选择主机 -- 触发器 -- 创建触发器 -- 添加
触发器示例
表达式语法:
{<server>:<key>.<function>(<parameter>)}<operator><constant>
示例 1 www.zabbix.com 的处理器负载过高
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5
'www.zabbix.com:system.cpu.load[all,avg1]' 给出了被监控参数的简短名称。
它指定了服务器是"www.zabbix.com",监控项的键值是"system.cpu.load[all,avg1]"。
通过使用函数"last()"获取最新的值。最后,">5"意味着当www.zabbix.com最新获取的处理器负载值大于5时触发器就会处于异常状态。
示例 2 www.zabbix.com 已超载
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5 or
{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
当前处理器负载大于5或者最近10分钟内最小值大于2,表达式为true。
示例 3 /etc/passwd文件被修改
使用函数diff:
{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff()}=1
当文件/etc/passwd的checksum值与最近的值不同时,表达式为true。
类似的,表达式可以用于监控重要文件的修改, 如/etc/passwd, /etc/inetd.conf, /kernel等
示例 4 有人正在从互联网上下载一个大文件
使用min函数:
{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100K
在过去5分钟内,eth0上接收字节数大于100kb时,表达式为true。
示例 5 SMTP服务群集的两个节点都停止。 注意在一个表达式中使用两个不同的主机:
{smtp1.zabbix.com:net.tcp.service[smtp].last()}=0 and {smtp2.zabbix.com:net.tcp.service[smtp].last()}=0
当SMTP服务器smtp1.zabbix.com和smtp2.zabbix.com都停止,表达式为true
示例 6 Zabbix agent需要升级
使用str()函数:
{zabbix.zabbix.com:agent.version.str("beta8")}=1
如果Zabbix agent版本是beta8(可能是1.0beta8),则表达式为真。
示例 7 服务器无法访问
{zabbix.zabbix.com:icmpping.count(30m,0)}>5
当主机"zabbix.zabbix.com"在30分钟内超过5次不可达,则表达式为真。
示例 8 3分钟内没有心跳检查
使用nodata()函数:
{zabbix.zabbix.com:tick.nodata(3m)}=1
要使用这个触发器,'tick'必须定义成一个Zabbix[:manual/config/items/itemtypes/trapper|trapper]]监控项。主机应该使用zabbix_sender定期发送这个监控项的数据。
如果在180秒内没有接收到数据,则触发值变为异常状态。
注释'nodata'可以在任何类型的监控项中使用。
示例 9 夜间的CPU负载
使用time()函数:
{zabbix:system.cpu.load[all,avg1].min(5m)}>2 and {zabbix:system.cpu.load[all,avg1].time()}>000000 and {zabbix:system.cpu.load[all,avg1].time()}<060000
仅在夜间(00:00-06:00),触发器状态变可以变为真。
示例 10 检查客户端本地时间是否与Zabbix服务器时间同步
使用fuzzytime()函数:
{MySQL_DB:system.localtime.fuzzytime(10)}=0
当MySQL_DB服务器的本地时间与Zabbix server之间的时间相差超过10秒,触发器将变为异常状态。