
Montray:开源托盘工具监控 systemd 服务与命令行检查
来源标题:Montray – Don't let a broken systemd service go unnoticed
Montray 是一款轻量级托盘图标监控工具,可监控本地和远程机器上的 systemd 服务及任意命令行检查,出现故障时以闪烁图标提醒。作者因 Syncthing 服务中断数周未被察觉、Certbot 证书续期静默失败等经历而开发此工具,图标绿色表示正常、黄色或红色闪烁表示异常,无需部署企业级监控系统。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
Montray 是一个轻量级的托盘图标监控工具,可用于监控 systemd 服务以及任何你能从命令行检查的内容,本地和远程机器都支持。
问题:当 systemd 服务出故障时,Linux 的提示不够醒目。2021 年那会儿,我的 Syncthing 服务已经坏了好几周,我是后来才发现——注意到文件同步严重错乱之后才意识到,而手动对账可不好玩。systemd 明明知道它坏了,却没告诉我。这显然不够。
我还遇到过 Certbot 服务悄悄停止工作、证书没能续期的情况,以及其他类似的问题。
而且我不想为这么简单的任务上一套企业级监控:我只想要一个简单的图标,常驻系统托盘——绿色表示一切正常,黄色/红色闪烁表示出了问题。就这么简单。
不久之后,我希望同一个图标不仅能用于 systemd 服务,还能用于任意命令行检查,比如检查磁盘空间是否充足、RAID 是否健康,或者任何其他东西。
于是,Montray 诞生了:一个轻量级的系统托盘应用,监视你的服务、运行命令行检查,并在出问题时通知你。
montray-server 是一个服务端(也可以本地运行),montray-ui 是一个客户端,运行在比如笔记本电脑上。如果我们有一台笔记本和两台服务器,典型部署是这样的:
flowchart LR subgraph laptop["Laptop"] localServer["montray-server"] --> desktop["montray-ui"] end subgraph server1["Server 1"] server1Monitor["montray-server"] end subgraph server2["Server 2"] server2Monitor["montray-server"] end server1Monitor --> desktop server2Monitor --> desktop 加载中
Montray Server 上报事件(incident),每个事件包含:
这些事件根据 Montray Server 的配置生成。详情请参阅 Configuring Montray Server。
Montray UI 会把这些事件合并起来。对于每个事件,它还会在 key 前面加上该服务器的 ID,比如 my-server(在 Montray UI 配置中指定),于是 key 就变成了 my-server.systemd.myservice。
如果某个事件发生了,我们只想先确认一下、稍后再处理,可以在 UI 里把它设为稍后提醒(snooze),这样图标就不会一直烦人,但之后它会自动取消稍后提醒。
托盘图标显示当前最严重的、未稍后提醒的状态:
监控本地机器
要安装 montray-server 和 montray-ui 来监控本地机器的健康状态,最简单的方式是使用预编译的 DEB 或 RPM 包。如果这两种包在你的 Linux 发行版上都不能用,请参阅独立安装说明。
首先,从 GitHub 下载最新的预编译包。
对于 Debian 及其衍生版,下载 montray-server_x.y.z_amd64.deb 和 montray-ui_x.y.z_amd64.deb,然后安装:
sudo apt install ./montray-server_x.y.z_amd64.deb ./montray-ui_x.y.z_amd64.deb
对于 Fedora,下载 montray-server-x.y.z-1.x86_64.rpm 和 montray-ui-x.y.z-1.x86_64.rpm,然后安装:
sudo dnf install ./montray-server-x.y.z-1.x86_64.rpm ./montray-ui-x.y.z-1.x86_64.rpm
安装完两个包之后,确保 Montray Server 已启用并正在运行:
sudo systemctl enable --now montray-server.service
然后启动桌面应用:
montray-ui
现在你应该能看到一个托盘图标,点击它就能看到 UI。要让 Montray UI 在登录时自动启动,右键点击托盘图标并选择 Enable autostart。
如果你有一台个人服务器,也想在桌面上用同一个界面来监控,那么在每个这样的远程机器上按上述步骤操作,但只安装 montray-server(服务器上不需要安装 montray-ui)。
服务器上运行了 montray-server 之后,我们需要让本地的 Montray UI(montray-ui)指向它。默认情况下,Montray Server 只监听 127.0.0.1,所以我们没法从笔记本直接访问它。
假设你可以通过公钥认证 ssh 到服务器(也就是无需密码即可 ssh 登录),那么最简单的做法是建立一条 ssh 隧道,Montray UI 对此有便捷支持:打开配置文件 ~/.config/montray-ui/montray-ui.yml,在 wsClient.servers 数组里再加一条记录,像这样(至少要把服务器主机名和用户名改成你自己的)。这条记录里没有 addr:对于结构化 SSH 隧道,Montray UI 会自动在 127.0.0.1 上分配一个可用端口。如果你需要一个固定的本地转发端口,仍然可以显式设置一个回环地址和自选端口。
- id: myserver # 该服务器的任意唯一 ID。 tunnel: ssh: host: myserver.com # TODO: 你的实际服务器主机名 user: myuser # TODO: 你的实际 ssh 用户 port: 22 # 如果使用非默认 ssh 端口,请修改 remoteServerAddr: 127.0.0.1:41990 # Montray Server 监听端口
然后右键点击托盘图标,选择 "Restart and reload configuration." 来重启 Montray UI(montray-ui)。打开 UI,确认服务器列表中已经包含你新添加的远程服务器。
SSH 隧道并不是访问远程服务器的唯一方式;Montray UI 还支持 TLS 和 bearer token 认证。详情请参阅安全相关文档。
默认配置如下:如果有任何 systemd 服务处于失败状态,算作警告(托盘图标闪烁黄色)。如果根分区可用空间不足 100 MiB,算作错误(托盘图标闪烁红色)。否则,一切正常(托盘图标为绿色)。
配置文件里带有注释和示例,可以看一看、动手试一试;也请查阅 Configuring Montray Server 文档。比如,我喜欢把特别关心的服务(例如 Syncthing)显式列出来,并把除 active 以外的任何状态都配置为错误而非警告。这包括被手动停止的服务——如果它因为某种原因被手动停了,我就想让闪烁的图标一直烦我,直到服务重新运行起来。此外我还配置了一些自定义 exec 检查。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。