zabbix中常用key值、自定义key值和Items、Triggers、Graphs创建

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>]、net.if.in[{HOST.NAME},<mode>]、net.if.total[{HOST.NAME},<mode>]

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,<mode>]、net.if.in[if,<mode>]、net.if.total[if,<mode>]

[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

wKiom1gRmAmAsC1AAAB1Q36FBag353.png

添加监控项

 Configuration--Templates --TCP连接状态模版中的Items--Create item

wKiom1gRmdKBA3Q1AABntofTQ9I741.png

wKioL1gRmiiyHrHjAABwEFJYrx0435.png键值就是上面自定义的键值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)。

应用集类似分类,根据自己需求添加,也可以不填写。

这里查看值保持不变,

数据更新间隔(秒)根据实际情况填写。


以此类推添加其他状态的监控项。

wKioL1gRnHigANTSAAEUm_6BEf0132.png

至此,tcp连接状态项添加完成,

添加图形

 Configuration--Templates --TCP连接状态模版中的Graphs--Create Graph-添加-全选,或者选择你要添加图形展示的项目

wKiom1gRngqwHFiKAADnHjS4j64369.png


添加触发器

 Configuration--Templates --TCP连接状态模版中的Triggers --Create trigger

wKioL1gRxgDCpWVOAACQmLbRQkE185.png

当TIME_WAIT连接数大于1700触发,这里是用作测试的,具体数值更具实际情况设置。

以此类推添加其他的触发器,我这里指添加了2个

wKioL1gRxzOCGorhAABvjooDrkQ402.png

至此监控tcp连接数添加完成,后面就是应用到主机中。

wKioL1gSndSRYMpjAAEFTlEYSj0429.png


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值