zabbix中常用key值
监控端口的key值:net.tcp.port[,port_number]
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.32 -k net.tcp.port[,21] 1 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.32 -k net.tcp.port[,1433] 0 [root@Zabbix_Server ~]#
返回1为10.10.2.32的端口21存在,0为端口1433不存在。
监控进程的key值:proc.num[process_name]
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.32 -k proc.num[WinRAR.exe] 1 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.32 -k proc.num[WinRAR1.exe] 0 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.32 -k proc.num[] 59 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.131 -k proc.num[mysqld] 1 [root@Zabbix_Server ~]#
proc.num[WinRAR.exe]返回值为10.10.2.32中WinRAR.exe的进程数量; proc.num[]返回值为10.10.2.32中所有的进程数量。
查看CPU核数的key值:system.cpu.num 返回值为服务器CPU的核数
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.32 -k system.cpu.num 16 [root@Zabbix_Server ~]#
查看系统的系统启动时间和当前时间的key值:system.boottime、system.localtime
返回值为系统启动时间和当前时间,为时间戳格式
查看系统的简单信息的key值:system.uname
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.32 -k system.uname Windows WGQ-DBF 6.1.7601 Microsoft Windows Server 2008 R2 Enterprise Edition Service Pack 1 x64 [root@Zabbix_Server ~]#
查看磁盘容量息的key值:vfs.fs.size[/,pfree]
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.83 -k vfs.fs.size[/,pfree] 70.659044 [root@Zabbix_Server ~]#
vfs.fs.size[/,pfree]:取/领域的剩余空间率。p是percentage,
vfs.fs.size[/,free]:取/领域的剩余空间。对应的单位就是B(这里的意思是Byte)
vfs.fs.size[/,pused]:取/领域的使用空间率。
vfs.fs.size[/,used]:取/领域的使用空间。
如果要创建触发器表达式可以使用{ZABBIX-CC:vfs.fs.size[/,pfree].last(0)}<20
查看系统当前网卡的进出流量的key值:
Windows的key:net.if.out[{HOST.NAME},
mode可用值:bytes – 字节数 (默认)packets – 包数量errors – 错误数量dropped – 丢包数量
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.32 -k net.if.out[10.10.2.32,bytes] 2574078498 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.32 -k net.if.in[10.10.2.32,bytes] 3768375695 [root@Zabbix_Server ~]#
返回值为IP为10.10.2.32的进、出流量,此值为计数值,单位为bytes,减去上次取得值,除以时间间隔为此段时间内的平均流量
linux系统的key:net.if.out[if,
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.131 -k net.if.out[eth0,bytes] 344772643204 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.131 -k net.if.in[eth0,bytes] 114397327779 [root@Zabbix_Server ~]#
查看系统内存大小的key值:vm.memory.size[total],返回值单位bytes
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.2.131 -k vm.memory.size[total] 16727826432 [root@Zabbix_Server ~]#
查看文件的大小的key值:vfs.file.size[file],单位是:bytes
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.15.44.161 -k vfs.file.size[/root/zabbix-agent-3.0.4-1.el6.x86_64.rpm] ZBX_NOTSUPPORTED: Cannot obtain file information: [13] Permission denied [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.15.44.161 -k vfs.file.size[/var/log/maillog-20160929] 197 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.15.44.161 -k vfs.file.size[/usr/local/src/zabbix-agent-3.0.4-1.el6.x86_64.rpm] 328128 [root@Zabbix_Server ~]#
查看文件是否存在的key值:vfs.file.exists[file] 文件如果不存在返回0,存在返回1
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.15.44.161 -k vfs.file.exists[/usr/local/src/messages-20161017] 1 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.15.44.161 -k vfs.file.exists[/usr/local/src/messages-20161018] 0 [root@Zabbix_Server ~]#
查看文件的MD5的key值:vfs.file.md5sum[file],查看小文件的MD5,返回为MD5值(好像只有2.0以上的版本有这个key)
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.15.44.161 -k vfs.file.md5sum[/usr/local/src/zabbix-agent-3.0.4-1.el6.x86_64.rpm] 6811f6ddd9b9ed3677e580c276abe785 [root@Zabbix_Server ~]#
自动发现网卡并监控流量和自动发现分区及分区挂载情况的key值:net.if.discovery,vfs.fs.discovery,windows和linux监控模板中都有这模板(2.0以上版本),应用即可
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.15.44.161 -k net.if.discovery {"data":[{"{#IFNAME}":"lo"},{"{#IFNAME}":"eth1"}]} [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.15.44.161 -k vfs.fs.discovery {"data":[{"{#FSNAME}":"/","{#FSTYPE}":"rootfs"},{"{#FSNAME}":"/proc","{#FSTYPE}":"proc"},{"{#FSNAME}":"/sys","{#FSTYPE}":"sysfs"},{"{#FSNAME}":"/dev","{#FSTYPE}":"devtmpfs"},{"{#FSNAME}":"/dev/pts","{#FSTYPE}":"devpts"},{"{#FSNAME}":"/dev/shm","{#FSTYPE}":"tmpfs"},{"{#FSNAME}":"/","{#FSTYPE}":"ext4"},{"{#FSNAME}":"/proc/bus/usb","{#FSTYPE}":"usbfs"},{"{#FSNAME}":"/sh","{#FSTYPE}":"ext4"},{"{#FSNAME}":"/proc/sys/fs/binfmt_misc","{#FSTYPE}":"binfmt_misc"},{"{#FSNAME}":"/misc","{#FSTYPE}":"autofs"},{"{#FSNAME}":"/net","{#FSTYPE}":"autofs"},{"{#FSNAME}":"/root/.gvfs","{#FSTYPE}":"fuse.gvfs-fuse-daemon"},{"{#FSNAME}":"/media/RHEL_6.5\\040x86_64\\040Disc\\0401","{#FSTYPE}":"iso9660"}]} [root@Zabbix_Server ~]#
zabbix自定义key值
zabbix自定义key值和nagios在客户端nrpe.cfg文件中自定义监控命令类似,command[check_disk_data]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /opt。
要启用自定义key,需要在客户端的配置文件中启用UnsafeUserParameters=1参数,然后在配置文件的最下面来定义key。
key允许0-9a-zA-Z_-.,即允许所有数字、有大小写字幕、下划线、减号、点.作为名称。
key可以有多个参数,他们之间用逗号’,’分开。UserParameter=key[*],command
key为唯一值,[*]表示参数。command为要执行的命令或脚本,key的[*]里面的参数一一对应command的$1到$9,一共9个参数。$0表示脚本命令。返回结果数据最大为512KB。 如果需要使用命令行里面出现$2这种变量,那么你要使用两个$$2,例如awk ’{ print $$2 }’,之前就遇到过这个问题,不停的测试自己脚本输出正常,但是zabbix却拿不到数据,原来是出在这里。为了防止和参数冲突,所以zabbix做了这个规定。参数禁止使用下列字符:\ ‘ ” ` * ? [ ] { } ~ $ ! & ; ( ) <> | # @
key参数可以是带引号的字符串、不带引号的字符串以及数组。
[root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf # Mandatory: no # Range: 0-1 # Default: UnsafeUserParameters=1 UserParameter=iptstate.tcp,/etc/zabbix/scripts/net-tcp UserParameter=iptstate.tcp.syn,/etc/zabbix/scripts/net-syn UserParameter=iptstate.tcp.timewait,/etc/zabbix/scripts/net-time-wait UserParameter=iptstate.tcp.established,/etc/zabbix/scripts/net-established UserParameter=iptstate.tcp.close,/etc/zabbix/scripts/net-close UserParameter=iptstate.udp,/etc/zabbix/scripts/net-udp UserParameter=iptstate.icmp,/etc/zabbix/scripts/net-icmp
iptstate.tcp为key的名字,/etc/zabbix/scripts/net-tcp为服务器端调用iptstate.tcp这个key时执行的脚本,其结果就是iptstate.tcp的返回值。脚本可以是任何可以运行的脚本语言。注意:脚本要用绝对路径,注意脚本的权限,写的脚本返回值要尽量简单,这样方便设置报警值。
windows客户端修改zabbix_agentd.win.conf
C:\Users\Administrator>type C:\zabbix_zgent\conf\zabbix_agentd.win.conf # Mandatory: no # Default: # EnableRemoteCommands=0 EnableRemoteCommands=1 # Mandatory: no # Range: 0-1 # Default: # UnsafeUserParameters=0 UnsafeUserParameters=1 UserParameter=tcp.timewait,C:\zabbix_zgent\bat\net-time-wait.bat
Client:10.15.44.161
[root@localhost alertscripts]# cat /usr/local/zabbix/alertscripts/uptime.sh #!/bin/bash up_time=`uptime|cut -d ' ' -f 3-6|cut -d',' -f 1,2` echo $up_time [root@localhost alertscripts]# vim /usr/local/zabbix/etc/zabbix_agentd.conf # Mandatory: no # Range: 0-1 # Default: UnsafeUserParameters=1 UserParameter=uptime,/usr/local/zabbix/alertscripts/uptime.sh [root@localhost alertscripts]# service zabbix_agentd restart
Server:
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.15.44.161 -k uptime up 2 days, 22:03 [root@Zabbix_Server ~]#
自定义key时提示:NOT Supported by zabbix agent
1、zabbix在自定义的Item时N提示ot Supported,Zabbix Agent默认的超时时间是3秒,自定义的Item由于各种原因返回时间会比较长。
[root@FTP_Server ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf # Mandatory: no # Range: 1-30 # Default: # Timeout=3 Timeout=10 [root@FTP_Server ~]# service zabbix_agentd restart
2、取到的值和key的类型不符。在相应主机的监控项中进行查看。
3、zabbix_server取不到监控项的值:在server上使用命令zabbix_get获取当前key
添加自定义监控项
上面配置自定义key值后我们需要把他应用到监控里,作为监控项应用到主机。
以使用zabbix监控TCP连接状态为例:
[root@localhost ~]# /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' TIME_WAIT 1956 CLOSE_WAIT 95 SYN_SENT 40 ESTABLISHED 738 FIN_WAIT2 25 LISTEN 35 [root@localhost ~]#
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood***了)
ESTABLISHED:代表一个打开的连接/当前并发连接数
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被***)
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态。
被监控端:
[root@localhost etc]# cat Tcp_Connection_Status.sh #!/bin/bash #This script is used to get tcp and udp connection status! #by Justin Peng #2016-10-26 Tcp_Status=$1 Tmp_File=/tmp/Tcp_Status.txt /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' > $Tmp_File case $Tcp_Status in TIME_WAIT) num=`awk '/TIME_WAIT/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; CLOSE_WAIT) num=`awk '/CLOSE_WAIT/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; SYN_SENT) num=`awk '/SYN_SENT/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; ESTABLISHED) num=`awk '/ESTABLISHED/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; FIN_WAIT2) num=`awk '/FIN_WAIT2/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; LISTEN) num=`awk '/LISTEN/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; SYN-RECEIVED) num=`awk '/SYN-RECEIVED/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; FIN-WAIT-1) num=`awk '/FIN-WAIT-1/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; CLOSING) num=`awk '/CLOSING/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; LAST-ACK) num=`awk '/LAST-ACK/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; CLOSED) num=`awk '/CLOSED/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; UNKNOWN) num=`awk '/UNKNOWN/ {print $NF}' $Tmp_File` if [ -z $num ];then echo 0 else echo $num fi ;; *) echo -e "\033[31m Usage:$0 [TIME_WAIT|CLOSE_WAIT|SYN_SENT|ESTABLISHED|FIN_WAIT2|LISTEN|SYN-RECEIVED|FIN-WAIT-1|CLOSING|LAST-ACK|CLOSED|UNKNOWN]\033[0m" ;; esac [root@localhost etc]# vim ../etc/zabbix_agentd.conf # Mandatory: no # Range: 0-1 # Default: UnsafeUserParameters=1 UserParameter=tcp.status[*],/usr/local/zabbix/etc/Tcp_Connection_Status.sh $1 [root@localhost etc]# service zabbix_agentd restart
Zabbix端
命令行测试
[root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.55.41 -k tcp.status[TIME_WAIT] 1727 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.55.41 -k tcp.status[ESTABLISHED] 738 [root@Zabbix_Server ~]# /app/zabbix/bin/zabbix_get -s 10.10.55.41 -k tcp.status[CLOSE_WAIT] 105 [root@Zabbix_Server ~]#
web端配置
添加zabbix监控模板
Configuration--Templates --Create template
添加监控项
Configuration--Templates --TCP连接状态模版中的Items--Create item
键值就是上面自定义的键值tcp.status,这里监控的是TIME_WAIT,查看键值就是根据命令返回结果展示的状态,如果是监控服务状态可以选择service state,具体展示状态和返回值关系可以点击后面的展示值映射查看。
名称中可以使用变量$1、$2...,直接调用键值的第一、二...个参数,如:Name填写Free disk space on $1 (percentage),key填写vfs.fs.size[/,pfree],name就会显示Free disk space on / (percentage)。
应用集类似分类,根据自己需求添加,也可以不填写。
这里查看值保持不变,
数据更新间隔(秒)根据实际情况填写。
以此类推添加其他状态的监控项。
至此,tcp连接状态项添加完成,
添加图形
Configuration--Templates --TCP连接状态模版中的Graphs--Create Graph-添加-全选,或者选择你要添加图形展示的项目
添加触发器
Configuration--Templates --TCP连接状态模版中的Triggers --Create trigger
当TIME_WAIT连接数大于1700触发,这里是用作测试的,具体数值更具实际情况设置。
以此类推添加其他的触发器,我这里指添加了2个
至此监控tcp连接数添加完成,后面就是应用到主机中。