匿名
未登录
登录
Linux78|wiki
搜索
查看“Zabbix通过自动发现监控端口”的源代码
来自Linux78|wiki
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
Zabbix通过自动发现监控端口
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
wiki:用户|用户
您可以查看与复制此页面的源代码。
=== 安装环境 === Zabbix server和agent通过编译方式安装在服务器192.168.25.106上。Zabbix server/agent的安装目录为:/usr/local/zabbix。 === 创建脚本 === ==== 创建自动发现Shell脚本 ==== 创建Shell脚本,使用zabbix_sender命令将监控项的值发送给监控项。脚本主要分为三部分:检查自定义配置文件的合法性,发送json数据给自动发现规则的键值,为每个监控项发送值。 在/usr/local/zabbix/目录下创建script/目录,用于存放脚本,注意修改权限(添加可执行权限,拥有着和所属组为zabbix)。脚本具体如下: #!/bin/bash # Discovery port list and get status of port. # port_discovery.sh ZABBIX_SENDER=/usr/local/zabbix/bin/zabbix_sender CONFIG_FILE=/usr/local/zabbix/etc/port.conf PROXY_IP=192.168.25.106 # HOSTNAME 必须和zabbix前端定义的主机名称一致。 HOSTNAME=192.168.25.106 # 检查自定义配置文件的合法性,除注释和空行外只能包含有效的端口号。 checkConfig(){ grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -vE '^ *[0-9]+' &> /dev/null if [ $? -eq 0 ] then echo Error: ${CONFIG_FILE} contains wrong port number. exit 1 else while read line do echo ${line} | grep -vE '(^ *#|^$)' &> /dev/null if [ $? -eq 0 ] then [ ${line} -gt 0 -a ${line} -lt 65536 ] || { echo Error: port number ${line} in ${CONFIG_FILE} is not between 1 and 65535.; exit 1; } fi done < ${CONFIG_FILE} fi } 输出必须是JSON格式的文本。 portDiscovery(){ num=0 # 变量num和countNum比较,确定是否输出逗号。最后一个列表项后不加逗号。 countNum=$(cat ${CONFIG_FILE} | grep -vE '(^ *#|^$)' |wc -l) echo -e "{\n\t\"data\":[" while read line do echo ${line} | grep -E '(^ *#|^$)' &> /dev/null && continue num=$((num+1)) echo -e "\t{" echo -e "\t\t\"{#PORT_NAME}\":\"${line}\"" [ "$num" == "$countNum" ] && echo -e "\t}" || echo -e "\t}," done < ${CONFIG_FILE} echo -e "\t]\n}" } 单独为每个监控项发送值,-k port.status[{#PORT_NAME}]是不行的。 getPortStatus(){ while read line do echo ${line} | grep -E '(^ *#|^$)' &> /dev/null && continue PORT_STATUS=$(netstat -lnt | awk '{print $4}' | grep ":${line}$" &> /dev/null && echo 1 || echo 0) ${ZABBIX_SENDER} -z ${PROXY_IP} -s ${HOSTNAME} -k port.status[${line}] -o "${PORT_STATUS}" &> /dev/null done < ${CONFIG_FILE} } main(){ # 调用checkConfig和getPortStatus函数。 checkConfig ${ZABBIX_SENDER} -z ${PROXY_IP} -s ${HOSTNAME} -k port.discovery -o "$(portDiscovery)" &> /dev/null getPortStatus # 执行脚本成功会输出下面的字符。 echo Successfully executed } [ $# -eq 0 ] && main || echo Usage: $0 添加自定义配置文件 端口自定义配置文件port.conf文件放置在和zabbix_agentd.conf同一目录下。具体信息如下: 一个端口号单独一行,左右可以包含空格。端口号范围为1到65535。 空行和注释行是允许的。 22 80 50 3306 8080 10050 10051 ==== 添加自定义键值 ==== 在Zabbix agent配置文件中加入自定义键值(如下表),然后重启Zabbix agent服务。自定义键值是为了定时执行脚本,将最新值发送给相应监控项。如果客户端没有安装Zabbix agent,则可以考虑使用周期性计划任务。 UserParameter=port.run, /usr/local/zabbix/script/port_discovery.sh === 创建模板 === ==== 创建端口监控模板 ==== 创建模板,定义自动发现规则,注意键值与脚本中一致,类型为Zabbix采集器(Zabbix trapper)。注意监控项原型使用的宏名和脚本中一致,类型也是Zabbix采集器(Zabbix trapper)。模板中还创建一个“Zabbix客户端”类型的键值,用于定时调用脚本,监控项的“信息类型”为字符。 [[文件:Zabbix-001.jpg|有框|居中]] ==== 关联模板 ==== 将zbx_port_linux模板和主机192.168.25.106关联。 [[文件:Zabbix-002.jpg|有框|居中]] ==== 测试 ==== 将模板和主机关联后,等待片刻就会有数据出现,如下图。 [[文件:Zabbix-003.jpg|有框|居中]]
返回至
Zabbix通过自动发现监控端口
。
导航
导航
首页
最近更改
随机页面
栏目
Nginx
Kubernetes
Spring Cloud
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志