zabbix自定义脚本做监控及自制模板初探

一、说明

zabbix监控支持自定义脚本以及自制模板来扩展监控,换句话说就是对业务自定义监控;因此通过撰写脚本完成自定义监控十分有必要;这里的脚本既可以用shell也可以用python等语言;
另外自定义了脚本主要目的是获取业务相关的监控数据;还需要结合zabbix web GUI上的模板才能生效;本文的目的就是基于之前的zabbix相关部署操作之后的补充!

任务:
通过撰写脚本获取tcp 的各种状态,添加tcp状态模板,添加触发器;添加图形;完整实现脚本自定义监控的整个步聚流程!

二、agent端配置

创建目录存放自定义脚本

[[email protected] ~]# mkdir -pv /etc/zabbix/bin
[[email protected] ~]# chown zabbix.zabbix /etc/zabbix/bin

脚本内容

[[email protected] ~]# 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
执行自定义脚本获取数据时;需要打开对应选项

[[email protected] ~]# 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配置文件

[[email protected] ~]# 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服务
[[email protected] ~]# systemctl restart zabbix-agent
可以通过zabbix server端的zabbix_get测试是否能获取自定义监控项的数据

[[email protected] ~]# 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 -->监控项 如图:

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

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

总结:

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

原文地址:http://blog.51cto.com/dyc2005/2083880

时间: 2024-11-06 01:21:08

zabbix自定义脚本做监控及自制模板初探的相关文章

zabbix自定义脚本监控pps(Packets per Second,包转发率)

一:介绍 网络的性能通常用吞吐率(throughput)这个指标来衡量.常用的网络吞吐率的单位有:PPS(即每秒发送多少个分组数据包).BPS(Bytes Per Second;即每秒发送多少字节).bPS (bits Per Second;即每秒发送多少比特).TPS(TransactionsPer Second;即每秒完成多少次发送过程). pps:(包每秒)包转发率标志了交换机转发数据包能力的大小.一般交换机的包转发率在几十Kpps到几百Mpps.包转发速率是指交换机每秒可以转发多少百万个

zabbix 自定义脚本监控配置之网卡

注:要添加自定义脚本监控,必须升级zabbix agent版本至2.0.0以上, 一:配置步骤 1. 完成自定义监控脚本的编写(windows或linux脚本) 脚本要求: (1)既然是监控,那必然要有输出结果值(字符串,数字皆可) (2)必须要求zabbix用户有执行权限,当然可以直接设置所有用户都有执行权限(chmod 777 脚本文件) (3)若脚本需要传入参数,按照参数传入的顺序,在脚本中可用$1-$9来引用传入的参数 2 找到zabbix agent的配置文件zabbix_agentd

L15.3 zabbix自定义脚本执行与报警配置(辅助5.4)

zabbix脚本报警配置 注:此文是5.4配置的一些关键配置说明,非完整步骤 zabbix-agent要配置为支持执行远程命令: vim /etc/zabbix/zabbix_agentd.conf EnableRemoteCommands=1 #Defaults    requiretty 注意 (1) 如果用到以其它用户身份执行命令的话,那么命令本身要以sudo方式运行: sudo /etc/rc.d/init.d/httpd restart (2) 在各agent上的sudoers文件:

zabbix自定义网卡流量监控脚本and解决图形字体方块问题

1.  在客户端修改配置文件  /etc/zabbix/zabbix_agentd.conf需要改动两个地方:(1)  UnsafeUserParameters=1(2) UserParameter=my.net.if[*],/usr/local/sbin/zabbix/net.sh $1 $2   //其中UserParameter用来自定义键值,(类似于net.if.in),自己写的脚本往往会有参数,所以需要加[*],这是固定写法,如果脚本压根就没有什么参数,那么这个[*]就省了.逗号后面就

zabbix自定义脚本监控pps(Packets per Second,包转发率)_下

接上篇,Linux的做完了,再搞windows的. 首先查了下windows的在哪里获取,在windows的性能计数器中可以获取,叫做Packets Received/sec(获取出来的值就可以直接使用,不像Linux还得需要求差) 那如何获取呢: 1,新建个ITEM,使用这个KEY,perf_counter[]来实现,这个key直接获取性能计数器的数值. 那么只需要找到需要监控的网卡的包转发率的名称 2,获取windows性能计数器上的值 方法一:在win 的 命令cmd窗口下,运行  typ

zabbix 自定义脚本

这个脚本的思路,自定义一个key,然后就是通过查看文件 /proc/net/dev  里面的数值,来计算实时网卡流量,其实我算的是一个平均值.分为进和出.如果这个脚本每隔1分钟执行一次,那么算出来的流量值就是1分钟的平均值.最终得到网卡流量趋势图. 客户端操作 # vim /etc/zabbix/zabbix_agentd.conf # UnsafeUserParameters=0 取消注释并修改为1,在下面增加一行 UserParameter=my.net.if[*],/usr/local/s

zabbix自定义脚本

客户端 1.编辑/etc/zabbix/zabbix_agentd.conf [[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf # Mandatory: no # Range: 0-1 # Default: UnsafeUserParameters=1 UserParameter=my.net.if[*],/usr/local/sbin/zabbix/net.sh $1 $2 解释说明: UserParameter用来自定义键值,

zabbix 自定义key值监控

1.zabbix一般监控使用zabbix即可,如果自定义的监控的话也是可以的,现看下zabbix.agentd.conf里面的介绍 UnsafeUserParameters 默认参数是0,0表示不启用UserParameter,1表示启用. 2. UserParameter=<key>,<shell command> 这个就是自定义监控的命令,key加上监控的选项,如下监控http的连接数 3.改完配置以后一定要重启下,之后再服务端测试下 这里可以看到有输出的,但是没访问所以很少

zabbix自定义脚本实现短信报警提醒

一 简介 通常,在zabbix的web界面配置好之后为了能够及时收到zabbix的报警信息,我们需要配置"报警媒介"来通知我们.其中常用的两种报警媒介分别是:Email和SMS,即:发邮件通知和发短信通知 关于邮件通知的配置很简单,只需要设置SMTP即可,因此这里不多说.但是zabbix默认的短信通知可就有点坑了,"SMS"这种报警媒介要想发送短信是需要硬件支持的.与此同时,现在开发中为了方便一般都是将短信发送的操作封装成接口的形式的,当需要发短信时只需要调用该接口