设为首页 收藏本站
查看: 1032|回复: 0

[经验分享] zabbix自定义脚本做监控及自制模板初探

[复制链接]

尚未签到

发表于 2019-1-20 09:06:38 | 显示全部楼层 |阅读模式
一、说明
  zabbix监控支持自定义脚本以及自制模板来扩展监控,换句话说就是对业务自定义监控;因此通过撰写脚本完成自定义监控十分有必要;这里的脚本既可以用shell也可以用python等语言;
另外自定义了脚本主要目的是获取业务相关的监控数据;还需要结合zabbix web GUI上的模板才能生效;本文的目的就是基于之前的zabbix相关部署操作之后的补充!
  任务:
通过撰写脚本获取tcp 的各种状态,添加tcp状态模板,添加触发器;添加图形;完整实现脚本自定义监控的整个步聚流程!

二、agent端配置
  创建目录存放自定义脚本

[root@node2 ~]# mkdir -pv /etc/zabbix/bin
[root@node2 ~]# chown zabbix.zabbix /etc/zabbix/bin
  脚本内容

[root@node2 ~]# cat /etc/zabbix/bin/tcp.sh
#!/bin/bash
tcp_conn_status(){
TCP_STAT=$1
ss -ant |awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/tcp_conns.txt
TCP_NUM=$(grep "$TCP_STAT" /tmp/tcp_conns.txt | cut -d ' ' -f2)
if [ -z $TCP_NUM ];then
TCP_NUM=0
fi
echo $TCP_NUM
}
main(){
case $1 in
tcp_status)
tcp_conn_status $2;
;;
esac
}
main $1 $2

  配置zabbix-agentd.conf
执行自定义脚本获取数据时;需要打开对应选项

[root@node2 ~]# egrep -v "(^#|^$)" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
EnableRemoteCommands=1                #远程执行命令的选项
Server=172.16.3.152
ServerActive=172.16.3.152
Hostname=node2.san.com
Include=/etc/zabbix/zabbix_agentd.d/*.conf      
UnsafeUserParameters=1                        #设置为1 表示允许用户算定义key(监控项)

  修改/etc/sudoers
由于zabbix server获取数据是通过自定义脚本基于agent 代理执行获取,因此需要修改sudo的配置以便执行
/etc/sudoers中添加如下内容并注释如下行

#Defaults    requiretty                               #不需要tty终端即可执行命令
zabbix  ALL=(root)      NOPASSWD: /usr/sbin/ss

  自定义key配置文件

[root@node2 ~]# cat /etc/zabbix/zabbix_agentd.d/tcp_conns.conf
UserParameter=tcp_status
  • ,/bin/bash /etc/zabbix/bin/tcp.sh $1 $2 $3
      说明:此处的tcp_status就是监控key或叫监控项名 后面的$1 $2 $3是对应的参数;
    重启zabbix-agent服务
    [root@node2 ~]# systemctl restart zabbix-agent
    可以通过zabbix server端的zabbix_get测试是否能获取自定义监控项的数据

    [root@zabbix ~]# zabbix_get -s 172.16.3.216 -p 10050 -k "tcp_status[tcp_status,ESTAB]"
    2
      以上已经可以获取172.16.3.216上的自定义监控项tcp ESTAB的数据(2);至此通过脚本自定义监控项agent端的配置已经完成;

    三、自定义模板使用
      在agent端完成脚本和自定义的监控项配置后,zabbix server web GUI上需要创建对应的模板;其他的主机可以套用模板以获取自定义数据;
    创建模板:
    配置-->模块-->创建模板-->模板名称 "TCP_CONN_STATUS" -->放入 Template组-->添加  如图:

      添加itme监控项
    配置-->模块-->TCP_CONN_STATUS -->监控项 -->创建监控项-->名称 "TCP_CONN_ESTAB" -->键值"tcp_status[tcp_status,ESTAB]" -->应用集"TCP_CONN_STATUS" -->添加
    如图:

    通过以上步聚依次创建
    TCP_CONN_FIN-WAIT-1、TCP_CONN_LAST-ACK、 TCP_CONN_LISTEN  、TCP_CONN_SYN-RECV、TCP_CONN_TIME-WAIT监控项 最终监控项如图:

      创建触发器:
    创建一个ESTAB大于500时的触发器~
    配置-->模块-->TCP_CONN_STATUS -->触发器-->创建触发器-->名称"Too Many Tcp ESTAB" -->严重性"警告"-->表达式 通过选择ESTAB的项 最后获取大于500 即"{TCP_CONN_STATUS:tcp_status[tcp_status,ESTAB].last()}>500"
    如图:

      创建图形:
    配置-->模块-->TCP_CONN_STATUS -->图形 -->创建图形 -->名称 "TCP_CONN_STATUS_Graph" -->选择之前的监控项 -->添加 如图:

      至此一个自定义的监控模板制作完成!
      关联主机
    配置-->主机-->node2.san.com -->模板 -->链接的模板 "添加自定义模板 TCP_CONN_STATUS" -->更新 如图:

      验证:
    查看node.san.com主机监控项:
    配置-->主机-->node2.san.com -->监控项   如图:

    查看生成的图形:
    监测-->图形-->  如图

    以上的自制的模板也可以导出,以便后期分享与重复使用!



    四、自动发现应用
      一般我们经常去侦测服务器对外开放的端口,加上触发器,可以很好的达到如果端口异常关闭则说明对应的服务故障;做至好自动发现并监控服务器上所有开放的端口就变得很方便;
    脚本:
    cat /etc/zabbix/bin/tcp_ports.sh

    #!/bin/bash
    portarray=(`sudo netstat -tnlp|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort |uniq   2>/dev/null`)
    length=${#portarray[@]}
    printf "{\n"
    printf  '\t'"\"data\":["
    for ((i=0;i模板-->TCP_CONN_STATUS-->"探索规则"-->创建发现规则--> 如图:

      验证:
    找一台引用了TCP_CONN_STATUS模板的主机 -->最新数据里可以看到已经自动发现并侦测到,此主机上开放的端口:


    总结:
      通过撰写脚本自定义获取tcp 连接状态的监控;修改agent配置完成获取自定义监控项数据;制作监控模板获取自定义数据项,添加触发器,添加图形,并应用到主机上;完整展示了zabbix获取数据展示数据的过程;通过添加自动发现侦测端口来认识自动发现的应用;希望读者能通过本例实现举一反三;对zabbix 监控以及自定义获取数据有一个深刻认识!




  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665424-1-1.html 上篇帖子: Zabbix agent批量自动部署 下篇帖子: linux下yum安装配置zabbix监控
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表