最近在部署zabbix监控  有些服务器上开启的服务端口非常多  如果一个个添加监控会很繁琐,于是想到了自动发现规则  自动发现服务器上的服务端口并进行监控。

在zabbix客户端服务器上进行操作

1)编写端口自动发现的脚本

  

cat /usr/local/zabbix/scripts/discover_port.sh
#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"

chmod +x discovertcpport.sh ##增加执行权限

2)配置zabbix客户端的配置文件

在最后添加

tail -5 /usr/local/zabbix/etc/zabbix_agentd.conf

##自动发现端口并监控
UserParameter=tcpportlisten,/bin/bash /usr/local/zabbix/scripts/discover_port.sh "$1"

3)重启zabbix_agent服务

/etc/init.d/zabbix_agentd restart

4)在zabbix客户端进行脚本测试

sh /usr/local/zabbix/scripts/discover_port.sh
{
"data":[
{"{#TCP_PORT}":"10050"},
{"{#TCP_PORT}":"10509"},
{"{#TCP_PORT}":"111"},
{"{#TCP_PORT}":"12871"},
{"{#TCP_PORT}":"228"},
{"{#TCP_PORT}":"25"},
{"{#TCP_PORT}":"3001"},
{"{#TCP_PORT}":"32555"},
{"{#TCP_PORT}":"38312"},
{"{#TCP_PORT}":"8001"},
{"{#TCP_PORT}":"8002"},
{"{#TCP_PORT}":"8003"},
{"{#TCP_PORT}":"8004"},
{"{#TCP_PORT}":"8005"},
{"{#TCP_PORT}":"9000"}
]
}

5)在zabbix服务端进行测试

/usr/local/zabbix/bin/zabbix_get -s 10.128.10.93 -k tcpportlisten
{
"data":[
{"{#TCP_PORT}":"10050"},
{"{#TCP_PORT}":"10509"},
{"{#TCP_PORT}":"111"},
{"{#TCP_PORT}":"12871"},
{"{#TCP_PORT}":"228"},
{"{#TCP_PORT}":"25"},
{"{#TCP_PORT}":"3001"},
{"{#TCP_PORT}":"32555"},
{"{#TCP_PORT}":"38312"},
{"{#TCP_PORT}":"8001"},
{"{#TCP_PORT}":"8002"},
{"{#TCP_PORT}":"8003"},
{"{#TCP_PORT}":"8004"},
{"{#TCP_PORT}":"8005"},
{"{#TCP_PORT}":"9000"}
]
}

测试通过后再zabbixweb页面上进行配置

创建自动发现规则

创建监控项原型

创建 触发器原型

6)查看是否成功

在配置---主机----触发器中进行查看  说明已经成功

问题总结

5.1.服务器测试与客户端通信时:

zabbix sudo: no tty present and no askpass program specified
 

解决:

zabbix客户端修改zabbix_agentd.conf:

AllowRoot=1
 

重启客户端:

# /etc/init.d/zabbix_agentd restart
 

脚本添加权限及修改属主:

# chown zabbix. discover_port.sh
# chmod +x discover_port.sh
 

5.2.测试通信报错2:

zabbix sudo: sorry, you must have a tty to run sudo
 

解决:

vi /etc/sudoers (最好用visudo命令)
注释掉 Default requiretty 一行
#Default requiretty

zabbix 添加自动发现端口并监控的更多相关文章

  1. Zabbix实现自动发现端口并监控

    1.新建客户端需要的脚本 # vim discovertcpport.sh #!/bin/bash portarray=(`sudo netstat -tnlp|egrep -i "$1&q ...

  2. zabbix—自动发现端口并监控

    自动批量检查agent开放的端口 PS:如果服务器上的应用都是固定的,不会随机产生的都可以使用自动发现端口来监控:  如果服务器会随机出现端口且每次启动程序都会改变,可以采用第二种方法,来监控指定的端 ...

  3. zabbix 自动发现端口服务监控教程

    目录 创建数据表(收集haproxy服务的信息) 针对生成的数据表做监控 在haproxy服务机器上配置 在zabbix上添加监控 前言: 1.线上业务使用了几十上百台haproxy服务,需要针对这些 ...

  4. 分布式监控系统Zabbix--完整安装记录-批量添加主机和自动发现端口

    一.Zabbix-3.0.3批量添加主机的配置如下: 0)被监控机上要安装zabbix_agent,并配置好zabbix_agentd.conf (如下172.29.8.50是zabbix_serve ...

  5. zabbix的日常监控-自动发现端口并监测(服务器开启的所有端口或监控指定端口)(十三)

    动批量检查agent开放的端口 注:此方法给监控磁盘IO(即十二)篇过程一样: 注释:如果服务器上的应用都是固定的,不会随机产生的都可以使用自动发现端口来监控:  如果服务器会随机出现端口且每次启动程 ...

  6. zabbix 自动发现端口并添加监控设置

    自动发现端口并添加监控设置UserParameter=net.listen.discovery,sudo /etc/zabbix/scripts/discovery_listport.sh #!/bi ...

  7. zabbix的自动发现、自定义添加监控项目、配置邮件告警

    1.zabbix的自动发现这里的自动发现,所显示出来的是规则的上自动了现 然后 可以对其内容进行相关的配制,如时间或周期 注意:对于单个主机的规则,可以自行添加或删除, 但对于已经添加好了的规则,若需 ...

  8. zabbix 网络模板自动发现端口时,过滤掉某些特定规则的端口,减少item的方法

    1.需求描述        默认情况下Zabbix 模板 中网络接口自动发现接口时,会产生很多item,有时候会有我们不需要的一些接口,这时候需要过滤掉他们.        比如我有一台运行kvm的服 ...

  9. 分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控

     zabbix并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加. 由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务 ...

随机推荐

  1. shell脚本--echo和printf打印输出

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 注:本文关于引号等特殊符号的处理仅仅只是几个例子,想要彻底搞明 ...

  2. Go Web:数据存储(3)——gob对象序列化

    序列化持久存储gob 1.内存存储 2.CSV文件存储 3.gob序列化存储 本篇文章仍然接前面的文章:内存存储,主要介绍将博客文章数据序列化持久到文件中. encoding/gob包用于编码器和解码 ...

  3. Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结

    最近有对一个Windows应用程序少许维护和修改.修改之后要发布新的exe安装文件,打包exe文件时,遇到了很头疼的问题,还好最后解决了,记录一下. Visual Studio版本:Visual St ...

  4. TeamViewer 12\13\14 破解版(解决检测为商业用途的方式)

    一.Windows系统下破解TeamViewer的方式 1.用Windows直接卸载本地的TeamViewer软件2.下载一个Everything软件,并安装好它(这是一个搜索本机文件的工具,超级好用 ...

  5. c# nginx 配置

    listen ; #端口 server_name localhost; #域名可以有多个 用空格隔开 #charset koi8-r; #access_log logs/host.access.log ...

  6. mysql中的prepare介绍和应用

    简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名.在其他的sql数据库中也是如此,mssql的解决方法是将整条sql语句作为变量,其中穿插变 ...

  7. SQL 語法

    查詢 Sql = ("SELECT A1, A2, A5, A4 FROM Table1 ") 筆數 Sql = ("Select COUNT(*) From TW01. ...

  8. Elastic-Job-分布式调度解决方案

    Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成. Elastic-Job-Lite定位为轻量级无中心化解 ...

  9. SSH整合jar包分享及登陆实例详解

    相关jar包分享:struts2+hibernate3+spring3 以及aop ,mysql,以及整合必须包. 链接:https://pan.baidu.com/s/1nCHmSsKU0hiV8D ...

  10. 判断文本是否溢出/hover显示全部

    前言 在工作中我们经常会遇到,文字过多,需要用省略号,并且鼠标hover的时候 还需要 显示全部的文字的需求. 正文 文字过多需要用省略号的实现:上代码啦 .ellipsis { width: 100 ...