Zabbix 配置端口监控

Zabbix 端口监控简介

在Zabbix中配置端口监控,可以帮助你实时监控服务器或网络设备上的特定端口是否开放和可访问。Zabbix提供了多种方式来监控端口,主要包括简单的端口可用性检查和更复杂的服务监控。
在这里插入图片描述
在Zabbix中进行端口监控时,不一定需要Zabbix Agent参与。可以选择使用Zabbix的内置“简单检查”(Simple check)功能来实现端口监控,这种方式不依赖于Zabbix Agent。

如果需要更复杂的监控,或者在监控过程中需要进行一些自定义处理,可以使用Zabbix Agent和自定义用户参数来实现端口监控。

安装了Zabbix Agent后,登录Zabbix Server的Web界面添加新主机,通过配置相应的监控项(Item)和触发器来监控特定端口的状态。

以下是Zabbix进程标准检测器的列表:

# 检查 TCP 端口 是否处于侦听状态。返回 0 - 未侦听;1 - 正在侦听
net.tcp.listen[port]

# 检查是否能建立 TCP 连接到指定端口。返回 0 - 不能连接;1 - 可以连接
net.tcp.port[<ip>,port]

# 检查 TCP 服务的性能。返回 0 - 服务已关闭;或连接到服务所用的秒数	
net.tcp.service.perf[service,<ip>,<port>]

# 检查服务是否运行并接受 TCP 连接。返回 0 - 服务关闭;1 - 服务运行
net.tcp.service[service,<ip>,<port>]

# 返回与参数匹配的 TCP 套接字数量。返回整数
net.tcp.socket.count[<laddr>,<lport>,<raddr>,<rport>,<state>]

# 检查 UDP 端口 是否处于侦听状态。返回 0 - 未侦听;1 - 正在侦听
net.udp.listen[port]

# 检查 UDP 服务的性能。返回 0 - 服务已关闭; 或等待服务响应的秒数
net.udp.service.perf[service,<ip>,<port>]

# 检查服务是否运行并响应 UDP 请求。返回 0 - 服务关闭;1 - 服务运行
net.udp.service[service,<ip>,<port>]

# 返回匹配参数的 UDP 套接字数量。返回整数
net.udp.socket.count[<laddr>,<lport>,<raddr>,<rport>,<state>]

Zabbix 端口监控配置

zabbix环境信息:

节点IPOSRole
zabbix-server192.168.72.31Ubuntu 22.04zabbix-server
web-server192.168.72.33Ubuntu 22.04web-server/zabbix-agent

zabbix 版本: v7.0.0

前置要求:已在web-server上安装zabbix-agent,并且在zabbix-server上添加web-server主机。

在web-server上安装nginx服务作为示例应用端口。

apt install -y nginx

查看nginx 监听的80端口

root@web-server:~# ss -antulp |grep ':80 '
tcp   LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:(("nginx",pid=49839,fd=6),("nginx",pid=49838,fd=6),("nginx",pid=49837,fd=6))                                                                                                                                                                                                                                                                                                                                                                  
tcp   LISTEN 0      511             [::]:80            [::]:*    users:(("nginx",pid=49839,fd=7),("nginx",pid=49838,fd=7),("nginx",pid=49837,fd=7))                                                                                     

在zabbix web控制台上,导航到数据采集 -> 主机,选择web-server节点
在这里插入图片描述
选择监控项,新建监控项
在这里插入图片描述

配置参数说明:

  • 名称:Check Port 80 Status
  • 类型:Zabbix 客户端
  • 键值:net.tcp.service[tcp,,80]

选择触发器,创建触发器,在表达式中选择Check Port 80 Status
在这里插入图片描述

配置参数说明:

  • 名称:Port 80 Down
  • 表达式:点击添加,监控项选择Check Port 80 Status,插入后表达式为:last(/web-server/net.tcp.service[tcp,,80])=0,当80端口不存在时进行告警。

选择告警->动作->创建动作,在触发器中选择Port 80 Down
在这里插入图片描述配置参数说明:

  • 名称:Notify on Port 80 Down
  • 条件:点击添加,触发器选择 Port 80 Down

配置操作
在这里插入图片描述
自定义消息内容如下:

Problem: {EVENT.NAME}


-=【告警】=-
告警组:{TRIGGER.HOSTGROUP.NAME}
告警主机:{HOSTNAME1} 
告警主机别名:{HOST.NAME}
主机IP:{HOST.IP}
主机描述:{HOST.DESCRIPTION}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
警报类别:{TRIGGER.NAME}
当前状态:{ITEM.LASTVALUE}
告警平台:http://192.168.72.31/zabbix

说明:告警平台地址为zabbix-server地址。

配置恢复操作
在这里插入图片描述
自定义消息内容如下:

Resolved:{EVENT.NAME}


-=【告警取消啦】=-
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.TIME}
主机IP:{HOST.IP}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

在监测->最新数据中,选择web-server,查看监控数据图形:在这里插入图片描述
在Zabbix-server服务端执行。
如果192.168.1.100的8080端口正常可达,此时应该返回1,如果不通则返回0

root@zabbix-server:~# apt install -y zabbix-get
root@zabbix-server:~# zabbix_get -s 192.168.72.33 -k net.tcp.service[tcp,,80]
1

在web-server上停止nginx服务

root@web-server:~# systemctl stop nginx

查看收到的钉钉告警消息
在这里插入图片描述

自定义脚本配置文件

通过在Zabbix客户端配置文件中添加自定义用户参数(UserParameter),可以实现对特定端口的监控。这是一种灵活的监控方法,可以根据需求定制化监控项。以下是具体步骤和示例:

通过为zabbix设计脚本文件加端口列表文件,port_alert.sh为端口自发现脚本,port.conf为指定的监控端口号,然后结合UserParameter来批量监控端口。可以轻松地批量监控多个端口,并且可以通过简单修改配置文件来更新监控列表,无需频繁修改Zabbix配置。

在web-server节点创建脚本文件

root@web-server:~# cat /etc/zabbix/port_alert.sh 
#!/bin/bash

# 端口自发现脚本
discover_ports() {
    ports=$(cat /etc/zabbix/port.conf | grep -v '^#' | tr '\n' ' ')
    printf '{"data":['
    comma=""
    for port in $ports
    do
        printf '%s{"{#PORT}":"%s"}' "$comma" "$port"
        comma=","
    done
    printf ']}\n'
}

# 检查端口是否开放
check_port() {
    port=$1
    timeout 1 bash -c "echo >/dev/tcp/localhost/$port" 2>/dev/null
    if [ $? -eq 0 ]; then
        echo 1
    else
        echo 0
    fi
}

# 主逻辑
case "$1" in
    discover)
        discover_ports
        ;;
    check)
        check_port $2
        ;;
    *)
        echo "Usage: $0 {discover|check port}"
        exit 1
        ;;
esac

exit 0

修改脚本执行权限

chmod +x /etc/zabbix/port_alert.sh

创建要监控的端口列表

root@web-server:~# cat /etc/zabbix/port.conf
# 要监控的端口列表
80
443
3306
8080

新建zabbix_agentd.conf 配置文件

cat >/etc/zabbix/zabbix_agentd.d/zabbix_agentd.conf<<'EOF'
UserParameter=custom.port.discovery,/etc/zabbix/port_alert.sh discover
UserParameter=custom.port.check[*],/etc/zabbix/port_alert.sh check $1
EOF

重启zabbix-agent服务

systemctl restart zabbix-agent.service

Zabbix Web界面配置,选择数据采集->主机->web-server->自动发现->创建自动发现。
在这里插入图片描述

创建自动发现规则

  • Name: Port Discovery
  • Type: Zabbix agent
  • Key: custom.port.discovery
  • Update interval: 1h (或根据需要调整)
    在这里插入图片描述

创建监控项原型

  • Name: Port {#PORT} status
  • Type: Zabbix agent
  • Key: custom.port.check[{#PORT}]
  • Type of information: Numeric (unsigned)
  • Update interval: 1m (或根据需要调整)
    在这里插入图片描述

创建触发器类型

  • Name: Port {#PORT} is down on {HOST.NAME}
  • Expression: last(/web-server/custom.port.check[{#PORT}])=0
  • Severity: High (或根据需要调整)

在这里插入图片描述

查看最新数据
在这里插入图片描述

创建告警动作
在这里插入图片描述
查看告警信息
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/768396.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 安装Nginx服务

转自&#xff1a;https://blog.csdn.net/yegu001/article/details/135411588 Package: nginx Architecture: amd64 Version: 1.18.0-6ubuntu14.4 Priority: optional Section: web Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discusslists.ubuntu.com>…

可充电纽扣电池ML2032充电电路设计

如图&#xff0c;可充电纽扣电池ML2032充电电路设计。 图中二极管是为了防止电流倒灌&#xff0c; 电阻分压出3.66v&#xff0c;再减掉二极管压降&#xff08;约0.4v)得3.26V&#xff0c;加在电池正负极充电。 随着电池电量的积累&#xff0c;充电电流逐步减小&#xff0c;极限…

魔行观察-AI数据分析-蜜雪冰城

摘要 本报告旨在评估蜜雪冰城品牌作为投资对象的潜力和价值&#xff0c;基于其经营模式、门店分布、人均消费、覆盖省份等关键指标进行分析。 数据数据源&#xff1a;魔行观察&#xff1a;http://www.wmomo.com/#/brand/brandDetails?code10013603 品牌概览 蜜雪冰城是中国…

[Information Sciences 2023]用于假新闻检测的相似性感知多模态提示学习

推荐的一个视频&#xff1a;p-tuning P-tunning直接使用连续空间搜索 做法就是直接将在自然语言中存在的词直接替换成可以直接训练的输入向量。本身的Pretrained LLMs 可以Fine-Tuning也可以不做。 这篇论文也解释了为什么很少在其他领域结合知识图谱的原因&#xff1a;就是因…

iOS 视图实现渐变色背景

需求 目的是要实现视图的自定义的渐变背景色&#xff0c;实现一个能够随时使用的工具。 实现讨论 在 iOS 中&#xff0c;如果设置视图单一的背景色&#xff0c;是很简单的。可是&#xff0c;如果要设置渐变的背景色&#xff0c;该怎么实现呢&#xff1f;其实也没有很是麻烦&…

普元EOS学习笔记-低开实现图书的增删改查

前言 在前一篇《普元EOS学习笔记-创建精简应用》中&#xff0c;我已经创建了EOS精简应用。 我之前说过&#xff0c;EOS精简应用就是自己创建的EOS精简版&#xff0c;该项目中&#xff0c;开发者可以进行低代码开发&#xff0c;也可以进行高代码开发。 本文我就记录一下自己在…

Sping源码(九)—— Bean的初始化(非懒加载)—mergeBeanDefinitionPostProcessor

序言 前几篇文章详细介绍了Spring中实例化Bean的各种方式&#xff0c;其中包括采用FactoryBean的方式创建对象、使用反射创建对象、自定义BeanFactoryPostProcessor以及构造器方式创建对象。 创建对象 这里再来简单回顾一下对象的创建&#xff0c;不知道大家有没有这样一个疑…

MySQL之备份与恢复(二)

备份与恢复 定义恢复需求 如果一切正常&#xff0c;那么永远也不需要考虑恢复。但是&#xff0c;一旦需要恢复&#xff0c;只有世界上最好的备份系统是没用的&#xff0c;还需要一个强大的恢复系统。 不幸的是&#xff0c;让备份系统平滑工作比构造良好的恢复过程和工具更容易…

优先级队列(堆)学的好,头发掉的少(Java版)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

使用 Ollama 时遇到的问题

题意&#xff1a; ImportError: cannot import name Ollama from llama_index.llms (unknown location) - installing dependencies does not solve the problem Python 无法从 llama_index.llms 模块中导入名为 Ollama 的类或函数 问题背景&#xff1a; I want to learn LL…

七大排序算法的深入浅出(java篇)

&#x1f341; 个人主页&#xff1a;爱编程的Tom&#x1f4ab; 本篇博文收录专栏&#xff1a;Java专栏&#x1f449; 目前其它专栏&#xff1a;c系列小游戏 c语言系列--万物的开始_ 等等 &#x1f389; 欢迎 &#x1f44d;点赞✍评论⭐收藏&#x1f496;三连支…

springboot 整合 mybatis-plus

一.前言 1. mybatis-plus是什么 mybatis-plus是一个对mybati框架的拓展框架&#xff0c;它在mybatis框架基础上做了许多的增强&#xff0c;帮助我们快速的进行代码开发。目前企业开发中&#xff0c;使用mybati的项目基本会选择使用mybatis-plus来提升开发效率。 2.官网地址&…

Study--Oracle-06-Oracler网络管理

一、ORACLE的监听管理 1、ORACLE网络监听配置文件 cd /u01/app/oracle/product/12.2.0/db_1/network/admin 2、在Oracle数据库中&#xff0c;监听器&#xff08;Listener&#xff09;是一个独立的进程&#xff0c;它监听数据库服务器上的特定端口上的网络连接请求&#xff0c…

四十篇:内存巨擘对决:Redis与Memcached的深度剖析与多维对比

内存巨擘对决&#xff1a;Redis与Memcached的深度剖析与多维对比 1. 引言 在现代的系统架构中&#xff0c;内存数据库已经成为了信息处理的核心技术之一。这类数据库系统的高效性主要来源于其对数据的即时访问能力&#xff0c;这是因为数据直接存储在RAM中&#xff0c;而非传统…

p2p、分布式,区块链笔记: 通过libp2p的Kademlia网络协议实现kv-store

Kademlia 网络协议 Kademlia 是一种分布式哈希表协议和算法&#xff0c;用于构建去中心化的对等网络&#xff0c;核心思想是通过分布式的网络结构来实现高效的数据查找和存储。在这个学习项目里&#xff0c;Kademlia 作为 libp2p 中的 NetworkBehaviour的组成。 以下这些函数或…

AI 会淘汰程序员吗?

前言 前些日子看过一篇文章&#xff0c;说国外一位拥有 19 年编码经验、会 100% 手写代码的程序员被企业解雇了&#xff0c;因为他的竞争对手&#xff0c;一位仅有 4 年经验、却善于使用 Copilot、GPT-4 的后辈&#xff0c;生产力比他更高&#xff0c;成本比他更低&#xff0c…

基于java+springboot+vue实现的家政服务平台(文末源码+Lw)299

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本家政服务平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…

2. Python+Playwright playwright的API

Playwright支持同步和异步两种API&#xff0c;使用异步API需要导入asyncio库&#xff0c;它是一个可以用来实现Python协程的库&#xff0c;更详细介绍可参考Python协程 。我们可以根据自己的偏好选择适合的模式。 同步与异步模式原理 同步操作方式&#xff1a;在代码执行时&am…

SpringBoot 整合 Minio 实现文件切片极速上传技术

Centos7安装Minio 创建目标文件夹 mkdir minio使用docker查看目标镜像状况 大家需要注意&#xff0c;此处我们首先需要安装docker&#xff0c;对于相关安装教程&#xff0c;大家可以查看我之前的文章&#xff0c;按部就班就可以&#xff0c;此处不再赘述&#xff01;&#x…

学习和发展人工智能:新兴趋势和成功秘诀

人工智能(AI)继续吸引组织&#xff0c;因为它似乎无穷无尽地提高生产力和业务成果。在本博客中&#xff0c;了解学习和发展(L&D)部门如何利用人工智能改进流程&#xff0c;简化工作流程&#xff1f; 学习与发展(L&D)部门领导开始探索如何提高和支持人工智能能力的劳动…