指南 › MeshServerWatch

其他语言 English · 日本語 · 한국어 · 简体中文

MeshServerWatch

Windows 与 Linux 服务器监控:每台服务器一个代理,一个自己运行的 Manager — 1.0.0

本版本的变化

完整发布说明

1. 安装 Manager

Manager 是所有代理上报的那一台。在一台常开的服务器上装一次即可。它是单个程序,不需要运行时,也不需要数据库服务器;一个端口(8455)同时承载浏览器界面和代理 API。

请校验下载的文件。所有 Manager 和 Agent 安装包的校验和发布在同一个文件中:MeshServerWatch-SHA256SUMS.txt

Linux:

shasum -a 256 meshserverwatch_1.0.0_amd64.deb

Windows:

Get-FileHash -Algorithm SHA256 MeshServerWatch-Manager-1.0.0-setup.exe

Windows 安装程序已进行 Authenticode 签名并带时间戳。证书较新,在积累信誉之前 SmartScreen 仍可能显示警告 —— 如出现,请选择 More info → Run anyway。

许可协议

Manager 和 Agent 只有在你接受许可协议(meshwatch.app/terms)后才会安装和运行。请在安装前阅读:该页面上有全文,安装后程序旁边有 EULA.txt(Linux 上为 /usr/share/doc/meshserverwatch/EULA.txt 和 /usr/share/doc/meshserverwatch-agent/EULA.txt),也可用 meshserverwatch eula、meshserverwatch-agent eula 打印。接受方式:安装向导中的复选框(勾选前 Next 不可用)、静默 setup 用 /ACCEPT_EULA=1、命令行用 --accept-eula(或在终端提示时输入 yes),以及创建第一个管理员时的必选复选框。未接受时不会安装任何内容,并以退出码 2 停止。接受记录保存在数据(或 state)文件夹的 eula.json 中;协议版本变化时会再次询问。

Windows Server:安装向导

Windows Server 2016、2019 或 2022,x64。运行 MeshServerWatch-Manager-1.0.0-setup.exe(会请求管理员权限)。

  1. Welcome → Licence Agreement:勾选 I accept the terms of the licence agreement。勾选前 Next 不可用。
  2. Settings:端口(默认 8455)和 Allow this port through Windows Firewall(默认勾选,添加入站 TCP 规则 MeshServerWatch Manager)。升级时会填入当前使用的端口。
  3. Install folder(默认 C:\Program Files\MeshServerWatch Manager)→ Install。向导保存配置、生成自签名证书,并注册和启动 Windows 服务 MeshServerWatch。如果这一步失败,会显示程序的消息并回滚。
  4. Finish 显示 Manager 地址(https://<计算机名>:8455)和证书指纹,可选中复制;代理需要这两个值。勾选 Open MeshServerWatch in the browser 打开界面。浏览器会对自签名证书警告一次,继续访问后创建第一个管理员。

向导会把程序文件夹加入 PATH,创建开始菜单文件夹(Open MeshServerWatch、MeshServerWatch Manager status、Uninstall)和设置 > 应用中的条目。在已安装的 Manager 上运行新版 setup 会原地升级,配置和数据保持不变。

程序:C:\Program Files\MeshServerWatch Manager\meshserverwatch.exe(旁边有 EULA.txt)。配置:C:\ProgramData\MeshServerWatch\Manager\manager.json。数据:C:\ProgramData\MeshServerWatch\Manager\data\。日志写入应用程序事件日志(来源 MeshServerWatch)和 data\logs\manager.log(5 MB × 2)。

Windows Server:静默与脚本安装

安装向导可用 /S 静默运行;/ACCEPT_EULA=1 为必填,/PORT= 和 /FIREWALL=0 可选(要更改文件夹,把 /D=<文件夹> 放在最后)。退出码:0 已安装,2 缺少 /ACCEPT_EULA=1 或端口无效(未安装任何内容),3 安装步骤失败(已回滚),4 不是 64 位 Windows。

MeshServerWatch-Manager-1.0.0-setup.exe /S /ACCEPT_EULA=1 /PORT=8455

Linux(deb / rpm,systemd)

Ubuntu 20.04+、Debian 11+、RHEL / Rocky / Alma 8+,amd64 或 arm64。Debian、Ubuntu:

sudo apt install ./meshserverwatch_1.0.0_amd64.deb

RHEL、Rocky、Alma:

sudo dnf install ./meshserverwatch-1.0.0-1.x86_64.rpm

然后,两者相同:

sudo meshserverwatch install --accept-eula

安装包会创建系统用户 meshserverwatch 和 unit meshserverwatch.service,以 NoNewPrivileges、ProtectSystem=strict、ProtectHome 和 512 MB 内存上限运行,唯一可写路径是 /var/lib/meshserverwatch。install 写入 /etc/meshserverwatch/manager.json,在 /var/lib/meshserverwatch/manager/tls/ 生成证书,启用并启动服务,并打印界面地址和指纹。选项:--port 8455、--cert /path/cert.pem --key /path/key.pem、--insecure-http、--bind ADDR、--data DIR。

--accept-eula 表示接受许可协议。省略时,install 会在终端中要求输入 yes;没有终端时不做任何更改,以退出码 2 停止。软件包中的 unit 以 run --accept-eula 运行,因此安装或启用它即表示接受协议。

sudo systemctl status meshserverwatch
sudo journalctl -u meshserverwatch

防火墙:TCP 8455

在 Manager 上放行 TCP 8455 入站,来源是要上报的服务器和使用界面的浏览器。代理只发起出站连接,代理一侧无需放行任何端口。Windows Server:

New-NetFirewallRule -DisplayName "MeshServerWatch" -Direction Inbound -Protocol TCP -LocalPort 8455 -Action Allow

Ubuntu、Debian 的 ufw,然后是 RHEL 系的 firewalld:

sudo ufw allow 8455/tcp
sudo firewall-cmd --permanent --add-port=8455/tcp && sudo firewall-cmd --reload

Windows 安装向导会添加这条规则,除非你取消勾选 Allow this port through Windows Firewall。

HTTPS 与证书指纹

首次启动时,Manager 生成自签名证书,并在日志中以 TLS fingerprint (SHA-256): … 打印其 SHA-256 指纹(AB:CD:…,32 组)。随时可以再次查看:

meshserverwatch status

它也显示在界面标题栏(点击即可复制)和每个签发的令牌旁边。代理以这个值安装,拒绝与证书不同的 Manager 通信 —— 在发送令牌之前就中止 TLS 握手。证书在每次启动时复用,只要不删除 tls/ 文件夹,指纹就不会变。

第一次打开界面时,浏览器会提示这是自签名证书。这是预期的;若想确认到达的是正确的机器,把浏览器显示的指纹与 meshserverwatch status 的指纹对比即可。若不想看到警告,可用 --cert、--key提供自己的证书,此时代理可以信任 CA 而不固定指纹。明文 HTTP 只以 --insecure-http 的形式存在,供反向代理之后的 Manager 使用。

第一个管理员

打开 https://<manager-host>:8455。首个页面显示 No accounts yet. Create the first administrator.。设定用户名和至少 12 个字符的密码。这个页面只出现一次,之后界面会要求登录。

创建账户之前,需要阅读该界面显示的许可协议,并勾选 I have read and agree to the licence agreement。

会话有效 12 小时,只保存在内存中,因此重启 Manager 会让所有人退出登录。登录失败按地址和账号限制为每 5 分钟 10 次。在 Settings → Users 中以三种角色之一添加用户:admin(全部权限)、operator(确认告警,不能改设置)、viewer(只读)。

忘记密码时在 Manager 主机上重置 —— 刻意不支持通过网络重置。给一个不存在的名字会列出所有账号;新密码输入两次且不回显,并结束该用户的所有会话:

sudo meshserverwatch reset-password admin

2. 安装代理

在每台要监控的服务器上安装代理 —— 如果 Manager 所在服务器也要监控,那里也装。

签发令牌

在界面中打开 Agents,输入标签(例如 Head office servers,一个你自己起的名字),点击 Issue token。令牌(msw_…)只显示一次,分为两部分。Install with the setup wizard (one server) 列出代理向导需要的三个值 —— Manager address、Agent token 和 Certificate fingerprint —— 每个都有 Copy 按钮。Install on many servers (silent) 给出已包含这些值以及 /ACCEPT_EULA=1 / --accept-eula 的 Windows 静默 setup 一行命令和 Linux 命令。点击 Done 之前请复制所需内容;丢失的令牌无法再次显示 —— 签发新令牌并吊销旧的。

一个令牌可以用在所有服务器上。Manager 按 machine id 而不是按令牌区分服务器。只有当你希望能单独吊销某个站点或团队时,才需要签发多个令牌。如果命令中的地址是服务器无法访问的(例如 localhost),请替换为 Manager 的主机名或 IP。

在每台要监控的服务器上运行该命令,不要在 Manager 上运行(除非 Manager 也要被监控)。成功后,一分钟内该服务器会出现在 Servers 标签页,令牌状态变为 reporting。状态有 waiting(从未使用)、connected(代理测试成功,尚未发送数据)和 reporting(已收到指标或告警)。要在服务器上确认,运行 meshserverwatch-agent status。

不使用界面,在 Manager 主机上(另有 token list 和 token revoke <id>):

sudo meshserverwatch token issue --label "Head office"

Windows 单台服务器:安装向导

先安装 Manager。然后在要监控的服务器上运行 MeshServerWatch-Agent-1.0.0-setup.exe(会请求管理员权限)。

  1. Welcome → Licence Agreement:勾选 I accept the terms of the licence agreement。
  2. Connect to your MeshServerWatch Manager:从令牌框粘贴 Manager address(https://manager-host:8455)、Agent token(msw_…)和 Certificate fingerprint。点击 Test connection 会用这些值 ping 一次(不保存任何内容),并以绿色或红色显示结果。建议测试但不是必须;三个值填好后 Next 即可用。如果 Manager 在反向代理之后以明文 HTTP 运行,请勾选 The Manager uses plain HTTP behind a reverse proxy,不填指纹。
  3. 如果 Manager 安装在同一台计算机上,页面会出现 Fill in from this computer 按钮:它在本机 Manager 上签发令牌并填好全部三个值。
  4. Install folder(默认 C:\Program Files\MeshServerWatch Agent)→ Install:保存配置,注册并启动服务 MeshServerWatchAgent。如果这一步失败,会显示程序的消息并回滚。令牌不会完整显示。
  5. Finish:一分钟内该服务器会出现在 Manager 的 Servers 标签页。Show agent status 会打开显示 meshserverwatch-agent status 的窗口。

向导会把程序文件夹加入 PATH,创建开始菜单文件夹(MeshServerWatch Agent status、Uninstall)和设置 > 应用中的条目。在已安装的代理上运行新版 setup 会保留设置并升级(Keep this server's current connection settings 已勾选)。静默:/S /ACCEPT_EULA=1 /MANAGER=… /TOKEN=… /FINGERPRINT=…;在已配置的服务器上,仅用 /S /ACCEPT_EULA=1 即可升级。

Windows 多台服务器:静默 setup

安装向导也可以静默运行。在管理员 PowerShell 或命令提示符中,进入下载的 setup 所在文件夹:

MeshServerWatch-Agent-1.0.0-setup.exe /S /ACCEPT_EULA=1 /MANAGER=https://<manager>:8455 /TOKEN=<msw_…> /FINGERPRINT=<sha256>

这就是令牌框填好值后给出的那一行,也是放进 GPO 或 RMM 部署中的命令。/ACCEPT_EULA=1 为必填,表示在该服务器上接受许可协议。若 Manager 通过明文 http:// 访问,用 /INSECURE_HTTP=1 代替 /FINGERPRINT=。退出码:0 已安装;2 未接受许可协议或缺少值(未安装任何内容)。

高级:不用安装程序时,把 meshserverwatch-agent.exe 复制到固定的文件夹,以管理员身份运行:

meshserverwatch-agent install --manager https://manager.example.com:8455 --token msw_... --fingerprint AB:CD:... --accept-eula

Linux(apt / dnf)

Debian、Ubuntu,然后运行令牌框中的 install 命令:

sudo apt install ./meshserverwatch-agent_1.0.0_amd64.deb
sudo meshserverwatch-agent install --manager https://manager.example.com:8455 --token msw_... --fingerprint AB:CD:... --accept-eula

RHEL、Rocky、Alma:

sudo dnf install ./meshserverwatch-agent-1.0.0-1.x86_64.rpm

安装包会创建系统用户 meshserverwatch-agent(为读取日志加入 systemd-journal,存在时也加入 adm)和 unit meshserverwatch-agent.service,以 NoNewPrivileges、ProtectSystem=strict、ProtectHome 和 100 MB 内存上限运行。install 写入 /etc/meshserverwatch/agent.json 并启用、启动服务。代理和 Manager 可以装在同一台服务器上:各自的安装包只动 /etc/meshserverwatch/ 和 /var/lib/meshserverwatch/ 中自己的文件。

install 会先记录对许可协议的接受(--accept-eula,或在终端提示时输入 yes),再写入配置。

检查:test 与 status

meshserverwatch-agent test

test 检查配置、Manager 的证书和版本、令牌以及时钟;采集一个样本,打印并发送,再打印 Manager 的回应。test --send-alert 还会发送一条 info 级别的测试告警,出现在 Alerts 标签页。

要在安装前检查这些值(即向导中 Test connection 所做的事),使用 test --no-config:用你给出的值 ping 一次,不读取也不保存任何配置,输出一行 OK: … 或 FAIL: …。

meshserverwatch-agent test --no-config --manager https://manager.example.com:8455 --token msw_... --fingerprint AB:CD:...
meshserverwatch-agent status

status 用平实的话显示服务状态、上次成功发送、队列、错误事件的读取来源、最近样本和最近的问题。在 Windows 上请在新的管理员命令行中运行,以便读取更新后的 PATH。退出码:0 正常,1 发现问题,2 用法或配置错误,3(仅 status)代理未运行。

之后要改某一项设置,只带那个选项再次运行 install 即可 —— 其他值保持不变。给出新的 --manager URL 会清除旧指纹,请同时给出新指纹。

sudo meshserverwatch-agent install --interval 300

3. 服务器与图表

Servers 标签页

每台服务器一行:状态、CPU 平均、内存、最满的磁盘、最近上报、操作系统、代理版本。状态有 ok;warning(超过阈值);critical(磁盘超过 critical 阈值,或无上报);silent(超过该服务器间隔 × silent 系数没有上报);unlicensed(上报被拒绝 —— 见第 6 节);waiting(已授权,尚未收到数据)。

服务器详情页

点击一行。顶部列出操作系统、IP、别名、最近上报与间隔、运行时间、CPU、内存、load(Linux)、代理版本、首次出现时间和 machine id。下方是 CPU(间隔内平均值和峰值)、内存以及每块磁盘单独的图表,并画出 warning 和 critical 线。24 hours 显示每一次上报;7 days 按小时、30 days 按 4 小时汇总。线条断开处表示没有收到上报 —— 图表绝不画出未收到的点。悬停或轻触图表可读取数值。再往下是该服务器最近 20 条告警、当前生效的阈值和 Remove server。

Overview 与 Alerts

Overview 显示各状态的服务器数、最近 24 小时告警按严重级别和按小时的分布、告警最多的服务器、许可证状态行和最新告警。Alerts 列出全部告警,可按严重级别、来源(agent 或 thresholds)、服务器和状态筛选;Acknowledge 只记录谁在何时确认;Export CSV 下载当前筛选结果。

保留期

上报数据按服务器、按天分文件保存 30 天,过期文件整个删除。告警默认保存 90 天,可在 Settings → Data retention 中改为 1–730 天。清理在启动时和每天一次运行。

4. 告警与阈值

两类告警

代理日志行(Windows 为 eventlog-error,Linux 为 journal-error):错误级别事件的一行摘要,由代理在发生时发送 —— Windows 的 System 和 Application 日志中的 Critical 与 Error,Linux 的 journald err 及以上。同一事件每 10 分钟最多发送一次;重复次数会被计数,并以一条以 (repeated N times in 10 min) 结尾的摘要发送;每 30 秒一批最多 20 条。阈值告警由 Manager 根据上报数据判断。

采集的事件

  • Windows —— System 和 Application 事件日志中级别为关键(Critical)(作为 critical 发送)和错误(Error)(作为 error 发送)的事件。
  • Windows 上不采集 —— 警告(Warning)和信息(Information)事件,以及 Security 日志。
  • Linux —— journald 中优先级 err 及以上的条目(emerg、alert、crit 作为 critical,err 作为 error)。没有 journald 时读取 /var/log/syslog 或 /var/log/messages,见第 9 节。
  • 代理自身的日志行不会变成告警。只想发送指标时,在 agent.json 中设置 "collectErrors": false。

默认阈值

  • 磁盘 —— 90 % 及以上:warning;95 % 及以上:critical。
  • CPU —— 平均 90 % 及以上连续 2 次上报:warning。
  • 内存 —— 90 % 及以上连续 2 次上报:warning。
  • 无上报 —— 超过该服务器间隔 × 2.5 没有上报(默认 10 分钟时为 25 分钟):server-silent,critical。

在 Settings → Thresholds 中修改,从下一次上报起生效。磁盘 critical 值必须高于 warning 值,否则表单会提示。

状态变化时告警一次,而不是每次上报

状态变化时产生一条告警,恢复正常时产生一条 info 级别的 …-cleared 告警。磁盘从 50 → 91 → 96 → 92 → 70 % 会产生四条告警:warning、critical、warning(下降途中)和 cleared —— 而不是在磁盘满着的每次上报都告警。状态保存在磁盘上,所以重启 Manager 不会再次发出同一告警,迟到的旧上报也不会覆盖更新的状态。

"silent" 的含义

Manager 无法判断服务器是否宕机,只知道什么都没收到 —— 所以它从不说 "down"。告警内容类似 No report from app-03 for 27 minutes (expected every 10 minutes)。原因可能是服务器本身、网络、代理服务或中间的防火墙。恢复上报后会跟着一条 server-silent-cleared,期间代理排队的数据(最多 6 小时的指标和 500 条告警)按顺序送达。

5. 邮件告警

设置

Settings → Email alerts (SMTP):SMTP 服务器、端口、安全方式(STARTTLS、隐式 TLS 或 None)、服务器要求时的用户名和密码(AUTH PLAIN、LOGIN 或 CRAM-MD5)、发件地址,以及以逗号分隔的收件人。点击 Send test email:如果邮件被接受,设置会被保存,邮件告警也在同一步中开启,因此不会出现测试成功却没保存设置的情况。

发送频率

每条告警一封邮件,每台服务器每分钟最多一封。同一台服务器在这一分钟内的其他告警会以 "… and N more" 折叠进下一封邮件,因此突发也只有一封。表单下方的计数显示已发送和失败的数量。

密码

SMTP 密码保存在数据文件夹的 settings.json 中,只有服务可读(Linux 上为 0600),且不会再发回浏览器 —— 表单只显示已设置。Manager 是服务,因此没有桌面通知;对外的通道是邮件和 MeshWatch Central。

6. 许可证与席位

试用

30 天,服务器数量不限,从第一次代理上报开始计算 —— 只安装 Manager 不会开始计时。Overview、Servers 和 Settings → Licence 显示剩余天数。无需事先提供任何信息。

密钥

MeshServerWatch 按服务器计价,包含 Manager,最少 3 台:按月为每台服务器每月 US$5(每月最低 US$15),或按年为每台服务器每年 US$48(八折,相当于每月 US$4)。费用原则上不予退款,但法律要求退款的情形,以及我们批准的、在扣款后 14 天内提出的账单错误退款申请除外(见使用条款)。因此请先用 30 天试用充分评估;在 Stripe 结账页面选择服务器数量(至少 3 台)并勾选许可协议。购买后,以 MSW1. 开头的密钥会通过邮件发送给你。粘贴到 Settings → Licence 并点击 Activate。密钥中包含席位数和到期时间,由 Manager 用内置公钥在本地验证 —— 不连接任何许可证服务器,因此在隔离网络中也能使用。

席位如何计算

每台服务器一个席位,按 machine id 首次上报的顺序计算,前 N 台获得授权。超出席位的新服务器会收到 402 seat-limit,显示为 unlicensed,其代理继续采集并每小时重试。已经在上报的服务器绝不会因为新增了服务器而被切断。

有服务器超出上限时,Servers 上会出现黄色横幅,说明超出几台以及该怎么做:在订阅中增加席位并输入新密钥(Settings → Licence),或删除不再监控的服务器。横幅上的 Enter a new key 按钮打开许可证设置,Add seats 打开产品页的价格部分。新密钥通过邮件送达,输入后等待中的服务器在下一次上报时获得授权。

Remove server

服务器详情页的 Remove server… 会立即释放其席位并删除其图表(所有已存上报,最多 30 天 —— 无法撤销)。其告警留在 Alerts 标签页直到过期。如果该服务器上的代理仍在运行,它会在下一次上报时作为新服务器重新出现,排在队尾 —— 请先卸载代理或吊销其令牌。

试用或密钥到期时

代理会收到 402 和原因 —— trial-ended、licence-expired、licence-invalid,若 Manager 的时钟被调回则为 clock-tampered。已保存的图表和告警仍然可见。代理继续采集并每小时重试,因此输入密钥后无需改动服务器即可恢复上报。

7. 连接 MeshWatch Central

可选。MeshServerWatch 单独即可完整使用。如果你还运行着 MeshWatch Central,Manager 可以转发告警和每台服务器一行状态,让磁盘已满的告警与其他 MeshWatch 产品关于同一主机的报告并列显示。

需要 Central 1.3.9 及以上版本(Central 1.3.9 与 MeshServerWatch 分开发布)。更早版本的 Central 的 Agents 列表中没有 MeshServerWatch,因此无法为它签发令牌。

  1. 在 Central 中打开 Agents,选择 MeshServerWatch,输入标签并点击 Issue token。令牌只显示一次。
  2. 在该下拉列表中选择 MeshServerWatch。令牌属于签发时所选的产品。Manager 会检查这一点:如果用了其他产品的令牌,Test 会拒绝并指出令牌所属的产品 —— That token was issued for “syslogwatch” in Central … Issue a MeshServerWatch token。
  3. 在 Manager 的 Settings → MeshWatch Central 中,按在浏览器中打开 Central 的方式填写地址 —— 若 Central 前面没有反向代理,则为 http://<central-server>:8443 —— 并填写令牌。
  4. 点击 Test。测试成功会保存设置并开启转发:Done — Central accepted the token (…). Forwarding is on and saved. 在测试成功之前不会发送任何内容。

转发的内容:所有告警 —— 阈值、无上报以及代理的错误日志行 —— 以及每台服务器一行设备信息:主机名作为设备名、IP 和别名、状态 up 或 silent,以及一行说明,如 "CPU 12% · Mem 56% · Disk C: 96%"。设备行每台服务器每 5 分钟最多发送一次。原始指标时间序列从不转发;图表留在 Manager 上。Central 不可达期间,最多 500 条在队列中等待并按顺序发送。完整步骤见 MeshWatch Central 指南。

8. 数据存放位置、备份与卸载

Manager 端

Windows:C:\ProgramData\MeshServerWatch\Manager\data\。Linux:/var/lib/meshserverwatch/manager/。其中有 settings.json(阈值、保留期、SMTP 与 Central 设置,0600)、alerts.json、servers.json(每台服务器一行及最新样本)、agents.json(只有令牌哈希 —— 从不保存原始令牌)、users.json(scrypt 密码哈希)、licence.json(密钥和试用记录)、server-alert-state.json、tls/(证书)、metrics/<machine id>/YYYY-MM-DD.jsonl(上报数据)和 logs/。所有写入都是原子的:先写临时文件,再重命名。

代理发送的内容 —— 数据边界

只有数字和一行摘要。每个间隔发送一条类似这样的上报:

{
  "machineId": "3f2a…",
  "host": "web-01", "ip": "10.0.0.21", "aliases": ["web-01.corp.local"],
  "os": "linux", "osName": "Ubuntu 22.04.4 LTS",
  "agentVersion": "1.0.0", "uptimeSec": 123456, "intervalSec": 600,
  "at": 1790000000000,
  "cpu":  { "avgPct": 12.5, "maxPct": 71.0, "cores": 8 },
  "mem":  { "totalBytes": 17179869184, "usedBytes": 9663676416, "pct": 56.3 },
  "disks": [ { "mount": "/", "fs": "ext4", "totalBytes": 0, "usedBytes": 0, "pct": 0 } ],
  "load": [0.5, 0.4, 0.3]
}

machineId 是 Windows MachineGuid 或 Linux /etc/machine-id 的 SHA-256 的前 32 位十六进制字符;从不发送原始值。磁盘只包括真实文件系统(Windows 为固定驱动器;Linux 跳过 tmpfs、overlay、网络及其他虚拟文件系统),按占用从高到低,最多 32 个。load 仅 Linux。每个错误事件包括:严重级别、类型、相同的主机、IP 和 machine id、事件时间,以及不超过 300 个字符的摘要:

System · Service Control Manager 7031 — The Print Spooler service terminated unexpectedly.
journal · sshd — error: kex_exchange_identification: Connection closed by remote host

从不发送完整消息文本、事件 XML、用户 SID、进程列表、用户名和命令行。令牌从不完整地写入日志或打印,显示为 msw_abcd…wxyz。

各服务器端

配置:C:\ProgramData\MeshServerWatch\Agent\agent.json(仅 SYSTEM 和 Administrators)或 /etc/meshserverwatch/agent.json(0600)。状态 —— 未发送项的队列、使重启后既不重发也不遗漏事件的事件日志书签或 journal 游标,以及 status.json:C:\ProgramData\MeshServerWatch\Agent\state\ 或 /var/lib/meshserverwatch/agent/。

备份

复制 Manager 的数据文件夹,就是全部内容。由于每个文件都是原子替换,Manager 运行时复制得到的也是完整文件;若要所有文件处于同一时刻,请先停止服务。请连同 tls/ 一起保留:用同一证书在新机器上恢复,指纹不变,代理可继续工作。若没有它,Manager 会生成新证书,每个代理都需要 install --fingerprint <新值>。

卸载

Manager:Windows 上通过 Settings → Apps,Linux 上用 apt remove / dnf remove,或:

sudo meshserverwatch uninstall

以上方式都会停止并移除服务,保留配置和数据,重新安装后可接着使用。Windows 上的代理可在设置 > 应用中卸载,或静默运行 "C:\Program Files\MeshServerWatch Agent\Uninstall.exe" /S。

这会移除服务和程序文件夹,保留 C:\ProgramData\MeshServerWatch\Agent\。Linux 上 apt remove 停止并禁用代理;apt purge 还会删除其配置、状态和用户;rpm -e 保留配置。meshserverwatch-agent uninstall --purge 在两种系统上都会移除服务并删除配置和状态。别忘了在 Manager 上点击 Remove server 释放席位。

用安装向导安装的,可在设置 > 应用中卸载,或静默运行 "C:\Program Files\MeshServerWatch Manager\Uninstall.exe" /S、"C:\Program Files\MeshServerWatch Agent\Uninstall.exe" /S。卸载 Manager 向导版本时也会删除防火墙规则。无论哪种方式,配置和数据都会保留。

9. 排查问题

在服务器上先运行 meshserverwatch-agent test,再运行 meshserverwatch-agent status。下面的文字就是它们打印的原文。

"The Manager's certificate fingerprint does not match the configured one"

没有发送任何内容 —— 在令牌离开服务器之前连接就被关闭了。原因是 Manager 被重新安装(生成了新证书),或者 URL 指向了另一台机器。在 Manager 上用 meshserverwatch status 读取指纹,然后运行 install --fingerprint <新值>。不要未经在 Manager 上核对就照抄消息中的 "presented" 值:那是应答方的值。its TLS certificate is not trusted 表示未设置指纹而 Manager 使用自签名证书 —— 请加上 --fingerprint。

401 —— "The Manager rejected the token (401): it is wrong or has been revoked"

在 Manager 的 Agents 标签页签发新的代理令牌,然后运行 meshserverwatch-agent install --token <新令牌>。在配置变更之前发送会暂停,采集和排队继续。

402 —— Manager 不接收服务器数据

代理会说明原因,并继续采集、每小时重试:The Manager has no free licence seat for this server — add seats or remove a server on the Manager's Servers tab. · The Manager's trial has ended — enter a licence key on the Manager's Settings tab. · The Manager's licence has expired · The Manager's licence key is not valid · The Manager reports its clock was moved back; the administrator must check the Manager server's clock. 见第 6 节。

403 —— "This token is not an agent token"

Manager 回应了 403 wrong-product:作为令牌提供的值不是代理令牌。在 Manager 的 Agents 标签页签发一个,然后运行 install --token <新令牌>。

404 —— "MeshServerWatch Manager 1.0.0 or later is required at <url>"

该地址没有指向 Manager 的代理 API:端口错误、反向代理路径未转发 /api/v1/,或者是另一个网站。错误告警仍会尝试发送;指标每小时重试。

"connection refused" 或 "timed out"

检查 Manager 是否在运行(未监听时 meshserverwatch status 以退出码 3 结束),代理是否使用了正确的端口,Manager 上 TCP 8455 入站是否放行且中间没有被拦截 —— 见第 1 节的防火墙部分。

端口 8455 已被占用

Manager 会在 journal 或"应用程序"事件日志中留下 cannot listen on 0.0.0.0:8455: … address already in use 并停止。查找占用端口的程序:

sudo ss -ltnp 'sport = :8455'
Get-NetTCPConnection -LocalPort 8455

停止该程序,或运行 meshserverwatch install --port <其他端口>,并在每个代理的 --manager URL 和防火墙规则中使用新端口。

如果使用了安装向导,也可以重新运行向导,在 Settings 页面更改端口。

没有 journald 的 Linux:回退到 syslog

没有 journal 时,代理会跟踪 /var/log/syslog 或 /var/log/messages。如果该文件不含优先级,status 会显示 no priority in file — errors matched by keyword:按 "error"、"failed"、"panic" 等词识别错误。若需要精确的优先级,让 rsyslog 把 *.err 连同 <%PRI%> 写入一个文件,并把 agent.json 中的 errorLogFile 设为该文件。如果两个文件都无法读取,则不采集错误事件,只采集指标,status 会如实说明。journald: only part of the journal is readable 表示服务用户不在 systemd-journal 组中:

sudo usermod -aG systemd-journal meshserverwatch-agent && sudo systemctl restart meshserverwatch-agent

Windows 事件日志来源

Manager 以来源 MeshServerWatch 写入"应用程序"日志;代理以来源 MeshServerWatch Agent 写入,并同时写 C:\ProgramData\MeshServerWatch\Agent\state\agent.log。代理从不把自己的日志行当作错误读回,因此它自己的消息不会变成告警。要端到端验证告警,可制造一个测试错误 —— eventcreate /t error /id 999 /l application /d "MeshServerWatch test" —— 约 30 秒内应出现在 Alerts 标签页。

"clock is … ahead of the Manager"

这台服务器的时钟与 Manager 相差超过 5 分钟。代理会把时间戳调整到 Manager 的时钟以免上报被拒,每天发送一次 agent-clock-skew 警告,status 也会提示。请修复时间同步(NTP)。

仍然无法解决

请写信至 support@meshwatch.app,附上版本(meshserverwatch version、meshserverwatch-agent version)、操作系统,以及令牌保持遮盖状态的 meshserverwatch-agent test 输出。首次回复在两个工作日内,周一至周五。