Skip to content

网络监控

Beszel 代理可以探测您定义的目标,并报告响应时间和丢包情况。可用于从每个系统的视角监控网关、DNS 解析器、内部服务或网站。

网络监控需要代理版本 0.20.0 或更高。所有配置都在 Hub 界面中完成,没有代理环境变量或命令行参数。

添加监控

从导航栏打开 Network Monitors,然后点击 Add Monitor。选择一个或多个系统,然后设置:

字段描述
目标要探测的主机名、IP 地址或 URL。
协议ICMPTCPHTTPDNS。请参阅协议
端口仅 TCP 使用。默认为 443
间隔两次探测之间的秒数,范围为 13600。默认为 30

选择多个系统会为每个系统创建一个监控。每个代理独立运行自己的探测,因此结果反映的是该系统所处的网络。

协议

协议测量内容超时计为丢包的情况
icmp回显请求的往返时间(IPv4 或 IPv6)。3 秒没有收到回复。
tcp与端口建立连接所需的时间。不包含 DNS 查询。3 秒连接失败或超时。
httpGET 请求返回响应所需的时间。10 秒请求失败,或状态码为 400 及以上。
dns解析目标主机名所需的时间。3 秒查询失败或未返回任何地址。
  • 同时解析出 IPv4 和 IPv6 地址的主机名,icmp 会使用 IPv4。
  • 对于 http,没有协议头的目标会自动添加 https://(如果端口为 80,则添加 http://)。会跟随重定向。

探测会在第一个间隔内的随机时间点开始,以避免所有监控同时触发。如果某次探测耗时超过间隔,错过的周期会被跳过,而不是排队等待。

ICMP 要求

ICMP 需要发送回显请求的权限。代理会按以下顺序尝试各种方式,并使用第一个可用的方式:

  1. 原始套接字(raw socket),需要 root 或 CAP_NET_RAW 权限。
  2. 非特权数据报套接字,前提是系统允许。
  3. 系统 ping 命令(如果已安装)。

tcphttpdns 监控不需要任何特殊权限。

Docker 代理

默认的代理镜像只包含代理二进制文件,因此无法使用 ping 回退方式。以 root 运行且使用 Docker 默认权限的容器可以使用原始套接字。如果您移除了容器权限,或者所用运行时默认不授予 NET_RAW,请将其加回:

yaml
beszel-agent:
  image: henrygd/beszel-agent
  cap_add:
    - NET_RAW

二进制代理

如果代理不是以 root 运行,请授予它该权限。对于 systemd 服务,请将以下内容添加到 [Service] 部分:

ini
AmbientCapabilities=CAP_NET_RAW
CapabilityBoundingSet=CAP_NET_RAW

如果您已经为 S.M.A.R.T. 数据设置了这些选项,请将所有权限写在同一行,而不是重复添加:

ini
AmbientCapabilities=CAP_SYS_RAWIO CAP_SYS_ADMIN CAP_NET_RAW
CapabilityBoundingSet=CAP_SYS_RAWIO CAP_SYS_ADMIN CAP_NET_RAW

编辑服务文件后,请重新加载 systemd 并重启代理。

TIP

将代理的 LOG_LEVEL 设置为 debug,可以查看选择了哪种 ICMP 方式。

编辑和暂停

  • 暂停监控会将其从代理中移除并停止探测。恢复后会重新开始探测。
  • 更改目标、协议或端口会创建一个新的监控,因此其历史记录会重新开始。仅更改间隔则会保留历史记录。
  • 代理每次连接时都会从 Hub 接收其监控。已连接系统上的新监控会立即开始运行。

警报

如果配置了至少一个通知渠道,当监控在过去一小时内的丢包率超过您在系统警报面板中设置的阈值(默认 5%)时,Network Monitor Loss 警报会触发通知。当丢包率回落到阈值或以下时,警报会被解除。

每个监控会被单独跟踪。该警报需要至少完成三次探测后才会触发;删除或暂停监控会关闭其警报,且不发送通知。

基于 MIT 许可发布