背景: 服务器不希望有太多⼈在操作,除了管理员以外的⼈,⼈数超了,需要及时发出告警。

需求: 限制登录⼈数不超过三个,超过三⼈则发出报警

  1. 首先,zabbix 是有自带一些 key 的
# /usr/local/zabbix/bin/zabbix_get -s '192.168.177.130' -p 10050 -k 'system.uname'
Linux zabbix_server 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64

# /usr/local/zabbix/bin/zabbix_get -s '192.168.177.130' -p 10050 -k 'system.hostname'
zabbix_server

zabbix关于down的告警信息导出 zabbix 告警_自定义

## 如果 key 写错了 或者 是使用没有定义的 key,会报错未知的指标

# /usr/local/zabbix/bin/zabbix_get -s '192.168.177.130' -p 10050 -k 'system.hostname111'
ZBX_NOTSUPPORTED: Unsupported item key.

zabbix关于down的告警信息导出 zabbix 告警_自定义_02

系统中自带的 key 并不能满足我们的所有场景,因此会有一些场景需要我们去自定义 key, 例如本文中的需求 需要检测登录的用户数,大于等于 3 个那么就需要进行告警,这种情况我们只能通过 shell 脚本 或者 命令来实现

  1. 登录 zabbix web 查看模板-监控项
    我这里有两个 zabbix agent,两台都需要监控,所以可以创建一个组,将这两个机器放到同一个组里
  2. zabbix关于down的告警信息导出 zabbix 告警_自定义_03


  3. zabbix关于down的告警信息导出 zabbix 告警_监控_04

  4. 创建完组,接下来查看监控项,理解一下 key 的意思
item 也就是监控项,即检测哪些内容
监控项里的 key,也就是键值,也就是 使用 zabbix-get 时使用的 key

zabbix关于down的告警信息导出 zabbix 告警_运维_05

# item 也就是监控项,即检测哪些内容
# 监控项里的 key,也就是键值,也就是 使用 zabbix-get 时使用的 key,如下图这些就是已经定好的 key,可以拿来直接使用:

zabbix关于down的告警信息导出 zabbix 告警_监控_06

  1. 自定义监控语法
    当zabbix⾃带模板,以及监控项,⽆法满⾜我们需求,我们就可以⾃定义监控项 ⾃定义监控其实就是添加监控的key,监控的命令
# ⾸先显示⽤户登录命令

who
who | wc -l # 显示登录⼈数

需要添加监控项配置⽂件,路径

[root@zabbix_server /root]# cat /usr/local/zabbix/etc/zabbix_agentd.conf | grep -v ^# | grep -v ^$
LogFile=/tmp/zabbix_agentd.log
Server=192.168.177.130
ServerActive=192.168.177.130
Hostname=Zabbix server
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

## 重点看 Include 配置,这里是指后续添加监控项配置文件需要在哪个路径下以及相应的后缀

## ⾃定义的配置⽂件,语法是
UserParameter=<key>,<shell command>
UserParameter=login.user,who|wc -l
UserParameter=login.user,/bin/sh /server/scripts/login.sh

## 要注意的是key名要唯⼀,可以写⼊多个key

## 重启 agent

配置如下:

[root@zabbix_server /root]# cat /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_login.conf
UserParameter=login.user,who | wc -l

zabbix关于down的告警信息导出 zabbix 告警_zabbix关于down的告警信息导出_07

4. 在服务端zabbix,用命令检测自定义的 key

# /usr/local/zabbix/bin/zabbix_get -s '192.168.177.130' -p 10050 -k 'login.user'
3

zabbix关于down的告警信息导出 zabbix 告警_zabbix关于down的告警信息导出_08

5. server 端验证自定义的 key 已经可以使用,那么下面需要在 zabbix web 页面操作了

整个流程是:
 - 创建模板
 - 创建应⽤集:对监控项分类
 - 创建监控项:定义item,监控的内容
 - 创建触发器:当监控项获取到值,且达到触发条件就会告警
 - 创建图形
 - 主机进⾏模板关联

5.1 创建模板

zabbix关于down的告警信息导出 zabbix 告警_监控_09


zabbix关于down的告警信息导出 zabbix 告警_zabbix关于down的告警信息导出_10


5.2 创建应用集(应⽤集作⽤好⽐⽂件夹分类⼀样,作⽤是给监控项分类)

zabbix关于down的告警信息导出 zabbix 告警_zabbix关于down的告警信息导出_11


zabbix关于down的告警信息导出 zabbix 告警_自定义_12

5.3 添加监控项

zabbix关于down的告警信息导出 zabbix 告警_zabbix关于down的告警信息导出_13


5.4 创建触发器(创建触发器,当监控项获取的值,到达⼀定条件,就触发报警)

zabbix关于down的告警信息导出 zabbix 告警_自定义_14


zabbix关于down的告警信息导出 zabbix 告警_自定义_15

5.5 创建图形(以图形的⽅式展示监控的信息)

zabbix关于down的告警信息导出 zabbix 告警_运维_16

5.6 主机关联模板(上述所有配置都是吧登录⽤户监控的模板添加好了,以及图形展示,但是还未绑定具体的服务器,那检测谁呢是不是?)

zabbix关于down的告警信息导出 zabbix 告警_zabbix关于down的告警信息导出_17


最后,可以触发一下告警,多打开几个终端,之后查看告警情况:

zabbix关于down的告警信息导出 zabbix 告警_zabbix_18