【模板】建立zabbix监控项
1、简介
在zabbix的使用过程中,有很多需要监控的模块,比如文件夹大小、用户密码失效时间、ssl证书时间、中间件tomcat/Nginx的访问量信息等等,这些若是zabbix没有提供模板,那如何快速建立监控,监控需要的项目呢?
这些监控的参数可能都不一样,本文提供一个标准的模板,可以快速建立模板;
说明:本文是根据自动发现建立模板,请知悉;
2、步骤
1)需求及实现过程
需求:监控所有linux用户的密码的失效时间
分析:第一步找到所有的可登录用户;第二步监控每个可登录用户的密码失效时间
具体流程:第一步可以在/etc/passwd文件中找到用户;第二步用chage进行获取密码失效时间;
实现过程:考虑到linux下有多个用户可以登陆,那zabbix监控就需要配置为自动发现的模式,下文就描述如何配置自动发现及建立监控的整体流程;
2)第一步,获取所有的可登录用户
①首先配置zabbix的conf配置文件
②其次配置zabbix的shell脚本(这个文件需要给可执行权限; chmod o+x /etc/zabbix/zabbix_agentd.d/getUsersCanLogin.sh)
③界面配置“自动发现”
[[email protected] ~]# cat /etc/zabbix/zabbix_agentd.d/chageUser.conf UserParameter=userOfLinuxCanLogin[*],/etc/zabbix/zabbix_agentd.d/getUsersCanLogin.sh [[email protected] ~]# [[email protected] ~]# cat /etc/zabbix/zabbix_agentd.d/getUsersCanLogin.sh #!/bin/bash UsersCanLogin=(`grep 'bash' /etc/passwd|grep -v root|awk -F ':' '{print $1}'`) length=${#UsersCanLogin[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0;i<$length;i++)) do printf '\n\t\t{' printf "\"{#USER_CAN_LOGIN}\":\"${UsersCanLogin[$i]}\"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n" [[email protected] ~]# chmod o+x /etc/zabbix/zabbix_agentd.d/getUsersCanLogin.sh建立一个模板,4个文本框都输入,方便使用;
点击新建模板中的“自动发现”建立,然后点击右上角的“创建发现规则”,然后输入“名称”、“类型”、“键值”(键值就是conf文件中的那个键值)、描述;
3)第二步,获取指定用户的密码失效时间
①在上次的conf配置中,添加新的zabbix的配置
②配置新的zabbix的shell脚本(这个文件需要给可执行权限; chmod o+x /etc/zabbix/zabbix_agentd.d/chageUser.sh)
③界面配置自动发现规则
注意事项:这里的脚本中的chage命令仅root可以用,为了让zabbix可以使用,使用了sudo,并添加了sudo免密使用,使用下面的命令搞定;
echo 'zabbix ALL=(ALL) NOPASSWD: /usr/bin/chage' >> /etc/sudoers.d/zabbix
[[email protected] ~]# cat /etc/zabbix/zabbix_agentd.d/chageUser.conf UserParameter=userOfLinuxCanLogin[*],/etc/zabbix/zabbix_agentd.d/getUsersCanLogin.sh UserParameter=chageUser[*],/etc/zabbix/zabbix_agentd.d/chageUser.sh $1 [[email protected] ~]# [[email protected] ~]# cat /etc/zabbix/zabbix_agentd.d/chageUser.sh #!/bin/bash LANG=en_US.UTF-8 user_name=$1 end_year=`sudo chage -l ${user_name} | head -2| tail -1 | awk -F: '{print $2}'| awk -F',' '{print $2}'| awk '{print $1}'` if [ "${end_year}" == "" ];then #this user password is never expired; echo "19996735" exit 0 fi end_mounth=`sudo chage -l ${user_name} | head -2| tail -1 | awk -F: '{print $2}'| awk -F',' '{print $1}'| awk '{print $1}'` case ${end_mounth} in 'Jan') end_mounth=1;; 'Feb') end_mounth=2;; 'Mar') end_mounth=3;; 'Apr') end_mounth=4;; 'May') end_mounth=5;; 'Jun') end_mounth=6;; 'Jul') end_mounth=7;; 'Aug') end_mounth=8;; 'Sep') end_mounth=9;; 'Oct') end_mounth=10;; 'Nov') end_mounth=11;; 'Dec') end_mounth=12;; esac end_day=`sudo chage -l ${user_name} | head -2| tail -1 | awk -F: '{print $2}'| awk -F',' '{print $1}'| awk '{print $2}'` end_date_s=`/bin/date -d "${end_year}"-"${end_mounth}"-"${end_day}" +%s` star_date_s=`/bin/date +%s` let diffday=(${end_date_s}-${star_date_s})/86400 echo ${diffday} [[email protected] ~]#在自动发现那里,创建新的监控项原型;
下图中的USERCANLOGIN是必须要大写的,若包含小写字母,会报错:Cannot create item: item with the same key "" already exists.
名称框中必须有参数:区分不同的用户,其中的$1就是指{$USERCANLOGIN}
新的应用集:是为了方便分组查看;
4)结果查看及BUG处理
设置图形:“自动发现清单”的“图形原型”添加图形,名称中写“$1 监控linux的用户密码是否到期”
设置告警:需要添加触发器,“触发器类型”中选择参数,设置小于10天即可;名称中写“监控linux的用户密码是否到期”(这里没有参数居然可以);严重性设置为“严重”
使用方法:在某些主机中添加上这个模板,重启客户端systemctl restart zabbix-agent,就可以看到结果了;
没有数据的处理方法:①查看agent的日志②点击“配置”--》“主机”--》“监控项”--》找到“键值”--》查看后面显示的错误;
BUG参考:https://blog.****.net/mofiu/article/details/80758358
时间:2020-10-26