
运维观测指标监控告警后端可观测性【免费下载链接】beszelLightweight server monitoring with historical data, docker stats, and alerts.项目地址https://gitcode.com/GitHub_Trending/be/beszel点击查看免费下载导读本篇文章以 Beszel 开源仓库的 supplemental/CHANGELOG.md 为主线系统梳理该项目从 0.12 到 0.20 的完整版本演进脉络。Beszel 是一个轻量级服务器监控平台由 hub基于 PocketBase 的 Web 应用与 agent运行在被监控机器上的指标采集进程两部分组成提供历史数据、Docker 统计、S.M.A.R.T. 磁盘健康、ZFS/Btrfs 存储池、GPU/电池/风扇等硬件指标以及丰富的告警通知能力参见 readme.md。读完本文你将掌握各版本新增的核心监控模块与其底层实现含仓库源码佐证、全部环境变量的用途与配置要点、从 WebSocket 到 SSH 的连接与安全模型演进以及如何针对自身场景选择升级路径。一、版本演进总览版本主题定位代表性能力0.20.0网络监控、存储池、安全加固Agent 端网络监控、Docker 镜像更新标记、Btrfs 存储池、TRUSTED_PROXY_IPS、ZFS 工具链0.19.0证书校验破坏性变更、ZFS、系统服务告警HTTPS 证书强制校验、ZFS 池/数据集监控、容器健康与 systemd 失败告警、CPU iowait/steal 告警0.18.x硬件指标补全、GPU 采集体系多电池、Linux 风扇 RPM、Intel/AMD/NVML GPU 采集、FreeBSD 传感器、ARM 构建0.17.0告警静默、S.M.A.R.T. 专属页Quiet hours、独立 S.M.A.R.T. 页面、DISK_USAGE_CACHE、SKIP_SYSTEMD0.16.xsystemd 监控、GPU 告警基础 systemd 服务监控、GPU 使用率告警、SERVICE_PATTERNS0.15.xS.M.A.R.T. 起步、容器安全初始 S.M.A.R.T. 支持、SMART_DEVICES、CONTAINER_DETAILS0.14.x容器总览页、双因子/containers页面、MFA_OTP邮箱 OTP0.13.x分钟级图表、系统命名1 分钟/1 秒间隔图表、SYSTEM_NAME0.12.x网络图表、Intel GPU、反向代理认证每网卡/累计流量图表、TRUSTED_AUTH_HEADER、AUTO_LOGIN、电池监控下文按功能域而非单纯按版本号组织方便按主题检索每个功能均标注引入版本与源码依据。二、监控能力纵深从基础指标到存储池与硬件健康2.1 Agent 端网络监控0.20.0核心特性0.20.0 引入从 agent 直接进行的网络监控对应 issue #2266、#1911这是与早期仅在 hub 侧配置外部服务探测完全不同的架构选择agent 负责对被监控目标发起探活、测量响应时间与中断结果回传 hub 汇总展示。agent 侧由MonitorManager统一管理监控任务生命周期见 agent/network_monitor.goSyncMonitors接收 hub 下发的完整配置集对比现有任务后停止已删除的监控、重建配置变更的任务HandleSyncRequest处理全量替换SyncActionReplace与增量更新SyncActionUpsert两类同步请求每个监控任务由monitorTask承载配合resumeGuard在连接恢复时补偿错过的探测窗口。该模块在仓库中拥有完整的测试覆盖agent/network_monitor_test.go、agent/network_monitor_task_test.go 等并派生出了证书到期检查agent/network_monitor_cert.go、Ping 探测agent/network_monitor_ping.go等子能力。2.2 Docker 镜像更新检测0.20.0新增 Docker 镜像有更新可用标记#2211。实现位于 agent/docker_image_updates.go要点如下后台批量检查频率imageUpdateInterval time.Hour每小时一次且网络请求不计入容器指标的 wait group避免拖慢正常采集通过normalizedImageReference对镜像引用做规范化digest 固定引用的镜像永远不会上报更新reference.Digested类型直接返回空串只有基于 tag 的引用才参与检查使用imageUpdatesMutex保证同一时刻只有一个批次在跑避免并发风暴。2.3 Btrfs 存储池上报0.20.0Btrfs 文件系统以存储池形式接入监控#2315。实现集中在 agent/btrfs/btrfs.go直接读取/sys/fs/btrfs/uuid下的内核状态无需额外工具链Filesystem记录 UUID、MountID、容量Size、已分配字节Alloc、健康状态HealthONLINE/DEGRADED以及累计读写字节NRead/NWriteDevice记录每个成员设备devinfo/devid的在线状态与读写/损坏错误计数ReadErrs、WriteErrs、CorruptionErrs注意字段Raw多设备池上报的是物理字节而非可用容量因此不适合直接用于磁盘用量告警这一约束在结构体注释中已显式说明。2.4 ZFS 池与数据集监控0.19.00.20.0 增强0.19.0 首次引入 ZFS 池与数据集监控#22090.20.0 又为 Intel/NVIDIA agent 镜像补齐 ZFS 工具#2288、#2311。实现见 agent/zfs/zfs.go所有zfs/zpool命令通过exec.CommandContext执行并带有 10 秒超时且强制LC_ALLC保证输出可解析当 ZFS 工具或内核接口不可用时返回ErrNoZfsagent 据此优雅降级而不报错PoolStat记录池的容量Size/Alloc/Free、健康状态ONLINE/DEGRADED/FAULTED与显示名PoolKernelStat通过 ZFS 内核接口直接读取自导入以来累计的NRead/NWrite成本极低再由PoolIoStats换算为每秒吞吐0.20.0 修复了/dev/zfs不可用时的监控失败问题#2325此外 0.18.5 已加入 FreeBSD 上的 ZFS ARC 支持0.18.x 期间 ZFS 相关的告警、磁盘告警与密钥告警测试在 internal/alerts/alerts_zfs_test.go 等文件中均有覆盖。2.5 S.M.A.R.T. 磁盘健康监控0.15.x 起步持续迭代S.M.A.R.T. 支持是 0.15.0 的里程碑#962此后每个版本都在补强0.15.x引入初始支持smartctl被打包进所有非 base 的 agent 镜像新增beszel-agent:alpine新增SMART_DEVICES环境变量指定设备与类型支持scsi、sntasmedia、sntrealtek类型跳过虚拟磁盘S.M.A.R.T. 表支持排序。0.16.0新增EXCLUDE_SMART排除指定设备Windows 二进制实验性内嵌smartctl。0.18.x改进共享路径与显式设备类型提示下的设备探测#2102设备不再上报时清理过期记录#2178重置 SMART 采集间隔使配置修改即时生效修复 ATA 负值统计处理#1791。0.19.0强化 ATA 关键属性的告警#22750.20.0 则回退了针对某些属性的过度告警#2296、#2308、#2347并把 NVMe 数据单位优化为人类可读的 GB/TB#2303。当前支持范围还包括 eMMC 磨损/寿命经 sysfs与 Linux mdraid 阵列健康见 readme.md 的 Supported metrics 一节0.18.5 引入 mdraid 监控0.20.0 修复了健康 scrub 期间误报 RAID 告警的问题 #2109。2.6 GPU 采集体系0.12.x – 0.18.xGPU 采集经历了从单一来源到多采集器的演进0.12.10 引入 Intel GPU 初始支持#11500.12.12 修复intel_gpu_top报错时的高 CPU 占用并新增SKIP_GPU#12030.15.4 修复引擎实例 ID 出现在列中的解析问题#12300.12.11 将 Intel 采集改为解析-l纯文本而非 JSON#11500.15.3 新增INTEL_GPU_DEVICE指定设备#12850.18.0 引入实验性 NVML GPU 采集器#1522、#15870.18.2 修复 Intel/NVIDIA 采集器之间的 GPU ID 冲突#15220.18.3 加入实验性 sysfs AMD GPU 采集器#737、#15690.18.4 新增GPU_COLLECTOR环境变量手动指定采集器并把 GTT 内存纳入 AMD 指标、改进设备名查找#15690.18.4 同时加入nvtop集成#1508与 Apple Silicon 实验性 GPU 监控#17470.18.5 修复nvidia-smi不在 PATH 时 NVML 被禁用的回归#18490.18.8 增加 Intel Arc GPU 经nvtop的监控#22230.20.0 修复系统表中空闲 GPU 利用率显示#2312。2.7 电池、风扇与散热传感器电池0.12.4 加入电池电量监控0.12.5 因死锁问题将 FreeBSD 排除在电池监控外0.18.3 保证当前电量不超过满容量#16680.18.6 修复 Linux 电池百分比#19570.18.7 用内部实现替换distatus/battery依赖#18720.18.8 支持多电池监控0.20.0 修复电池名称含非法 UTF-8 导致的 payload 失败#2241。风扇0.18.8 引入 Linux 风扇 RPM 监控#20320.19.0 修复旧版 hwmon 设备上的风扇发现#2238。相关实现见 agent/fans.go 与 agent/fans_linux.go。温度0.18.8 增加 FreeBSD 的 CPU 与 ACPI 热区监控#22270.18.5 修复温度采集在某些系统上阻塞 agent 统计的问题#1839。三、告警与通知体系从静默时段到系统级健康3.1 告警类型全景Quiet hours0.17.0支持在指定时间段静默告警#2650.18.5 修复了每日静默时段的夏令时偏移问题#1827。前端配置入口位于 internal/site/src/components/routes/settings/quiet-hours.tsx。S.M.A.R.T. 失败告警0.17.0磁盘健康数据与驱动故障通知配套独立 S.M.A.R.T. 页面。GPU 使用率告警0.16.0。低电量告警0.18.0#1507电池电量低于阈值时通知测试见 internal/alerts/alerts_battery_test.go。systemd 服务失败告警0.19.0#2173与 0.16.x 的基础 systemd 监控配合测试见 internal/alerts/alerts_systemd_test.go。容器健康告警0.19.0#2225通知中附带日志片段log excerpts便于快速定位容器异常测试见 internal/alerts/alerts_container_test.go。CPU I/O wait 与 steal 告警0.19.0#2249新增针对 CPU 等待 I/O 与被虚拟化偷取时间的告警维度。外部服务出站心跳监控0.18.4#1729监控外部服务的出站连通性。磁盘、ZFS、网络监控、状态类告警在 internal/alerts 目录下有对应的alerts_disk_test.go、alerts_zfs_test.go、alerts_network_monitors.go、alerts_status.go等实现与测试。3.2 通知与安全通知通过shoutrrr库支持多平台0.12.10 起支持 Signal 与 WeChat WorkWeCom。0.18.7 支持在系统间复制告警配置#1853并新增SENSORS_TIMEOUT控制传感器采集超时#1871。0.18.4 支持通过文本输入精确录入告警阈值#1718。0.19.0 强化告警安全强制系统所有权校验并屏蔽更多内部通知 URL 网段防止利用通知功能访问内网。0.17.0 将告警链接从系统名改为系统 ID避免名称变更破坏链接。四、安全与连接模型证书校验、可信代理与传输加密4.1 0.19.0 破坏性变更Agent 强制校验 HTTPS 证书0.19.0 起agent 连接 hub 时会校验 HTTPS 证书。若 hub 使用自签名或不受信任的证书必须通过CA_CERT_FILE环境变量指定 CA 证书否则连接将被拒绝。实现位于 agent/client.go 的getTLSConfig读取CA_CERT_FILE指向的 PEM 文件以系统证书池x509.SystemCertPool为基础通过AppendCertsFromPEM追加自定义 CA文件不存在、不可读或不含任何合法 PEM 证书时分别返回带上下文的caCertFileError便于定位问题未设置该变量时返回 nil使用 Go 默认 TLS 配置与系统根证书。这属于升级前必须评估的兼容性变更如果你用自签名证书部署 hub务必先配置好CA_CERT_FILE再升级 agent。4.2 0.20.0TRUSTED_PROXY_IPS收紧反向代理信任0.19 之前TRUSTED_AUTH_HEADER0.12.8 引入用于认证转发会无条件信任携带该请求头的任意来源。0.20.0 新增TRUSTED_PROXY_IPS白名单#2327只有来自白名单内 IP/CIDR 的请求才被信任。解析逻辑见 internal/hub/api.go支持逗号分隔的 IP 或 CIDR未设置时保持旧行为接受任意来源设置后立即收紧parseProxyPrefix将 IPv4-mapped IPv6 归一化为 IPv4 以便匹配 IPv4 对端Masked()保证前缀规整非法条目只打印 warning 并跳过拼写错误只会缩小白名单而不会扩大它——这是一个刻意设计的安全默认值isTrustedProxy从RemoteAddr中拆分 host 后按前缀匹配。对应测试见 internal/hub/trusted_proxy_test.go 与 internal/hub/api_test.go。4.3 连接方式与稳定性修复agent 与 hub 的连接支持 WebSocket 与 SSH 两种模式并在两者间自动切换0.20.0 修复了慢采集期间 agent 被 WebSocket deadline 断开的问题#2294同时修复 SSH-only 模式下误报HUB_URL警告的问题#2316。连接状态机见 agent/connection_manager.go断开后始终保留重连 ticker防止异步握手失败后永不重试的竞态对应 issue #2326。0.19.0 修复并发 SSH 客户端关闭导致 hub 崩溃#2277。0.18.8 改善 SSH-pull 模式下连接静默失败的自动重连#2126。0.18.4 新增DISABLE_SSH禁用 SSH 功能#1061新增fingerprint命令#1726。0.13.2 优化 WebSocket 网络中断后的重连#12630.14.0 修复网卡重置时的网络统计误差#1267。0.12.10 在 hub UI 显示连接类型WebSocket / SSH。4.4 更新与安装安全0.18.8 增强更新安全校验和验证 归档路径包含限制防止解压路径穿越对应 internal/ghupdate/checksum.go 与 internal/ghupdate/extract.go0.18.3 在二进制替换后应用 SELinux 上下文#16780.12.6 增加--china-mirrors更新镜像标志0.12.4 为 update 命令增加备用镜像#10350.18.5 新增 hub Web UI 的有更新可用通知CHECK_UPDATEStrue#1830。五、Web 界面与用户体验容器页、S.M.A.R.T. 页与图表/containers页面0.14.0#928查看所有运行中容器的状态、健康、详情与基础日志0.18.5 增加端口列#14810.14.1 增加镜像名列#13020.18.8 支持展示绑定多个 IP 的容器全部 IP/端口映射#19930.12.7 提供CONTAINER_DETAILS控制日志与信息 API 的访问0.15.0 重命名语义。独立 S.M.A.R.T. 页面0.17.0磁盘健康专属视图0.18.0 修复容量排序#1551。1 分钟图表0.13.01 秒间隔的分钟级实时视图0.18.6 修复图表不显示 1m max 直至下次更新的问题0.20.0 修复切换实时图表时的历史数据处理#2333。网络图表0.12.8#926每网卡流量与累计流量图表0.12.11 为NICS环境变量增加模式匹配与黑名单功能#1190。布局与个性化0.18.5 增加系统页可选标签页布局#15130.16.1 增加布局宽度设置0.12.8 增加 12h/24h 时间格式#4240.20.0 将视图偏好与语言持久化到用户设置#1831。其他 UI 细节0.18.3 修复 CJK 文本截断、为导航按钮和系统名加 tooltip、增加移动端图标按钮0.17.0 将系统表额外磁盘指示改为用量范围圆点#14090.16.0 显示额外磁盘百分比#13650.12.6 虚拟化系统表以支持数百台系统的性能#1100。六、环境变量速查从采集控制到认证注入以下变量均在 CHANGELOG 中明确记载按功能分组整理采集与监控控制SENSORS_TIMEOUT0.18.7传感器采集超时。SKIP_GPU0.12.12、GPU_COLLECTOR0.18.4、INTEL_GPU_DEVICE0.15.3GPU 采集开关与采集器选择。SMART_INTERVAL0.18.0S.M.A.R.T. 采集间隔默认按小时后台采集SMART_DEVICES0.15.1、SMART_DEVICES_SEPARATOR0.18.3、EXCLUDE_SMART0.16.0S.M.A.R.T. 设备与类型配置。DISK_USAGE_CACHE0.17.0、EXCLUDE_CONTAINERS0.15.3磁盘缓存与容器排除。SERVICE_PATTERNS0.16.1过滤 systemd 服务SKIP_SYSTEMD0.17.0完全跳过 systemd 监控。NICS0.12.11网卡模式匹配与黑名单。SYSTEM_NAME0.13.0覆盖通用 token 注册时的系统名。连接与认证CA_CERT_FILE0.19.0自定义 CA 证书文件详见上文 4.1。TRUSTED_PROXY_IPS0.20.0可信反向代理白名单详见 4.2TRUSTED_AUTH_HEADER0.12.8认证转发请求头AUTO_LOGIN0.12.8自动登录。DISABLE_SSH0.18.4禁用 SSH 功能。MFA_OTP0.14.1启用基于邮箱的一次性密码OTP0.12.8 起已有实验性 OTP 支持。USER_EMAIL/USER_PASSWORD0.12.7设置初始用户邮箱与密码。OAUTH_DISABLE_POPUP0.18.8OAuth 登录改用无弹窗流程。TOKEN_FILE0.19.0 修复多行加载agent/client.go 中的parseTokenFile会跳过空行与#注释、拒绝包含多个 token 的文件。LHM0.12.7Windows 平台 LibreHardwareMonitor 改为显式启用。其他CHECK_UPDATES0.18.5hub UI 更新可用通知。BESZEL_AGENT_ALL_PROXYagent/client.goWebSocket 连接的代理支持。HUB_URLSSH-only 模式下的误报警告已在 0.20.0 修复#2316。SHARE_ALL_SYSTEMS系统共享控制0.18.3 修复其对system_details、smart_devices、systemd_services的生效#16600.15.1 修复容器场景#1334。七、多平台与部署形态演进容器镜像0.15.0 新增beszel-agent:alpine0.18.8 新增:slimNVIDIA agent 镜像#2002并为 NVIDIA 镜像加入 ARM64 支持#2207同时新增 ARMv5/ARMv6 构建#18840.12.10 提供 Intel GPU 专用的实验性镜像0.20.0 为 Intel/NVIDIA 镜像加入 ZFS 工具#2288、#2311。镜像对应 Dockerfile 位于仓库根目录如 dockerfile_agent、dockerfile_agent_alpine、dockerfile_agent_nvidia、dockerfile_agent_nvidia_slim、dockerfile_agent_intel部署模板见 supplemental/docker。系统平台0.17.0 增加 hub 的 Windows 与 FreeBSD 构建0.12.8 为 agent 安装脚本与 update 命令加入 FreeBSD 支持0.18.8 改善 OPNsense/pfSense 重启后的 agent 启动#2089、#22140.18.7 修复 OPNsense 安装持久化使用 daemon 用户#18800.19.0 修复 FreeBSD/pfSense 的机器 ID 生成#22740.12.12 修复 OpenRC 上的自动更新/重启#1199。其他0.18.2 增加 Linux 动态链接 glibc 构建#16180.18.6 修复 Podman 经 socket proxy 的探测#18460.18.4 增加 Windows 安装脚本的InstallMethod参数0.18.7 修复 Windows 根磁盘探测#18630.18.4 修复 macOS agent 的macmon路径查找#17460.18.6 修复 Docker 挂载主机根目录时的嵌套虚拟文件系统包含问题#1859。安全补丁0.18.4 加固 Docker API 路径穿越0.18.6 修复 Podman 容器健康状态#14750.18.4 改进 Podman 多路复用日志探测#1755。八、值得关注的稳定性修复Bugfix 精选除新增能力外CHANGELOG 中大量修复同样影响生产可用性这里摘录关键几类统计正确性0.19.0 修复 Docker 跑在 macOS/Windows VM 内时主机 CPU/内存总量错误#2272与 swap 计算未含缓存 swap#22670.18.8 修复 Docker 内存图表与容器统计在计数器回退/畸形数据下的异常#2027、#2066、#22050.18.7 修复内存计算下溢#19780.12.11 调整缓存内存计算#1187、#1196。崩溃与死锁0.19.0 修复并发 SSH 关闭导致 hub 崩溃#22770.18.5 修复 hub 实时 worker 与 WebSocket ping 的 nil 指针 panic0.12.5 降级gopsutil修复 FreeBSD panic#1083。采集阻塞0.18.5 修复温度采集阻塞 agent 统计#18390.18.5 修复磁盘发现与 I/O 设备匹配#1811、#17720.20.0 修复 base agent 镜像缺失根 CA 证书#2291。历史数据与告警0.18.5 修复额外磁盘告警使用历史记录的用量平均#1801、带宽告警从字节/秒源计算#1770、状态告警可靠性#15190.18.1 修复全部容器页误清空0.18.0 回归。九、总结与升级建议从 0.12 到 0.20Beszel 的演进主线清晰可辨覆盖度从基础 CPU/内存/磁盘扩展到 GPU、电池、风扇、systemd、mdraid、eMMC、S.M.A.R.T.、ZFS 与 Btrfs硬件与系统级指标日趋完整架构网络监控下沉到 agent 端hub 与 agent 通过 WebSocket/SSH 双通道协作连接稳定性持续加固安全证书强制校验、可信代理白名单、更新校验和验证、告警 SSRF 防护层层收紧其中0.19.0 的证书校验是唯一标注的潜在破坏性变更升级前需确认CA_CERT_FILE配置体验容器页、S.M.A.R.T. 页、分钟级图表、静默时段、多语言与多布局逐步完善。建议升级策略先阅读 supplemental/CHANGELOG.md 中目标版本的潜在破坏性变更提示确认反向代理TRUSTED_PROXY_IPS、证书CA_CERT_FILE等安全配置就绪随后按 0.20.0 的 Docker 镜像更新、Btrfs/ZFS 存储池与网络监控等特性逐项验证采集结果。相关实现细节可继续深入 agent 目录采集端与 internal/hub 目录hub 端核对。赞分享运维观测指标监控告警后端可观测性【免费下载链接】beszelLightweight server monitoring with historical data, docker stats, and alerts.项目地址https://gitcode.com/GitHub_Trending/be/beszel点击查看免费下载相关推荐cJSON 版本演进全解析从 1.0.0 到 1.7.19 的 API 变迁与安全加固路线图cJSON 版本演进全解析从 1.0.0 到 1.7.19 的 API 变迁与安全加固路线图 cJSON 是一款以Ultralightweight超轻量序列化degit 3.x 演进全解析从 tarball 默认下载到安全加固的完整版本路线图degit 3.x 演进全解析从 tarball 默认下载到安全加固的完整版本路线图 degit 是一款以 straightforward project开发工具CLIflame_tiled 版本演进与能力全解从 0.0.1 到 3.1.2 的 Tiled 地图渲染演进路线flame_tiled 版本演进与能力全解从 0.0.1 到 3.1.2 的 Tiled 地图渲染演进路线 flame_tiled 是 Flame 游戏引擎官游戏开发图形学上一篇BingGPT缓存管理如何清理和优化应用缓存下一篇htmx-go 实战项目构建一个完整的Todo应用Go HTMX创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考