#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk '{print $4}'|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort -n|uniq`)
length=${#portarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i修改配置文件:# vim /etc/zabbix/zabbix_agentd.conf
增加一行:UserParameter=mon_tcpport,/root/shell/zabbix_tcp.sh "$1"
3>重启zabbix-agent:# service zabbix-agent restart
4>在监控端测试:# zabbix_get -s 10.100.2.5 -k mon_tcpport
如果提示以下错误:表示没有权限
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
解决办法:在脚本中使用sudo netstat命令,并修改sudoers文件:
vim /etc/sudoers
#Defaults requiretty #注释掉此行
zabbix ALL=(ALL) NOPASSWD: ALL #添加此行
5>创建自动发现规则:在Template OS Linux模板创建
名称:tcp port discovery
键值:mon_tcpport
6>创建监控项原型:在自动发现规则中创建
名称:tcp port {#TCP_PORT} status
键值:net.tcp.listen[{#TCP_PORT}]
应用集:Services
7>创建触发器原型:在自动发现规则中创建
名称:tcp port {#TCP_PORT} status
严重性:警告
表达式:{Template OS Linux:net.tcp.listen[{#TCP_PORT}].count(#3,0,"eq")}>2
注:{.count(#3,0,”eq”)}>2,表示最近3个值中等于0的个数大于2时则报警。
8>测试
9>在监测中-->最新数据状态如下:
注:net.tcp.listen[port] 检查 TCP 端口 是否处于侦听状态。返回 0 - 未侦听;1 - 正在侦听 八、图形管理
同(配置和管理Zabbix(一))监控项管理,可以根据需要添加想查看的图形。 九、Zabbix历史(history)和趋势(trends)数据
历史数据:即每1、5、15分钟的数据。
趋势数据:即每小时的平均数据,每小时收集一次,占用的资源很小。
保留历史和趋势数据:如下图,在监控项里设置。一般保存历史记录14天,趋势数据5年就可以了。根据磁盘空间来定义。超过保留时间的数据会被删除。
可以看到默认的监控项为历史数据7天(7d即1w一周),趋势数据1年(365d)
注:时间单位后缀
s - 秒(一般不写s,即表示默认为s)
m - 分、h - 小时、d - 天、w - 周 十、报警媒介
在触发器触发了一条报警信息后,需要通过报警媒介发送给用户,Zabbix支持Email、Jabber、SMS、自定义脚本等媒介。
通过Email发报警信息给用户:
1、配置sendmail或postfix:
报警信息将会使用系统自带的sendmail发送,CentOS7默认没有安装sendmail,而是安装和启用了postfix。若要使用sendmail还需要禁用postfix并安装sendmail。但可以使用postfix来代替sendmail发送邮件,效果是一样的,不过都要安装mailx。
yum install mailx
由于邮箱服务器有多个不同的域名服务器,可以修改main.cf,指定转发服务器