文章最后更新时间:2022年09月13日已超过808天没有更新。
环境需求:
1、创建自定义监控项监控服务器登录的人数,超过3个则告警
2、监测登录服务器的ip归属地,异地ip登录服务器则报警
实现思路:
1、在客户端主机注册一个key;
#Format: UserParameter=<key>,<shell command>
2、在zabbix服务网页端递级添加一个模板、应用集、监控项、触发器、图形
一、客户端注册一个key
在客户端配置文件找到一行内容/etc/zabbix/zabbix_agent2.d/*.conf
大概意思就是在这个目录下的.conf配置文件是生效的
[root@hk-web zabbix]# cat zabbix_agent2.conf |grep 'Include' ### Option: Include # Include= Include=/etc/zabbix/zabbix_agent2.d/*.conf # Include=/usr/local/etc/zabbix_agentd.userparams.conf # Include=/usr/local/etc/zabbix_agentd.conf.d/ # Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf 进入这个目录,新建一个配置文件 root@hk-web zabbix_agent2.d]# pwd /etc/zabbix/zabbix_agent2.d [root@hk-web zabbix_agent2.d]# cat userlogin.conf #Format: UserParameter=<key>,<shell command> UserParameter=login.user,who | wc -l
其中login.user就是自己定义的key,后面加key的执行命令或者脚本
zabbix服务端测试连通性
显示当前登录人数是2
当前服务端确实是2人登录
二、zabbix服务网页端操作
1、创建模板
2、创建应用集
3、创建监控项
最主要的键值要与客户端注册的键值对应上
4、创建触发器
5、创建图形
注意事项:
先创建模板、然后在模板内创建一个应用集,在应用集内创建一个监控项,然后再创建触发器和图形,都是在新建的模板下操作。
三、选择一台主机关联模板
1、把刚刚新建的模板关联上,最终效果图
成功告警,如果邮箱配置,就会发送到邮箱去
四、监测服务器登录的IP归属地
1、客户端注册一个key
[root@hk-web zabbix_agent2.d]# cat userlogin.conf #Format: UserParameter=<key>,<shell command> UserParameter=login.user,who | wc -l UserParameter=login.addre,/etc/zabbix/zabbix_agent2.d/login_addre.sh
2、编写一个脚本
脚本思路:
1、通过curl命令得到IP归属地
2、如果获取的是一个空值则输出无人登录
3、zabbix触发器配置只要是无人登录或者中国广东省惠州市为正常,反之则告警!
[root@hk-web zabbix_agent2.d]# cat login_addre.sh #!/bin/bash who | awk '{print $5}' | sed 's/(//g' | sed 's/)//g' | uniq > /etc/zabbix/zabbix_agent2.d/tmp ip=$(cat /etc/zabbix/zabbix_agent2.d/tmp) if [[ -z $ip ]];then echo '无人登录' else for i in $ip; do addre=$(/usr/bin/curl -s http://www.cip.cc/$i | grep '数据三' | awk '{print $3}') if [[ -z $addre ]];then echo '中国广东省惠州市' else echo $addre fi done fi
注意文件权限
3、状态监控
4、zabbix网页端触发器配置,记住选择and
5、最终效果
因为客户端传输回来的值是中文,所以在监控项里要信息类型设置成文本
异常图:
总结:
因为curl获取的可能是空值或者一串特殊符号,所以$adder要加一个判断,当获取空值时候默认正常登录;如果有更好的处理方式,麻烦大神留言,互相学习进步!