当前位置: 首页 > news >正文

zabbix中通过模板实现自动发现对tcp端口批量监控

主要为了解决监控大量端口,避免繁琐的重复操作监控项和触发器
诸位~ 仅供参考哈
自动发现监控参考地址:
https://blog.csdn.net/qq_37510195/article/details/130893655

模板

  1. 首先创建一个模板
    自定义名称和群组
    在这里插入图片描述
  2. 创建自动发现规则
    模板——自动发现——创建发现规则
    在这里插入图片描述
  3. zabbix-agent配置文件
UnsafeUserParameters=1
UserParameter=tcpportlisten,/home/shell/discoverport.sh
				(key)         (脚本地址,zabbix必须有执行权限)

在这里插入图片描述
4. linux脚本参考(仅供参考)
创建一个discoverport.sh文件

#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "java|nginx|mysql|minio"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'`)
servicename=(`sudo netstat -tnlp|egrep -i "java|nginx|mysql|minio"|awk {'print $7'}|awk -F'/' '{print $NF}'|sed 's/:$//'`)


# 定义端口和服务名称的映射关系 键值对
declare -A service_map=(
  [8761]="eureka-server"
  [9000]="gateway-server"
  [10001]="core-server"
  [10002]="device-server"
  [10003]="media-server"
  [10004]="visitor-server"
  [10005]="system-monitor-server"
  [10777]="parking-server"
)
length=${#portarray[@]} #输出有多少个
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
  printf '\n\t\t{'

  if [  -n "${service_map[${portarray[$i]}]}" ];
  then
    printf "\"{#TCP_PORT}\":\"${portarray[$i]}\", \"{#TCP_NAME}\":\"${service_map[${portarray[$i]}]}\"}"
  else
    printf "\"{#TCP_PORT}\":\"${portarray[$i]}\", \"{#TCP_NAME}\":\"${servicename[$i]}\"}"

  fi
  
 
  if [ $i -lt $[$length-1] ]; then
  printf ','
  fi
done
printf  "\n\t]\n"
printf "}\n"


  1. Windows的参考这个脚本
    创建一个discoverport.bat文件
@echo off
setlocal EnableDelayedExpansion
set "output={"data":["

for /f "tokens=2 delims= " %%a in ('netstat -ano ^| findstr "LISTENING" ^| findstr ":3306 :8182 :8180 :15672 :5672 :6379"') do (
    for /f "tokens=1* delims=:" %%b in ("%%a") do (
        for %%d in (%%c) do (
            set "value=%%~d"
            set "output=!output!{"{#TCP_PORT}":"!value:]:=!"},"
			
        )
    )
)

rem Remove the trailing comma from the last object
set "output=!output:~0,-2!}]}"
echo !output!!

#pause #这个要停留端口验证在用,平时注释掉


主机绑定模板

进入主机,选择要绑定的模板
在这里插入图片描述
进入主机的自动发现,找到加入的自动发现规则,双击自动发现后进行测试
在这里插入图片描述
这里,确保测试有数据产生!
在这里插入图片描述
注意:如果出现访问脚本超时,或者无权限执行脚本的类似文件:如

sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
{
"data":[
]
}

解决方法:
需要把zabbix用户加入到sudo中,然后再执行测试自动发现就正常了
修改文件/etc/sudoers
加入:zabbix ALL=(ALL) NOPASSWD: ALL
在这里插入图片描述

创建监控项目

注意:这里是自动发现里面的监控项,非主机下的监控项
这里就可以通过脚本获取到的JSON数据,实现变量方式传值了,极大地避免了人工手动监控多个服务的情况。
监控{#TCP_PORT}端口,{#TCP_NAME}服务
在这里插入图片描述

创建触发器

在这里插入图片描述
{#TCP_NAME}服务停止了,端口为{#TCP_PORT}
验证主机中生成的监控项和触发器:
主机的监控项:
在这里插入图片描述
主机的触发器:
在这里插入图片描述

相关文章:

  • 【区间贪心】合并区间 / 无重叠区间 / 用最少数量的箭引爆气球 / 俄罗斯套娃信封问题
  • 使用在 Google Kubernetes Engine 上运行的 Vertex AI 开始使用 Elastic Chatbot RAG 应用程序
  • opengles,VBO,EBO,VAO啥含义,使用流程
  • Chrome 135 版本开发者工具(DevTools)更新内容
  • C#二叉树
  • JavaScript基础--23-高阶函数详解
  • 科普:原始数据是特征向量么?
  • shadcn 使用步骤与注意点
  • Java面试黄金宝典41
  • k8s 1.30.6版本部署(使用canal插件)
  • Axure中继器(Repeater): 列表展示
  • 火山模型的优缺点与优化实践 | OceanBase SQL优化
  • C++·包装器
  • 新一代达梦官方管理工具SQLark:可视化建表操作指南
  • verilog有符号数的乘法
  • 华为存储考试内容HCIP-Storage
  • RPC 2025/4/8
  • 【QT】 进程
  • 企业级Java开发工具MyEclipse v2025.1——支持AI编码辅助
  • QML面试笔记--UI设计篇01常用控件分类
  • 建设网站要买空间吗/百度竞价开户需要多少钱
  • 怎么做属于自己的领券网站/推广优化厂商联系方式
  • wordpress支持pdo/洛阳搜索引擎优化
  • 网站建设南宁/友情链接怎么设置
  • 用html做网站代码/营销策划公司排名
  • 网站建设费如何入帐/江北seo页面优化公司