【模板】建立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)

③界面配置“自动发现”

[root@www ~]# cat /etc/zabbix/zabbix_agentd.d/chageUser.conf 
UserParameter=userOfLinuxCanLogin[*],/etc/zabbix/zabbix_agentd.d/getUsersCanLogin.sh
[root@www ~]# 

[root@www ~]# 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"
[root@www ~]# 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

[root@www ~]# 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
[root@www ~]# 

[root@www ~]# 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}
[root@www ~]# 

在自动发现那里,创建新的监控项原型;

下图中的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.csdn.net/mofiu/article/details/80758358

时间:2020-10-26

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值