- 整体web界面概念介绍
zabbix通过“监控项”收集数据,收集的数据使用“触发器”产生各种告警,告警信息可能过“动作”执行相就操作,如:发消息、邮件、执行其他操作等。
- 监控项、触发器等可通过“模板”进行管理,如:想监控linux主机,可以创建一个linux监控模板,在创建要监控的主机时,将主机与模板关联即可进行各项数据监控了。
系统默认安装了许多通用的模板,可以直接使用,也是学习的很好参考。
- web主要菜单简介
配置:管理主机、模板等,监控项、告警等通过模板进行创建管理
监测:查看监控项收集的数据、产生的告警等
- 创建模板
想要自定义主机监控,需要创建模板并应用到监控主机。系统自带模板不允许修改,但主机创建后可能过取消关联进行修改。
为了便于管理,模板可以与模板组关联。
标记:用于在查询中进行过滤,可快速定位到模板
宏:定义一些宏变量,可在模板内的监控项、告警等使用
值映射:将获取到的一些值通过映射转换成容易理解的内容,如:将0映射为“成功”,1映射为“失败”。
- 创建监控项:
模板创建后可为模板创建监控项,在模板主页点击“监控项”进入监控项创建
进入后点击右上角“创建监控项”
类型:系统根据不同取数键值进行的分类。
键值:取数的具体命令,可能过类型进行选择,内置非常丰富的键值,具体使用最好查看官网文档说明。https://www.zabbix.com/documentation/current/zh/manual/config/items/itemtypes/zabbix_agent
zabbix_agent类的说明。
单位:可以是%、b、B等。
预处理:
通过对收集数据的先行处理,可得到更理想的监控值。
- 创建触发器
触发器主要是编写表达式,可以使用表达式生成器生成,
以下是生成一个可用内存小于800M的触发器,当主机内存小于800M将触发这个触发器,在监测-问题中可以看到告警及持续了多长时间,当内存恢复800M以上,告警显示解决。
- 触发器动作
动作是当告警发生时应该采取什么样的后续操作,如:发邮件、消息
点击配置-动作-触发器动作
条件可限制动作作用于哪些模板、触发器、主机等,操作可添加后续操作,如发邮件、消息。
- 图形
点击模板-图形-创建图形
类型:pie为饼图,如果监控项作为总数选择图形总数。
点击监测-主机-图形,查看生成后的样子
- 一些使用技巧
- 监控项的自定义健值
创建监控其时,如果类型选择可计算或相关性时,键值一般需要用户自己定义,而且在系统内必需唯一,在解发器或者其他监控项中可通过该键值进行引用。
模板中引用键值使用//sys.cpu.pav进行引用,完整引用为“/主机/键值”,不填为当前主机。
- 在代理主机上执行shell命令
默认zabbix是禁止执行shell的,需要对代理主机的zabbix_agent2.conf进行配置,AllowKey=system.run[*]允许执行所有命令,也可限定命令,如:AllowKey=system.run[ls /]
拒绝执行,DenyKey=system.run[ls -l /],也可以拒绝其他zabbix指令,如:DenyKey=vfs.file.contents[/etc/passwd,*] 拒绝访问/etc/passwd内容;
从 Zabbix 5.0.2 开始,代理参数 EnableRemoteCommands已被弃用;
配置后重启zabbix代理,在控制主机的web上配置运行shell命令
在代理执行free命令并将结果以文本返回
- 预处理中正则表达式使用
对获取到的数据可能过预处理利用正则表达式过滤后生成最终需要的结果,如上例通过run获取mem信息,然后可通过预处理正则过滤头部及swap信息,只留mem信息,正则表达式如下:
Mem:.*(\b[0-9]+\b).*(\b[0-9]+\b).*(\b[0-9]+\b).*(\b[0-9]+\b).*(\b[0-9]+\b).*(\b[0-9]+\b)
对应的free值
Mem: 32028040 11570156 775228 781356 19682656 19076356
通过“输出”可以获取具体列的值,如:总内存32028040可以在“输出”中填入“\1”获取
如果正则变成:Mem:.*,“输出”只有“\0”获取全部信息,不能进行分块获取,即正则中通过“\b”分隔了数据在输出中可能通过“\n”获取每块分隔数据。
在写好正则表达式,可通过“测试”分析获取数据是否正确,以便调整表达式。
- 读取代理主机文件内容
使用vfs.file.contents指令可以读取代理主机上的文件内容,并以文本返回。
- 自动发现规则
当主机上有多设备,如多网卡、磁盘、分区,如果要对这些设备进行监控一个一个写监控项非常繁琐,如果设备增加还需要手动添加,可以使用“自动发现规则”动态生成监控项。
已挂载分区vfs.fs.discovery
磁盘vfs.dev.discovery
发现后一般还要进行一些过滤,替除无用数据
磁盘过滤{#DEVNAME}:^(loop[0-9]*|sd[a-z][0-9]+|nbd[0-9]+|sr[0-9]+|fd[0-9]+|dm-[0-9]+|ram[0-9]+|ploop[a-z0-9]+|md[0-9]*|hcp[0-9]*|zram[0-9]*)
分区过滤{#FSNAME}:^(/dev|/sys|/run|/proc|/boot|.+/shm$)
网络接口过滤{#IFNAME}:(^Software Loopback Interface|^NULL[0-9.]*$|^[Ll]o[0-9.]*$|^[Ss]ystem$|^Nu[0-9.]*$|^veth[0-9A-z]+$|docker[0-9]+|br-[a-z0-9]{12})
创建好“自动发现规则”后可以继续创建“监控项”、“触发器”等。