1. 首页 > 服务器运维

服务器宕机如何第一时间发现?Beszel+cpolar搭建远程告警系统

前言

服务器运维这件事,最让人郁闷的不是它挂了,而是挂了之后不知道,等用户先投诉过来才发现。这种情况出现几次之后就会开始认真考虑监控这件事,但问题是商业监控方案要么配置复杂、要么价格劝退,搭一套 Prometheus 加 Grafana 的组合对于只是想“看住几台服务器”这个简单需求的人来说太重了。且不说Prometheus需要单独部署服务发现、告警管理器等组件,光是编写那些复杂的YAML配置文件就已经让不少初学者望而却步了。

Beszel 就是解决这个问题的。它是一个轻量级的服务器监控平台, Docker 一条命令跑起来,CPU、内存、磁盘、网络、GPU 温度这些指标全部能看到,Docker 容器级别的监控也能精确到每个容器。配置告警阈值之后,CPU 超了、内存爆了、磁盘满了,Beszel 会通过邮件或者 Webhook 直接通知你,而不是等用户先发现问题再回头查。cpolar 穿透配好之后,出门在外也能打开监控面板查看状态,手机上收到告警通知也能第一时间响应。这套方案搭下来,运维的心理负担降了很多——服务器出问题你永远比用户先知道。

💡 运维黄金法则:好的监控系统不是告诉你“出事了”,而是在出事之前就提醒你“快要出事了”。预防性维护远比故障抢救来得从容。

1 Beszel(轻量级服务器监控的利器)

1.1 Beszel简介

Beszel是一款专为现代服务器环境设计的轻量级监控平台,尤其擅长对Docker容器进行实时监控。它以其简洁的界面、低资源消耗和强大的告警功能而闻名。与许多重量级的监控解决方案不同,Beszel无需复杂的配置,开箱即用,能够快速为您提供服务器的各项关键指标,包括CPU、内存、磁盘、网络使用情况,以及Docker容器的详细统计数据。其核心优势在于能够提供历史数据分析和可配置的告警,确保您在问题发生的第一时间收到通知,从而迅速采取行动。

实际上,Beszel的名字来源于匈牙利的一个城镇,象征着“连接”与“汇聚”的意义——恰如其分地表达了它将分散的服务器信息汇集于一处的核心价值。该项目的GitHub Star数增长迅速,已成为轻量级监控领域备受关注的开源解决方案。

1.1 Beszel简介

1.2 Beszel的核心功能

Beszel虽然轻量,但功能却十分强大,能够满足绝大多数服务器监控的需求。以下是其主要功能的详细介绍:

  • 轻量级与高效能:Beszel的设计理念是最小化资源占用。它采用高效的数据采集和处理机制,确保在提供全面监控的同时,不会对您的服务器性能造成显著影响。这使得它非常适合资源有限的VPS或嵌入式设备。在实际测试中,Beszel的主控端(Hub)内存占用通常在100MB以内,而客户端(Agent)更是低至30MB左右,相比Prometheus动辄几百MB的资源消耗,优势非常明显。

  • Docker容器监控:对于广泛使用Docker进行应用部署的用户而言,Beszel提供了无与伦比的便利。它能够深入到Docker容器内部,实时跟踪每个容器的CPU使用率、内存消耗、网络I/O等关键指标。这对于微服务架构和容器化部署至关重要,帮助您精确掌握每个服务的运行状况。无论您运行着多少个容器,Beszel都能以清晰的列表和图表呈现每个容器的资源占用排名,快速定位“吵邻”的容器。

  • 全面的系统指标监控:除了Docker容器,Beszel还能全面监控宿主机的各项指标,包括:

    • CPU使用率:实时显示CPU的负载情况,帮助您识别性能瓶颈,支持多核心分别展示。
    • 内存使用率:监控物理内存和交换空间的使用情况,防止内存溢出导致的OOM(Out of Memory)问题。
    • 磁盘使用率与I/O:跟踪磁盘空间占用和读写速度,预警存储问题,支持分区级别的细粒度查看。
    • 网络使用率:监控网络流量进出,识别网络带宽瓶颈或异常流量,帮助排查DDoS攻击或流量突增。
    • 负载平均值:反映系统在一段时间内的平均负载,评估系统繁忙程度,与CPU核心数结合判断是否过载。
    • 温度监控:通过传感器数据监控CPU、GPU等硬件温度,防止过热降频或硬件损坏。
    • GPU使用率/温度/功耗:对于需要GPU资源的应用(如AI训练、图形渲染),Beszel提供详细的GPU监控数据,帮助您优化资源分配。该功能对NVIDIA GPU的支持尤为完善,通过NVML库直接读取GPU状态。
  • 灵活的告警系统:Beszel的告警功能是其亮点之一。您可以根据CPU、内存、磁盘、带宽、温度、负载平均值等指标设置阈值。一旦某个指标超出预设范围,Beszel将立即通过多种方式(如邮件、Webhook等)发送告警通知,确保您能及时响应潜在问题。这对于预防性维护和快速故障恢复至关重要。告警规则支持针对单台服务器单独配置,也支持批量应用,灵活度很高。

下表对比了Beszel与其他主流监控方案的核心差异,帮助您更直观地了解其定位:

对比维度BeszelPrometheus + GrafanaZabbix商业监控云服务
部署复杂度⭐ 极简(一条Docker命令)⭐⭐⭐⭐ 复杂(多组件协同)⭐⭐⭐ 中等⭐⭐ 简单(但需注册账号)
资源占用⭐ 极低(Hub约100MB)⭐⭐⭐ 较高(数GB内存)⭐⭐ 中等⭐ 无本地资源占用
学习成本⭐ 低(界面直观)⭐⭐⭐⭐ 高(需学习PromQL)⭐⭐⭐ 中高⭐ 低
价格⭐ 免费开源⭐ 免费开源⭐ 免费开源⭐⭐ 按节点收费
Docker监控⭐ 原生深度支持⭐⭐ 需额外配置⭐ 支持有限⭐⭐ 通常支持
历史数据存储本地磁盘支持远程存储(如Thanos)数据库云端存储
告警配置Web界面点选需编写告警规则文件Web界面配置Web界面配置
适用场景个人/小团队,<50台服务器中大规模,复杂容器集群企业级,网络设备监控不愿自建运维的场景

1.3 Beszel安装

本章将详细指导您如何在服务器上安装和配置Beszel监控平台。Beszel的安装方式灵活多样,主要推荐通过Docker进行部署,因为它最为便捷且易于管理。我们将以Docker部署为例,为您提供一步步的指引。

1.3.1 环境准备

本教程将在Ubuntu 22.04 虚拟机上进行操作演示。在开始安装Beszel之前,请确保您的虚拟机环境满足以下条件:

  • 操作系统:Ubuntu 22.04 LTS(本教程演示环境)- 虚拟机配置建议:至少2GB内存、2核CPU、20GB磁盘空间
  • 确保虚拟机网络连接正常,能够访问互联网
  • Docker环境:需要安装Docker。Docker安装步骤可以参考cpolar官网教程:Ubuntu使用Docker部署Nginx并结合内网穿透实现公网远程访问,也可以使用官方一键安装脚本 curl -fsSL https://get.docker.com | bash
  • 端口配置
    • Beszel默认使用端口8090(Web界面)
    • 确保虚拟机防火墙允许该端口访问
# 检查端口是否被占用
sudo ss -tlnp | grep :8090
# 如果启用了UFW防火墙,开放端口
sudo ufw allow 8090
# 查看是否开放端口
sudo ufw status
  • 系统要求
    • 内存:至少2GB(推荐4GB以获得更好的监控体验)
    • CPU:至少2核心
    • 磁盘空间:至少10GB可用空间用于存储监控数据(数据保留周期默认30天,可根据需要调整)

1.3.1 环境准备

1.3.2 使用docker安装beszel

Beszel官网:https://beszel.dev/zh/

在Ubuntu上安装Beszel仅需一条命令即可安装,命令如下:

# mkdir -p ./beszel_data :创建本地目录用于数据持久化,如果目录已存在不会报错
# docker run -d :以后台守护态启动容器
# --name beszel :指定容器名为 beszel,方便管理
# --restart=unless-stopped :容器自动重启,除非手动停止
# -v ./beszel_data:/beszel_data :挂载当前目录的 beszel_data 到容器内,实现数据持久化
# -p 8090:8090 :映射主机端口8090到容器端口8090,方便外部访问
# henrygd/beszel :使用的镜像名称
sudo mkdir -p ./beszel_data && sudo docker run -d --name beszel --restart=unless-stopped -v ./beszel_data:/beszel_data -p 8090:8090 henrygd/beszel

执行完命令后,可以通过 docker ps -a 查看容器运行状态。如果容器状态为 Up,说明启动成功。若状态为 Exited,可以执行 docker logs beszel 查看错误日志进行排查。常见问题通常是端口被占用或数据目录权限不足。

1.3.2 使用docker安装beszel

1.3.3 浏览器访问测试

如果您不知道本机的IP,可以使用如下命令查看:

ip addr

或者使用更简洁的 hostname -I 直接显示IP地址。

1.3.3 浏览器访问测试

获取到虚拟机的IP后,接下来咱们在浏览器中访问测试一下:

# 您的虚拟机IP+8090 端口
http://192.168.184.132:8090

1.3.3 浏览器访问测试_图2

可以看到,正常访问成功啦,如果您无法访问,可以查看一下前面步骤是否开放了8090端口的防火墙哦!若使用云服务器(如阿里云、腾讯云),还需要在安全组规则中放行8090端口,这一点经常被忽略。

1.3.4 beszel登录

首次访问会需要让您设置一个管理员账号进行创建(点击创建后会自动进行登录):

1.3.4 beszel登录

⚠️ 安全提示:Beszel的账号密码以加密形式存储在本地数据目录中。请务必设置一个强密码(建议包含大小写字母、数字和特殊字符),避免使用 admin/123456 这类弱口令。如果服务暴露在公网,建议配合cpolar的访问控制功能或使用HTTPS加密传输。

点击创建账户即可成功进入首页啦!

1.3.4 beszel登录_图2

1.4 Beszel配置

1.4.1 Docker方式添加客户端

点击首页的右上角的+ 添加客户端按钮:

1.4.1 Docker方式添加客户端

接下来添加一台客户端(虚拟机/服务器),如下配置:
- 名称:为这台服务器起一个易识别的名字,如 web-server-01
- 主机名/IP:填写内网IP地址,如果Agent和Hub在同一台机器上,可以使用 host.docker.internal(Docker for Mac/Windows)或 172.17.0.1(Linux Docker网桥地址)
- 端口:填写Agent监听的端口,默认为45876

1.4.1 Docker方式添加客户端_图2

可以先暂时不用点击添加客户端按钮,将复制下来的docker run 命令到您要添加的服务器上执行:

# 参考如下:对应的配置按照复制下来的命令即可
docker run -d --name beszel-agent --network host --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock:ro -v ./beszel_agent_data:/var/lib/beszel-agent -e KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIC2Ug9SXCey8SsYtf98m9gA1vBzF27XXXXXXXXXXXXX" -e LISTEN=45876 -e TOKEN="" -e HUB_URL="http://192.168.184.132:8090" henrygd/beszel-agent

这里需要特别注意,命令中的 --network host 表示Agent使用宿主机网络,这样可以直接访问宿主机的网络指标。-v /var/run/docker.sock:/var/run/docker.sock:ro 是让Agent能够与Docker守护进程通信,获取容器运行数据。ro 表示只读挂载,提升了安全性。

1.4.1 Docker方式添加客户端_图3

然后需要开放一下45876端口,45876beszel-agent 服务监听的端口号 ,这个端口是用来让 主控端(Hub)连接到 agent 的。

以CentOS7开放防火墙举例:

# 永久开放 TCP 端口 45876
sudo firewall-cmd --permanent --add-port=45876/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload
# 可选:确认端口是否开放成功
sudo firewall-cmd --list-ports

而对于Ubuntu系统,使用 ufw allow 45876/tcp 即可。如果使用的是云服务器,同样别忘了在安全组规则中放行该端口。

1.4.1 Docker方式添加客户端_图4

接着点击添加客户端按钮,可以看到列表多了一条数据如下:

1.4.1 Docker方式添加客户端_图5

这样,一台服务器的信息就成功更新到Beszel上啦,Docker的方式是不是很简单!

1.4.2 二进制方式添加客户端

在某些场景下,您可能无法在目标机器上安装Docker(比如OpenVZ架构的VPS或某些精简版系统),此时可以选择二进制方式安装Agent。二进制文件是静态编译的,不依赖任何外部库,下载即用,兼容性非常好。

1.4.2.1 二进制Linux方式添加客户端

点击添加客户端按钮,tab页切换为二进制方式,如下配置:

1.4.2.1 二进制Linux方式添加客户端

接着把复制的Linux命令来到Ubuntu22.04这台服务器上执行:

# 示例命令,实际以复制的为准
wget -O beszel-agent https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_linux_amd64
chmod +x beszel-agent
./beszel-agent --key "ssh-ed25519 ..." --port 45876 --hub "http://192.168.184.132:8090"

1.4.2.1 二进制Linux方式添加客户端_图2

接下来需要进行开放防火墙(前面开放的是另一台虚拟机CentOS,当前是Ubuntu):

1.4.2.1 二进制Linux方式添加客户端_图3

然后点击添加客户端按钮,可以看到列表中又多了一条记录:

1.4.2.1 二进制Linux方式添加客户端_图4

状态为绿色,成功添加上啦!如果状态显示为红色,可以检查一下Agent的日志输出,通常是网络不通或KEY不匹配。

1.4.2.2 二进制 Windows 方式添加客户端

Beszel同样支持Windows服务器监控,这对于混合架构的团队来说非常实用。只需以管理员身份运行下载的exe文件即可。

点击添加客户端按钮,然后如下操作:

1.4.2.2 二进制 Windows 方式添加客户端

接下来打开PowerShell(管理员模式),打开方式:按Windows键+X键,然后选择终端(管理员)

1.4.2.2 二进制 Windows 方式添加客户端_图2

然后执行复制下来的Windows 命令 :

1.4.2.2 二进制 Windows 方式添加客户端_图3

如果出现同如上错误,请依次按照下面步骤进行复制Windows命令:

1.4.2.2 二进制 Windows 方式添加客户端_图4

然后执行刚才带token的Windows命令

1.4.2.2 二进制 Windows 方式添加客户端_图5

回到浏览器查看,可以看到,自动给我们添加了这台Windows 11服务器:

1.4.2.2 二进制 Windows 方式添加客户端_图6

至此,无论您的服务器运行的是什么操作系统,Beszel都能完美覆盖,实现全平台的统一监控。

1.4.3 查看服务器详细信息

选择一台服务器,点击进入:

1.4.3 查看服务器详细信息

可以看到详细的图表信息:

1.4.3 查看服务器详细信息_图2

在详情页面中,您可以使用鼠标滚轮缩放图表的时间范围,双击图表可以重置视图。页面顶部还支持按时间快速筛选(最近1小时、6小时、24小时、7天等),方便回溯历史数据。下方的容器列表展示了每个容器的实时资源排名,点击容器名称可以查看该容器的时间序列图表。

2 cpolar(内网穿透的桥梁)

2.1 cpolar简介

cpolar是一款功能强大的内网穿透工具,它能够将您本地内网的服务器、网站或服务,安全、稳定地暴露到公网上,而无需公网IP地址,也无需复杂的路由器端口映射配置。对于开发者而言,cpolar是进行微信公众号、小程序、支付宝网关等云端服务开发调试的利器;对于个人用户,它能帮助您远程访问家中的电脑、搭建个人网站或进行文件共享。cpolar通过建立一条安全的隧道,将公网请求转发到您的本地服务,极大地简化了内网服务的对外发布过程。

值得一提的是,cpolar作为国内知名的内网穿透服务商,在稳定性、访问速度和合规性方面都针对国内网络环境做了专门优化。相比国外的同类工具如ngrok,cpolar在国内的延迟更低,且支持自定义域名和备案接入。

2.1 cpolar简介

2.2 cpolar的工作原理

cpolar的工作原理可以概括为“隧道代理”。当您在本地运行cpolar客户端并配置好隧道后,cpolar客户端会与cpolar的云端服务器建立一条持久的加密隧道。当公网用户访问cpolar为您分配的公网地址时,请求会首先到达cpolar的云端服务器,然后通过这条加密隧道转发到您本地的cpolar客户端,最后由cpolar客户端将请求转发到您本地指定的服务端口。本地服务处理完请求后,响应数据会沿着原路返回给公网用户。

从技术实现角度来看,cpolar使用了多路复用技术,能够在同一条TCP连接上承载多个请求,大大提高了连接的利用效率。同时,cpolar支持TLS加密传输,确保数据在公网传输过程中的安全性和私密性。

简而言之,cpolar在公网和您的内网服务之间搭建了一座“桥梁”,使得内网服务能够被公网访问,而无需改变您现有的网络环境。

2.3 cpolar安装

以Linux(Ubuntu)为例,首先,我们需要先安装curl:

sudo apt-get install curl

然后执行如下脚本(一键自动安装脚本):

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

2.3 cpolar安装

可以看到,已经提示cpolar已安装,让我们测试一下cpolar版本确认是否安装:

cpolar version

2.3 cpolar安装_图2

2.4 配置cpolar系统服务

向系统添加及启动cpolar服务

# 添加cpolar服务
sudo systemctl enable cpolar
# 启动cpolar服务
sudo systemctl start cpolar

2.4 配置cpolar系统服务

查看服务状态

sudo systemctl status cpolar

2.4 配置cpolar系统服务_图2

如果服务状态为 active (running),说明cpolar已正常运行。如果出现问题,可以通过 journalctl -u cpolar -f 查看实时日志进行排查。

2.5 注册及登录cpolar Web管理界面

2.5.1 注册cpolar

访问cpolar官网,点击免费注册按钮,进行账号注册

2.5.1 注册cpolar

注册页面:

2.5.1 注册cpolar_图2

注册完成后,您的邮箱会收到一封激活邮件,点击激活链接后账号即可正常使用。免费版cpolar支持创建4条隧道,对于个人和小团队来说基本够用。

2.5.2 放行9200端口(web页面端口)

在访问web页面前,需要先检查系统防火墙是否放行9200端口,避免访问不了

sudo ufw status

2.5.2 放行9200端口(web页面端口)

有两种方式可以实现访问,一种是放行该端口,另一种是直接关闭防火墙(不建议)

# 放行 9200 端口
sudo ufw allow 9200
# 查看状态验证是否已放行
sudo ufw status

2.5.2 放行9200端口(web页面端口)_图2

2.5.3 访问cpolar web ui 管理界面

在访问之前,不确定ip地址可以通过ifconfig命令查看服务器ip

ifconfig

2.5.3 访问cpolar web ui 管理界面

确定好ip地址后,在浏览器中访问:

http://<此处应为您的IP>:9200
# 如:http://192.168.184.132:9200

2.5.3 访问cpolar web ui 管理界面_图2

将前面步骤注册好的cpolar账号登录即可进入后台页面

2.5.3 访问cpolar web ui 管理界面_图3

登录后您会看到cpolar的管理仪表盘,这里可以创建和管理所有隧道,查看连接状态和流量统计。

2.6 配置Beszel隧道实现公网访问

2.6.1 配置 HTTP 隧道绑定到8090端口

点击左侧菜单栏的隧道管理,展开进入隧道列表页面,页面下默认会有 2 个隧道:
- ssh隧道,指向22端口,tcp协议
- website隧道,指向8080端口,http协议(http协议默认会生成2个公网地址,一个是http,另一个https,免去配置ssl证书的繁琐步骤)

2.6.1 配置 HTTP 隧道绑定到8090端口

接着点击创建隧道菜单,进入到创建页面,如下图配置:
- 隧道名称:填写 beszel-8090 以便识别
- 协议:选择 http(因为Beszel是Web服务)
- 本地地址:填写 localhost:8090127.0.0.1:8090
- 域名类型:免费用户选择随机域名,付费用户可选择二级子域名自定义域名

2.6.1 配置 HTTP 隧道绑定到8090端口_图2

创建完成后,点击左侧菜单的状态菜单,接着点击在线隧道列表菜单按钮,可以看到有2个Beszel的隧道,一个为http协议,另一个为https协议

2.6.1 配置 HTTP 隧道绑定到8090端口_图3

注意:每个用户创建的隧道显示的公网地址都不一样!

2.6.2 访问公网地址验证 Beszel是否可访问

在浏览器中访问创建Beszel隧道生成的公网地址(http和https皆可)

这里以https为例:

2.6.2 访问公网地址验证 Beszel是否可访问

登录Beszel账号,成功进入Beszel首页!

2.6.2 访问公网地址验证 Beszel是否可访问_图2

至此,您的Beszel监控面板已经可以通过公网任意地点访问了。无论是在家、在办公室还是在外出差的路上,只要能上网,就能随时查看服务器的运行状态。

2.7 设置固定二级子域名(Pro用户)

2.7.1 保留二级子域名

使用cpolar为其配置二级子域名,该域名为固定格式域名,不会随机变化,方便后续远程访问Beszel自动化构建平台。

进入官网的预留页面:

2.7.1 保留二级子域名

列表中显示了一条已保留的二级子域名记录:
- 地区:显示为China Top(国内加速节点)
- 二级域名:显示为beszel

注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主

保留二级子域名后,该域名将一直属于您的账号,不会因为隧道重启而改变。这对于需要长期稳定访问的场景(如嵌入到其他系统、配置告警回调地址等)尤为重要。

2.7.2 修改beszel隧道为子域名方式

进入侧边菜单栏的隧道管理>隧道列表,可以看到前面配置名为beszel-8090的隧道

2.7.2 修改beszel隧道为子域名方式

点击编辑按钮进入编辑页面,修改域名类型为二级子域名,然后填写前面配置好的子域名,点击更新按钮:

2.7.2 修改beszel隧道为子域名方式_图2

2.7.3 访问子域名测试

来到状态菜单下的在线隧道列表可以看到隧道名称为beszel-8090的公网地址已经变更为二级子域名+固定域名主体及后缀的形式了:

2.7.3 访问子域名测试

这里以https协议做访问测试:

2.7.3 访问子域名测试_图2

访问成功!现在您可以使用类似 https://beszel.cpolar.cn 这样的固定地址来访问您的Beszel监控面板了,可以将这个地址保存在浏览器的书签中,或者分享给团队成员。

3 Beszel配置Webhook与SMTP服务

3.1 Webhook、SMTP与Shoutrrr

Webhook 是一种用户定义的HTTP回调机制,当特定事件发生时,系统会向指定的URL发送HTTP POST请求。Webhook常用于实时通知和数据传输,能够实现系统之间的即时通信。通过Webhook,用户可以将事件推送到外部服务,例如聊天应用、邮件服务等,从而实现自动化的通知和响应。相比于轮询方式,Webhook的实时性更好,且减少了不必要的网络请求开销。

SMTP(简单邮件传输协议)是一种用于发送电子邮件的标准协议。它定义了邮件服务器之间如何传输邮件的规则。SMTP协议通常用于发送邮件,而IMAP或POP3协议则用于接收邮件。通过SMTP,用户可以将邮件从发件人发送到收件人,确保邮件的可靠传输。常见的SMTP服务商包括网易、QQ邮箱、Gmail、阿里企业邮箱等,均支持标准SMTP协议接入。

Shoutrrr 是一个通用的通知发送库,支持多种通知渠道,如Slack、Discord、邮件、Telegram、Pushover等,用户可以根据需求灵活配置通知方式。通过Shoutrrr,Beszel能够实现高效的事件通知和报警功能,帮助用户及时响应系统状态变化。Shoutrrr的URL格式统一且易于记忆,大大降低了配置门槛。

下表列出Shoutrrr支持的部分通知渠道及URL示例:

渠道URL格式示例适用场景
SMTP邮件smtp://user:pass@smtp.163.com:465/?from=alert@xx.com&to=admin@xx.com邮件告警
Slackslack://token-a/token-b/token-c团队即时通讯
Discorddiscord://webhook-id/webhook-token游戏/社区社群通知
Telegramtelegram://bot-token@telegram/?chats=chat-id即时通讯
Pushoverpushover://token@user手机推送通知

3.2 配置邮箱SMTP服务

本教程将以网易邮箱作为演示示例,详细介绍如何配置SMTP服务以支持Beszel的邮件通知功能。网易邮箱作为国内主流邮箱服务商,具有配置简单、稳定性高的特点,非常适合用于内网监控系统的邮件告警。

首先需要登录网易邮箱获取SMTP配置信息:

登录网易账号进行设置SMTP,如图:

3.2 配置邮箱SMTP服务

接下来点击开启POP3/SMTP服务,请一定记住授权码,该授权码只会显示一次,如果忘记复制,您可以选择重新生成一个即可:

3.2 配置邮箱SMTP服务_图2

点击确认后可以看到授权密码管理多出了一条信息:

3.2 配置邮箱SMTP服务_图3

将授权码保管好,待会需要用到!

📌 其他邮箱SMTP配置参考
- QQ邮箱:SMTP服务器 smtp.qq.com,端口465(SSL),需用QQ邮箱独立密码
- Gmail:SMTP服务器 smtp.gmail.com,端口587(TLS),需开启“低安全性应用访问”或使用应用专用密码
- 阿里企业邮箱:SMTP服务器 smtp.aliyun.com,端口465(SSL)

3.3 配置Webhook地址

进入设置页面的通知菜单,配置Webhook地址:

3.3 配置Webhook地址

使用Shoutrrr 来通过 SMTP 发送电子邮件通知。Email 服务的 URL 格式如下:

# username 是 SMTP 登录用户名
# password 是对应的密码或授权码
# host 是 SMTP 服务器主机名
# port 是 SMTP 服务器端口(通常为 25、465、587 等)
# 查询参数 from 表示发件人地址
# 查询参数 to 表示收件人地址列表
smtp://username:password@host:port/?from=fromAddress&to=recipient1[,recipient2,...]

参考如下图:

3.3 配置Webhook地址_图2

配置完成后记得点击保存设置按钮,进行持久化!

接着,打开收件人的邮箱进行查看,可以看到,成功收到邮件:

3.3 配置Webhook地址_图3

如果收件箱中没有看到邮件,可以检查一下垃圾邮件文件夹。如果仍然没有,建议检查SMTP配置是否正确,特别是授权码是否包含了特殊字符(某些字符可能需要URL编码)。

3.4 测试Beszel的资源告警

点击想要进行设置警报的服务器右边的铃铛按钮:

3.4 测试Beszel的资源告警

点击后会弹出选择需要设置告警的服务器和需要告警的字段:

3.4 测试Beszel的资源告警_图2

网页端的告警提示如下:

3.4 测试Beszel的资源告警_图3

接着,咱们查看邮箱,看看是否也进行了邮件告警通知:

3.4 测试Beszel的资源告警_图4

告警触发后,Beszel还会在Web界面的顶部显示通知横幅,并在服务器的状态图标上标记警示符号。历史告警记录可以在“告警历史”菜单中查看,方便您回顾和分析过去的异常事件。

4:钉钉与企业微信 Webhook 集成前瞻

随着企业通信需求的多样化,钉钉和企业微信作为国内主流的企业级即时通讯工具,其Webhook接口的集成需求日益增长。当前,主流的通知工具如Shoutrrr在处理复杂嵌套JSON格式的Webhook请求时存在一定限制,尤其在钉钉和企业微信的支持上尚未完全成熟。

本节将简要介绍现有的技术现状,分享开源项目Beszel中的相关讨论,并展望钉钉与企业微信Webhook集成的可能发展方向。同时,附上各关键项目的官方网站和源码地址,便于进一步学习和实践。

4.1 现状与挑战

目前,Shoutrrr 作为一个流行的多渠道通知工具,虽然支持发送Webhook通知,但在处理钉钉和企业微信这种需要嵌套JSON格式的消息时,还存在一定的限制。具体来说,它不能直接支持这类复杂结构的JSON负载,因此通常需要借助一个中间转换服务来调整消息格式,才能满足钉钉和企业微信的要求。Beszel 这个开源监控平台的社区和维护者们也注意到了这个问题,并在讨论中提出了一些可能的解决方案和改进方向。钉钉和企业微信对Webhook请求还有一些特别的安全机制,比如必须在消息内容中包含特定的关键词才能成功接收通知,但是根据issue中的讨论,预计后期会进行集成!

4.1 现状与挑战

感兴趣的读者可以关注以下资源:
- Beszel GitHub仓库:https://github.com/henrygd/beszel
- Shoutrrr GitHub仓库:https://github.com/containrrr/shoutrrr
- 钉钉开放平台Webhook文档:https://open.dingtalk.com/document/orgapp/custom-bot
- 企业微信机器人Webhook文档:https://work.weixin.qq.com/help/person/20211223

如果您急需使用钉钉/企业微信通知,可以考虑以下临时方案:
1. 使用 ZapierIFTTT 作为中间转发服务,将Webhook请求转换为钉钉/企业微信支持的格式
2. 自行搭建一个简单的 Flask/Node.js 转发服务,接收Beszel的Webhook请求,重新封装后转发给钉钉/企业微信
3. 使用 飞书 的Webhook作为替代方案,其消息格式相对标准,Shoutrrr的支持也更完善

结语

用 Beszel 跑了一段时间下来,最大的感受是:监控这件事终于从“出了事才知道”变成了“出事的第一时间就知道”。

之前服务器挂了,往往是用户先反馈过来才知道,一线运维人员处于被动状态。Beszel 配好告警之后,磁盘满了、CPU 跑满、内存不足,这些问题触发阈值之后邮件直接发过来,晚上宕机也能在五分钟内收到通知,不用等用户打电话过来才知道要去处理。对于经常需要值夜班的运维人员来说,这种主动告警机制带来的心理安全感是无可替代的——你知道系统会在需要你介入的时候主动找你,而不是让你时刻盯着屏幕。

Beszel 本身的优点是轻量,配置门槛比 Prometheus 低很多,不需要写一堆 YAML 文件定义规则,Web 界面直接操作就能添加监控目标、设置告警阈值、查看历史图表。cpolar 穿透解决了远程查看的问题,出门在外通过公网地址随时能打开监控面板。对于只有几台到几十台服务器需要看住的小团队或者个人开发者来说,这套方案比搭一套完整监控体系要实用得多。

这套组合方案的核心价值在于:

  1. 成本低:全部使用开源或免费工具,无需额外采购商业监控软件
  2. 上手快:一条Docker命令部署Beszel,一条脚本安装cpolar,全程无需编写代码
  3. 覆盖全:从指标采集、数据存储、可视化展示到多渠道告警,形成完整闭环
  4. 可扩展:当业务规模增长时,可以平滑迁移到Prometheus等更重量级的方案

如果您还在为服务器的监控告警问题而烦恼,不妨花上半小时试一试这套方案,相信会给您的运维工作带来质的改变。

本文由主机测评网发布,不代表主机测评网立场,转载联系作者并注明出处:https:///yunwei/9585.html

联系我们

在线咨询:点击这里给我发消息

Q Q:2220678578