需求:监控api端口状态
查找资料,没有找符合需求的zabbix自有监控项,改变策略,查看linux是否有命令可以检测api端口是否开通,然后使用zabbix自定义脚本监控
参考:https://www.cnblogs.com/pizitai/p/6519872.html
一、linux检测远程端口方法:
1、telnet
# telnet 114.242.151.66 8829
Trying 114.242.151.66...
Connected to 114.242.151.66.
Escape character is '^]'.
脚本方法:
# echo -e "
" | telnet 114.242.151.66 8829 | grep Connected
Connected to 114.242.151.66.
Connection closed by foreign host.
2、nmap
# nmap 114.242.151.66 -p 8829
Starting Nmap 5.51 ( http://nmap.org ) at 2017-12-05 17:00 CST
Nmap scan report for 114.242.151.66
Host is up (0.026s latency).
PORT STATE SERVICE
8829/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds
脚本方法:
# port_stats=`nmap 114.242.151.66 -p 8829 |grep open | wc -l`;[[ $port_stats -ge 1 ]] && echo 0 || echo 1
0
3、nc
# nc -z 5 114.242.151.66 8829 && echo 1 ||echo 0
1
# nc -z 5 114.242.151.166 8829 && echo 1 ||echo 0
0
确认检测方法后,发现zabbix自定义还不会,又在网上学习,总结经验如下
参考:https://www.cnblogs.com/xiaolinstudy/p/7271861.html
二、zabbix自定义监控
1、相关概念
- item: Items是从agnet主机里面获取的所有数据。通常情况下我叫itme为监控项,item由key+参数组成
- Key:我们可以理解为key是item的唯一标识,在agent端有很多监控项,zabbix-server根据key区分不同的监控项
- trigger:触发器是建立在item数据上的,具有阈值触发事件的功能
基本格式: :.()}
server:agent名称,加入主机时配置的
key:就是上面说的key
function:对阈值进行操作的函数,以下函数
operate:表达式
constant:常量
2、自定义脚本格式
key[*],[command|sh]
# <key[参数]>,<命令或者脚本>
# [*]:固定格式,表示server端是否传过来参数,在命令或者脚本中用$1,23...引用,shell脚本中的引用$$1,2,3..引用,
# 如果server端不传参数,[*]可以不写
/etc/zabbix/zabbix_agentd.conf
Include=/apps/zabbix/etc/zabbix_agentd.conf.d/ UnsafeUserParameters=1
创建配置目录
# mkdir /apps/zabbix/etc/zabbix_agentd.conf.d/ # mkdir /apps/zabbix/script/
# chown -R zabbix.zabbix /apps/zabbix
创建自定义key
# touch UserParameter.conf UserParameter=mport.nc,nc -w 5 192.168.151.66 8829 && echo 0 || echo 1 UserParameter=mport.nmap[*],/data/zabbix/scripts/mport_namp.sh $1 $2
测试
# zabbix_get -s 192.168.56.131 -p 10050 -k "mport.nc" # zabbix_get -s 192.168.56.131 -p 10050 -k "mport.nmap[192.168.151.66,8829]"
# 测试时,会提示权限不够,脚本需要755权限,并给zabbix sudo权限
# chmod 755 /data/zabbix/scripts/mport_namp.sh
# echo 'zabbix ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers
3、web设置
【配置】--【主机】-- 【Zabbix server】
【监控项】--【创建监控项】
【名称】:按需填写
【类型】:Zabbix客户端
【键值】:填写UserParameter.conf中对应的键值
重启zabbix_agent