今天有一个朋友问到我一个关于zabbix监控tcp端口的问题,明明端口在监听,但是通过net.tcp,listen取值取到的却是0。
  经过简单的goole发现这已经是一个历史悠久的问题:
  问题的根本原因是zabbix的这个key(net.tcp,listen)是通过读取 /proc/net/tcp这个文件来进行数据采集的,而/proc/下的文件并不是线程安全的,因此会出现取值不准确的问题。
另外这种机制还存在另外一个隐患:当/proc/net/tcp文件的条目非常多的话,就会造成取值慢的情况,因此就有可能造成取值失败的问题。
 
     那我们该如果解决这个问题呢,网上也找到了解决办法,我在这里当一次大自然的搬运工~哈哈
解决方法就是新添加一个用户自定义key来代替zabbix自己提供的监控方式,具体操作步骤如下:
 

#1,添加自定义key --> net.tcp.listen.grep[*]

添加方式,在zabbix客户端的agentd的配置文件中,或者在zabbix agentd所声明的Include配置文件目录下添加如下配置:
UserParameter=net.tcp.listen.grep[*],grep -q $$(printf '%04X.00000000:0000.0A' $1) /proc/net/tcp && echo 1 || echo 0

  例如我的选在就是在/etc/zabbix/zabbix-agentd.conf.d目录下,创建了一个文件net_tcp_listen.conf,将上述key的声明写到文件里,因为我的zabbix_agentd.conf中已经做了配置文件目录包含的声明:

thatsit:~ # grep ^Include /etc/zabbix/zabbix-agentd.conf
Include=/etc/zabbix/zabbix-agentd.conf.d/
thatsit:~ #
thatsit:~ # cat /etc/zabbix/zabbix-agentd.conf.d/net_tcp_listen.conf
UserParameter=net.tcp.listen.grep[*],grep -q $$(printf '%04X.00000000:0000.0A' $1) /proc/net/tcp && echo 1 || echo 0
thatsit:~ #

#2,重启zabbix-agentd,使配置生效

shipeng:~ # /etc/init.d/zabbix-agentd restart
Shutting down zabbix agentd done
Starting zabbix agentd done
shipeng:~ #

#3,使用zabbix_get进行测试

thatsit:~ # zabbix_get -s 192.168.3.154 -k "net.tcp.listen.grep[22]"
1
thatsit:~ # zabbix_get -s 192.168.3.154 -k "net.tcp.listen.grep[23]"
0
thatsit:~ #

#4,在web端,给指点的主机添加此监控项。

监控项的key即是:net.tcp.listen.grep[要监控的端口号]

#5,配置完成,排错思路

至此配置已经完成,如果有问题,可以按照以下思路进行排查,一般的问题在日志中都可以找到端倪。

# 排错思路:
在添加在定义key的时候需要注意一下事项:
注意配置文件或者自定义脚本的属主、属组配置
如果用到了自定义的脚本,注意添加执行权限
如果需要执行自定义脚本,还需要在zabbix_agentd.conf中开启如下参数:
thatsit:~ # grep ^Unsafe /etc/zabbix/zabbix-agentd.conf
UnsafeUserParameters=1
thatsit:~ #
 
参考链接:

自定义key解决zabbix端口监听取值不准确的问题的更多相关文章

  1. zabbix主动模式,自定义Key监控 zabbix采集器

    主动模式不是只能用模板提供的标准检测器方式 zabbix-agent两种运行方式即主动模式和被动模式.默认被动模式. 两种模式是相对 客户端 角度来说的. 被动模式:等待server来取数据,可以使用 ...

  2. zabbix active模式以及自定义key not Supported的解决

    zabbix active模式 active模式适用场景 zabbix server端无法直连agent端,比如agent为内网机器,仅有内网ip,没有公网ip,但是内网机器能够访问server端 a ...

  3. Zabbix常用key和自定义key的讲解

    zabbix中常用到的几个key: 1.监控端口的:net.tcp.port[,3306],可以在服务器端对被监控端测试. /usr/local/zabbix/bin/ -s192.168.8.120 ...

  4. 菩提圣心诀---zabbix自定义key监控oracle连接状态(python脚本)

    目的:此次实验目的是为了zabbix服务端能够实时监控某服务器上oracle实例能否正常连接 环境:1.zabbix_server 2.zabbix_agent(含有oracle) 主要知识点: 1. ...

  5. zabbix使用自定义key进行监控

    我的zabbix-server是安装在另一台虚拟机上的,用来监控下图中的这台虚拟机 先修改zabbix的客户端配置文件,增加UserParameter那行,这里我只是用来测试,所以就随便起了一个名为p ...

  6. zabbix 自定义 key (转)

    转自:http://www.cnblogs.com/miclesvic/p/6164303.html 1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/ ...

  7. Zabbix 自定义Key

    系统:Linux Centos 7.4 x64.Windos 2008 x64 服务:Zabbix 3.0.16 说明1:自定义Key 主要通过自定义 脚本 或者 命令 来实现自定义监控类型,需要在a ...

  8. zabbix 自定义Key (六)

    1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/usr/local/zabbix_agent/etc/zabbix_agentd.conf) ### ...

  9. zabbix自定义key

    zabbix自定义key 1.修改客户端配置文件 #vi /opt/zabbix/etc/zabbix_agentd.conf Include=/opt/zabbix/etc/zabbix_agent ...

随机推荐

  1. 持续集成环境(Gitlab+jenkins+shell)

    一.搭建gitlab ps:不是这方面的专家,主要还是一键式安装为主. 1.进入官网:https://about.gitlab.com/gitlab-com/ 2.选择自己的操作系统:我这边选择的ub ...

  2. "float: left;" div 不换行显示

    <div id='p'> <div id='c1'> </div> <div id='c2'> </div> <div id='c3' ...

  3. sql查询语句心得

    1)where 有多个用in ,一个用= 2)自身链接 select A.Sno from S A,S B where A.Sname='a' AND A.City=B.City)) 3)外链接(同时 ...

  4. osg三维重建的两种方法剖析:三角面片(osgUtil::DelaunayTriangulator)和四角面片(osg::HeightField) (2)

    // perform very basic sanity-check validation on a heightfield.bool validateHeightField(osg::HeightF ...

  5. java中的hashcode方法作用以及内存泄漏问题

    本文装载:http://hi.baidu.com/iduany/item/6d66dfc9d5f2da1650505870 hashCode()方法的作用&使用分析 一直以来都想写篇文章来说明 ...

  6. rtmp协议介绍

    概述: •tcp建立连接. •rtmp握手. •客户端与服务器对建立rtmp连接达成一致. •创建rtmp流 •客户端与服务器对play或者Publish达成一致. •客户端开始传送数据到服务器. • ...

  7. 百度touch的手势框架,touch.js

    今天,随便搜搜看到了一个新的手势库,也许能让我为现在使用者的hammer.js的手势库带来的烦恼而消除. 它是百度团队开发的,现在由百度云Clouda进行维护. 官网   http://touch.c ...

  8. [算法]动态规划(Dynamic programming)

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4603173.html Dynamic Programming的Programming指的不是程序而是一种表格 ...

  9. Linux_install jdk

    Linux安装JDK步骤 1.先从网上下载jdk(jdk-7u1-linux-i586.rpm),下载地址:http://www.oracle.com/technetwork/java/javase/ ...

  10. Mongodb增加权限管理

     前言: 随着列式存储理念的成熟,越来越多的开发者开始接纳mongodb,hbase这类大储存的分布式列式数据库.特别是mongodb的这种快速搭建,快速使用特点,使其得到更多人的青睐.本人主要通过官 ...