故障排查
看到某条提示是什么意思、该怎么办:安装、面板、被控、邮件、监控、访问统计、漏洞、AI、通行密钥和更新。
在本页搜索你看到的那条提示的原文(Ctrl + F,Mac 上是 ⌘ + F):大多数条目都是从面板、邮件、安装脚本或日志里的提示出发的。一般性的问题见常见问题。这里都没能解决的话,见获取帮助。
日志(journalctl)始终是英文;面板、邮件、安装脚本和 3rmonitor 命令里的提示,有翻译的会按你的语言显示。
先检查这些
下面这些命令能回答大多数问题。在相关的服务器上执行:
3rmonitor status # 安装模式与守护进程状态
3rmonitor version # 已安装的版本
journalctl -u 3rmonitor-master -n 50 # 主控日志的最后几行(在主控上)
journalctl -u 3rmonitor-agent -n 50 # 被控日志的最后几行(在被控服务器上)
journalctl -u 3rmonitor-helper -n 50 # 被控的 root 助手日志的最后几行
sudo 3rmonitor agent --test # 被控上报一次并显示结果提示会出现在这些地方:
| 位置 | 能看到什么 |
|---|---|
| 面板右下角弹出的简短提示 | 你刚做的操作的结果:没被接受的设置、失败的测试 |
| 服务器详情页,以及总览上它的卡片状态(鼠标停在上面) | 正在进行的告警,以及它的被控是怎样运行的(系统 标签页 → 被控) |
| 系统 | 主控自己的状态:被控程序包、IP 国家库、软件更新,以及带错误信息的 最近邮件 |
| AI 分析 → 值守 | AI 能做的事受限的服务器,以及原因 |
| 被控和助手的日志 | 被控为什么上报不了、更新不了或者执行不了黑白名单 |
很多问题在新版本里已经修好了:先看看 系统 → 软件更新。
安装
安装命令执行失败
“下载失败:请确认能访问主控、密钥正确,且主控是用完整发布包安装的”表示以下三种情况之一:
- 这台服务器访问不到面板地址(用
curl -I测试),或者 设置 → 常规 中的 面板对外地址 是这台服务器访问不到的地址(例如另一个网络里的内网 IP); - 密钥或绑定密钥已经失效:从 服务器 页重新复制命令;
- 主控上没有被控程序包。这时 服务器 页面会提示“主控的 dist 目录里没有被控程序包”。请用完整的发布包重新安装主控:在解压后的发布包目录中执行
sudo bash install.sh upgrade。
想知道是哪一种,自己试一下下载:curl -v "主控地址/dl/SHA256SUMS?t=密钥"。返回 401 是密钥不对;404 是主控上没有被控程序包。
安装脚本的其他提示(✗ 表示停止或失败,! 是警告;两种都会在最后的汇总里再列一次):
| 看到的提示 | 怎么办 |
|---|---|
| 请用 root 运行:sudo bash install.sh | 用 sudo 运行。用 curl 时:curl … | sudo bash -s -- agent …。 |
| 需要 systemd | 这台服务器没有 systemd,例如不带 systemd 的容器,或者用 OpenRC 的系统。请换用有 systemd 的服务器或虚拟机。 |
| 不支持的 CPU 架构 | 只支持 x86_64、arm64、armv7 和 386。 |
| 请指定模式:install.sh agent|master|both|upgrade|uninstall | 没有终端可以显示菜单(cloud-init、脚本、curl | bash)。请指定模式:bash -s -- agent …。 |
| 缺少 --master 主控地址 · 缺少 --token 或 --enroll | 没有终端就没法询问:请在命令行里给出。 |
curl: (60) SSL certificate problem | 主控用的是自签名证书。给 curl 加 -k,并在命令里加 --insecure,见主控使用自签名证书。 |
| 需要 curl 或 wget | 安装 curl:apt install curl 或 dnf install curl。 |
| ……校验失败(文件可能损坏) · 下载的程序校验失败 | 文件不完整或损坏了(复制中断、经过代理、两个版本的文件混在一起)。重新下载并解压发布包;被控的话,重新执行一次命令。 |
| 下载校验文件失败 | 主控的 dist 里没有 SHA256SUMS:请用完整的发布包升级主控。 |
| 找不到 3rmonitor-linux-…:请在发布包目录里运行本脚本 | 在主控上用 master、both 和 upgrade 需要完整的发布包,不能只有 install.sh。解压 3rmonitor-X.Y.Z.tar.gz,在那个目录里运行。 |
| ……无法在这台机器上运行(架构 …) | 程序启动不了:文件损坏,或者 /tmp 不允许运行程序(noexec)。试试 sudo env TMPDIR=/var/tmp bash install.sh …。 |
| 初始化主控失败 | 原因印在它上面一行,例如“密码至少 8 位”。 |
| 3rmonitor-master 没有正常启动 | journalctl -u 3rmonitor-master -n 50 会写原因。最常见的是 “address already in use”:端口被别的程序占用了,用 --port 换一个。 |
| 写入被控配置失败 | 你在发布包的菜单里选了 1)被控端,它不会询问主控地址和密钥。改为在发布包目录里执行 sudo bash install.sh agent --master 主控地址 --token 密钥。 |
| 测试上报失败:…… 和 守护进程会自动重试…… | 被控已经装好,但还没能上报。原因写在“失败:”后面,见被控不上报。 |
| 没能以普通用户运行被控:……;先以 root 运行 | 被控能工作,但 AI 不会在这台服务器上执行任何操作。按显示的原因处理(例如没有 useradd,或者助手没启动:journalctl -u 3rmonitor-helper),再执行 sudo 3rmonitor agent secure。 |
| 没有固定钥匙:…… | 命令里的指纹和主控现在的对不上了:复制命令以后又添加或撤销了通行密钥,或者主控重装过。在这台服务器上执行 sudo 3rmonitor approvers trust 并核对指纹。 |
| Nginx 配置测试失败 · Apache 配置测试失败 | Web 服务器原来的配置就有错误。执行 nginx -t 或 apachectl -t,改好以后带 --domain 再运行一次安装脚本。 |
| 没有找到 Nginx 或 Apache,跳过反向代理 | --domain 需要这台服务器上有 Nginx 或 Apache。装一个,或者用 http://IP:8899/ 打开面板。 |
| 无法安装 certbot | 在 AlmaLinux、Rocky 和 RHEL 上,certbot 来自 EPEL:dnf install epel-release,再执行提示里的 certbot 命令。 |
| 申请证书失败 | 域名要解析到这台服务器,80 端口要能从外网访问。经过 Cloudflare 时,申请证书期间先把记录改成“仅 DNS”。 |
| 无法启用 3rmonitor-update.path | 一键更新用不了。看一下 systemctl status 3rmonitor-update.path,再执行一次 sudo bash install.sh upgrade。 |
| 这台机器不支持主控的额外隔离…… | 只是提示:安装脚本去掉了主控的 systemd 隔离,主控照原来的方式运行。 |
sudo 提示 command not found
在 AlmaLinux、Rocky、RHEL 和 CentOS 上,sudo 只搜索 /usr/sbin 和 /usr/bin。1.1.1 之前 3rmonitor 命令只在 /usr/local/bin 里,所以 sudo 3rmonitor … 会回答 sudo: 3rmonitor: command not found。从 1.1.1 起命令也链接到了 /usr/bin:升级以后,服务器会自己加上这个链接。在那之前可以:
- 用
sudo -i进入 root 终端,在里面不加sudo执行命令;或者 - 写完整路径:
sudo /usr/local/bin/3rmonitor status。
命令行
命令提示“Error”
大多数 3rmonitor 命令需要 root。不加 sudo 时,有的会失败,有的给出的结果会让人误解:
| 看到的提示 | 怎么办 |
|---|---|
读取配置 … 失败、permission denied、请以 root 执行 | 用 sudo 执行。主控的命令(user、server、mail-test、init)只能在主控上用。 |
approvers list 说没有信任任何钥匙,firewall status 说没有规则 | 不加 sudo 读不到。请用 sudo 执行。 |
| 密码至少 8 位 · 用户名不能为空,不能含空格或特殊符号,最长 64 位 · 用户名已存在 | 换一个更长的密码、更简单的名字;已有的账号用 sudo 3rmonitor user passwd 用户名。 |
| 请填写收件人 | mail-test 需要 --to you@example.com,或者在 设置 里填 告警收件人。 |
| 发送失败:…… | 见收不到告警邮件。 |
Reporting too often(agent --test 时) | 正在运行的守护进程刚上报过。过一秒再执行一次。每次都这样的话,是另一台机器在用同一个密钥上报,见两台服务器显示同样的数据。 |
3rmonitor status 不显示助手:用 systemctl status 3rmonitor-helper 查看。
“approvers trust”没有信任钥匙
| 看到的提示 | 怎么办 |
|---|---|
| 还没有管理员通行密钥(先在面板 设置 → 通行密钥 里添加,再执行一次)。 | 只信任了主控的钥匙。在 设置 → 通行密钥 添加第一把通行密钥以后,在每台服务器上(包括主控 + 被控)再执行一次 sudo 3rmonitor approvers trust。 |
| 主控的签名钥匙和安装命令里的指纹不一致:没有信任任何钥匙 | 主控重装过,或者命令是另一个主控的。不带指纹执行 sudo 3rmonitor approvers trust,和 设置 → 通行密钥 → 要核对的指纹 对照。 |
| 管理员的通行密钥和安装命令里的指纹不一致:没有信任任何钥匙 | 复制命令以后又添加或撤销了通行密钥。重新复制命令,或者不带指纹执行 approvers trust。 |
| 没有信任任何钥匙 | 回答的不是 yes。没有终端时,用 --yes 或指纹。 |
| 这台服务器还没有注册(配置里没有 token) · 无法从主控取得钥匙:…… | 被控要先注册好、能连上主控,见被控不上报。 |
面板
面板打不开
- 主控在运行吗?执行
sudo systemctl status 3rmonitor-master。如果没有运行,日志(journalctl -u 3rmonitor-master -n 50)会说明原因,例如端口已被占用,或者读不了证书文件。 - 端口放行了吗?安装脚本会在 ufw 或 firewalld 中放行端口,但云服务商往往在服务器前面还有自己的防火墙(安全组)。在那里也放行 8899 端口(或你设置的端口)。
- 是不是只监听了 127.0.0.1?如果
/etc/3rmonitor/master.conf中的listen是127.0.0.1:8899,面板只能通过反向代理(你的域名)访问,不能用 IP 访问。 - 通过域名访问时:检查 Nginx 或 Apache 是否在运行,以及域名是否解析到了主控。
页面显示“页面没能加载出来”
浏览器没能从主控取到这个页面的数据:连接断了、主控重启了(例如正在更新),或者中间的反向代理出了问题。角落里弹出的提示写着具体错误。点 重试。一直这样的话,检查主控是否在运行并看它的日志;经过 Nginx 或 Apache 时,也看看代理的错误日志。
忘记密码
在主控上执行 sudo 3rmonitor user passwd 用户名,然后输入新密码。sudo 3rmonitor user list 可以查看用户名。
15 分钟内同一用户失败超过 5 次,或同一 IP 失败超过 10 次,登录会被锁定:“登录失败次数过多,请 15 分钟后再试”。在这期间,密码正确也会被拒绝。等一等,或者重启主控(sudo systemctl restart 3rmonitor-master),计数就清零了。
反向代理不在同一台机器、不在内网、也不是 Cloudflare 时,所有访客看起来都来自代理的 IP,几次失败就会把所有人都锁在外面。如果面板只能通过这个代理访问,在 master.conf 里设置 trust_proxy = true(见配置文件)。
面板里的其他提示
| 看到的提示 | 怎么办 |
|---|---|
| 用户名或密码错误 | 在主控上重设密码:sudo 3rmonitor user passwd 用户名 |
| 请先登录 | 会话结束了:7 天没用、满 30 天,或者改过密码。重新登录。 |
| 页面已过期,请刷新后重试 | 这个页面是在你重新登录之前打开的。刷新一下。 |
| 无法连接主控(网络错误) | 浏览器和主控的连接断了,见面板打不开。 |
| 只能在服务器本机创建第一个账号…… | 主控初始化时没有创建管理员。在服务器上创建:sudo 3rmonitor user add admin。 |
| … 必须是数字、面板地址必须以 http:// 或 https:// 开头、时区无效……、邮箱格式不正确:…… | 设置没被接受,保留原来的值。按提示改正那个字段。 |
| 分享链接无效、已停用或已过期 | 新建一个分享链接,或者重新启用原来的。 |
登录后又回到登录页
1.0.4 之前的版本中,面板地址是 https:// 但页面用 http:// 打开(例如用 IP 访问)时会出现这个问题。请升级到最新版本。另外检查浏览器是否允许面板地址使用 Cookie。
浏览器提示“不安全”
面板是通过 http:// 提供的。请配置 HTTPS。
被控与服务器
被控不上报
在被控服务器上执行:
sudo 3rmonitor agent --test它会上报一次并显示结果。然后对照下表:
| 看到的结果 | 处理方法 |
|---|---|
| Invalid token, or this server has been deleted(密钥无效,或这台服务器已被删除) | 密钥被重新生成,或者服务器在面板中被删除了。在 服务器 → ⋯ → 安装命令 → 已经装过被控?只想改绑到这台 中复制命令,或者重新登记这台服务器。被控日志里是 “The master rejected the token (HTTP 401)…”。 |
| 超时、连接被拒绝、域名解析失败 | 这台服务器连不上主控。用 curl -I 主控地址 测试。检查 /etc/3rmonitor/agent.conf 中的 master_url、主控的防火墙(以及服务商的防火墙),并确认主控没有只监听 127.0.0.1。 |
证书错误(x509: certificate signed by unknown authority) | 主控使用自签名证书或 Cloudflare 源服务器证书。请使用受信任的证书、使用经过 Cloudflare 的地址,或者在 agent.conf 中设置 insecure = true 并重启被控。 |
| 主控返回了无法识别的内容(HTTP …) | 这个地址有回应,但不是主控:地址或端口写错了、反向代理的错误页面(502、504),或者防火墙 / Cloudflare 的质询。HTTP 405 通常表示 master_url 写的是 http://,而网站会跳转到 https://:改成 https:// 地址。在 WAF 里放行 /api/agent/。 |
| “The master rejected the token (HTTP 403)”,原因是一个网页 | WAF 或 Cloudflare 在被控到达主控之前就拦住了它。放行被控的 IP,或者 /api/agent/。 |
| Reporting too often | 同一个密钥的两次上报间隔不到一秒。再执行一次 agent --test;一直这样的话,见两台服务器显示同样的数据。 |
| 配置里缺少 master_url(主控地址) · master_url 无效 | 重新绑定:sudo 3rmonitor bind --master 'https://monitor.example.com' --token '密钥' |
| 主控拒绝绑定:Invalid enrollment key… | 绑定密钥被更换或停用了。从 服务器 → 一条命令接入多台服务器 复制当前的命令。 |
| 测试成功,但面板里仍显示离线 | 检查守护进程是否在运行:sudo systemctl status 3rmonitor-agent,用 sudo systemctl restart 3rmonitor-agent 重启。 |
被控日志(journalctl -u 3rmonitor-agent)里的 “Report failed (attempt N): …” 写着原因;第 1 次失败时写一次,之后每 20 次写一次。“connection refused” 表示那个地址和端口上没有程序在监听,或者被防火墙拒绝;“i/o timeout” 或 “Client.Timeout exceeded” 表示防火墙把连接悄悄丢掉了。出现 “Connection to the master restored” 就说明恢复了。
不上报、只查看被控采集到的内容:sudo 3rmonitor agent --print。
所有服务器同时显示离线
如果 3 台以上服务器在同一时刻停止上报,你会收到一封“全部 N 台服务器同时停止上报”的告警。服务器本身几乎肯定没事,是主控收不到上报。请检查主控的网络、防火墙(以及服务商的防火墙)、反向代理和证书,以及面板地址或 DNS 记录是否改过。
两台服务器显示同样的数据
面板上一台服务器的数据在两台机器之间来回跳,或者日志里有 “Reporting too often”:两台机器在用同一个密钥。这是克隆服务器(虚拟机模板或快照)时连同 /etc/3rmonitor/agent.conf 一起复制了。把复制出来的那台登记成一台新服务器(服务器 → + 添加服务器),然后在它上面执行面板给出的 bind 命令:
sudo 3rmonitor bind --master 'https://monitor.example.com' --token '新密钥'做模板之前先卸载被控,或者让每台机器启动时用绑定密钥安装(例如用 cloud-init)。
服务器页面显示“3R Monitor 助手没有运行”
被控以普通用户运行,需要 root 的事情交给 3rmonitor-helper 去做。助手不在时,被控照样监控,但 AI、黑白名单和一部分数据(端口对应的进程、MySQL 状态)在这台服务器上用不了。
sudo systemctl restart 3rmonitor-helper
journalctl -u 3rmonitor-helper -n 50如果启动不了,或者页面上显示“被控仍以 root 运行……”或“没能把被控改成普通用户运行:……”,执行 sudo 3rmonitor agent secure 并看它的回答:例如 “neither useradd nor adduser is available”(安装 passwd 或 shadow-utils 软件包),或者 “the helper did not start (…)”。需要 systemd。
被控一直停留在旧版本
被控会自动更新到主控的版本。某个被控没有更新时:
- 它连不上主控(见被控不上报);
- 它的
agent.conf中设置了auto_update = false; - 从 1.1.1 起,被控只安装 3R Soft 签过名的程序。如果 系统 → 被控程序包 显示 没有签名,说明主控不是用官方发布包安装或升级的:用官方发布包执行
sudo bash install.sh upgrade。这时被控日志会写 “Automatic update failed: the master has no signature for the agent packages…” 或 “…are not signed for …”。
也可以用发布包手动升级被控:在发布包目录里执行 sudo bash install.sh upgrade。
流量用量看起来不对
- 从最近某天才开始有数据:主控升级到 1.1.1 那天才开始统计(“从某天开始统计”)。
- “被控没有单独上报 … 的流量”:你在 服务器 → 设置 → 流量用量 里选了一块网卡,但被控早于 1.1.1,或者这块网卡已经不在了,所以按全部网卡计算。等被控更新,或者换一块网卡。
- 和服务商的数字对不上:见流量用量。只算服务商计费的那块网卡,选对额度的计算方式(下行、上行、合计或较大的一方),另外这里 1 GB 是 1024³ 字节。
- 少了某一天:那天被控没有上报(服务器或被控停了)。那段时间的流量会算在它重新上报的那一天,除非中间服务器重启过。
服务器在地图上的位置不对
在 服务器 → 设置 → 地图位置 中设置它的位置。主控自己的位置在 设置 → 地图 中设置。见服务器位置。
MySQL / MariaDB 显示“无法登录数据库”
被控无法登录数据库读取运行状态。见被控的 MySQL 凭据。另外:
- “未找到 mysql 客户端,无法读取运行状态”:在那台服务器上安装
mysql或mariadb客户端。 - 在 Debian 和 Ubuntu 上,只有助手在运行时才会用
/etc/mysql/debian.cnf,见助手没有运行。 - “Redis 设置了密码,未读取运行状态”:只是提示,Redis 本身仍作为服务被监控。
看不懂的服务告警
| 看到的提示 | 怎么办 |
|---|---|
| 服务已设为开机启动,但当前状态 … | 一个 systemd 服务设成了开机启动,但现在没有运行。启动它(sudo systemctl start 服务名),不需要的话取消开机启动(sudo systemctl disable 服务名),或者把它加到服务器设置里的 忽略的服务。 |
| 系统里找不到这个服务 | 必须运行的服务 里的某个服务在那台服务器上不存在。核对名字(systemctl list-units --type=service),或者删掉它。 |
| 被控没有上报这个服务…… | 刚添加的必须运行的服务:等几次上报。一直这样的话,核对名字。 |
告警与邮件
收不到告警邮件
- 打开 系统 → 最近邮件:每封邮件都显示是已发送、重试中还是已放弃,以及错误信息。
- 发一封测试邮件:设置 → SMTP 发信 → 发送测试邮件,或者在主控上执行
sudo 3rmonitor mail-test --to you@example.com。 - 常见原因:
- Gmail 需要使用应用专用密码,而不是平时的密码。
- 很多云服务商屏蔽了出站 25 端口。请使用 465(SSL)或 587(STARTTLS)。
- 加密方式与端口不匹配:SSL 对应 465,STARTTLS 对应 587。
- 服务器在设置中关闭了 启用告警,或者在 设置 → 告警通知 → 以下情况发邮件通知 中关闭了这类告警。
- 邮件进了垃圾箱。把 发件人地址 设为 SMTP 服务器允许代发的域名下的地址。
- 系统 页面显示 告警收件人:未设置:没有收件人就什么都不发,只有主控日志里会写一行。
失败邮件的错误,在测试结果或 系统 → 最近邮件 里:
| 看到的提示 | 怎么办 |
|---|---|
| 未配置 SMTP 服务器 · 未配置发件人地址 | 填好 设置 → SMTP 发信:服务器,以及 用户名 或 发件人地址。 |
| 连接 … 失败:… i/o timeout | 服务商屏蔽了这个端口,或者服务器地址、端口写错了。试试 587 或 465;很多云服务商屏蔽 25。 |
tls: first record does not look like a TLS handshake | 在 STARTTLS 端口上选了 SSL(465)。改用 STARTTLS(587)。 |
| SMTP 握手失败:……(等了很久) | 在 465 端口上选了 STARTTLS 或 不加密。改用 SSL(465)。 |
x509: certificate is valid for …, not … | SMTP 服务器的名称要和它证书上的一致,例如 smtp.gmail.com,不要写 IP 或别名。 |
| 服务器不支持 STARTTLS · 服务器不支持 AUTH 认证 | 按服务商的说明选择加密方式。很多服务器只在加密以后才接受密码:用 SSL 或 STARTTLS,不要用 不加密。 |
| SMTP 认证失败:535 … | 用户名或密码错误。Gmail 和 Microsoft 365 需要应用专用密码,或者给邮箱开启 SMTP 认证。 |
| 发件人被拒绝:…… | 这个账号不能用那个 发件人地址 发信。改用账号自己的地址。 |
| 收件人 … 被拒绝:…… | SMTP 服务器拒绝这个收件人:检查地址,或者服务商的发信限制。 |
发送失败的邮件最多重试 12 次,间隔越来越长(总共大约 6 小时),之后标为 放弃。
告警邮件来得晚
这通常是有意为之:
- 告警会合并发送:第一封在 1 分钟后发出,之后每 5 分钟最多一封。把 设置 → 告警通知 → 合并告警邮件(分钟) 设为
0,每条告警都会立即发送。 - 开启 AI 分析后,关于新故障的邮件最多会再等两分钟左右,等待可能原因的分析。
- 超过 每小时最多发几封邮件(默认 10 封)后,邮件会在发件队列里等待。系统 页面显示排队的数量。
AI 发现了问题,却没发邮件给我
AI 只把需要你处理的事发邮件,而且每天最多 AI 分析 → 设置 → AI 邮件 → 每天最多几封(默认 5 封)。每次处理的时间线上都写明发没发邮件、为什么没发:
| 显示 | 含义 |
|---|---|
| “没有发邮件:AI 判断现在不需要通知你” | 已经恢复、是误报,或者暂时谁也处理不了。结果在面板里。 |
| “没有发邮件:今天 AI 的 N 封邮件已经用完” | 调大 每天最多几封,或者多看看 AI 分析 → 值守 |
| “没有发邮件:AI 邮件已关闭” | 每天最多几封 是 0 |
你交给 AI 的任务从来不发邮件。系统告警(服务器、服务、监控、证书、磁盘、流量额度)不受这个影响。见 AI 发的邮件。
网站监控
网站监控显示故障,但网站正常
检测是从主控发起的,所以关键是主控看到了什么。请在主控上自己试一下:
curl -sv -o /dev/null https://example.com/health- HTTP 403,可能被 Cloudflare 质询拦截:在 Cloudflare 或你的 WAF 中放行主控的 IP。
- 期望 200 却得到 HTTP 301/302:默认会跟随重定向;如果勾选了 不跟随重定向,把这个状态码加到 期望状态码 中(例如
200,301)。 - “页面中没有找到……”:关键字区分大小写,而且只读取响应的前 2 MB。
- 超时:如果接口本身很慢,调大 超时(秒);否则检查主控能否访问它(防火墙、IPv6、DNS)。
- 证书错误:证书已过期或证书链不完整。自签名证书请勾选 不校验证书。
在监控项表单里点 测试 可以看到确切的信息。各条信息的含义:
| 看到的提示 | 含义 |
|---|---|
| HTTP 503(期望 200-399) | 网站返回了别的状态码。如果这个地址返回这个状态码是正常的,改 期望状态码。 |
| 超时(N 秒内无响应) | 超时时间(默认 10 秒)内没有回应 |
| 域名解析失败:…… | 主控解析不了这个域名。检查域名,以及主控的 DNS(resolvectl status 或 /etc/resolv.conf)。 |
| 连接被拒绝(端口未监听或被防火墙拦截) | 那个端口上没有程序在监听,或者防火墙拒绝了主控 |
| 网络不可达 | 主控没有到那里的路由;常见于主控没有 IPv6,却要检测 IPv6 地址 |
| 证书错误:…… | 证书已过期、不是这个域名的,或者证书链不完整 |
| 重定向次数过多 | 超过 10 次重定向,通常是 http ↔ https 来回跳 |
| HTTP 200,但返回的不是有效 JSON · JSON 中没有 … · … = …(期望 …) | JSON 检查没通过:核对字段路径和期望值 |
| 响应慢:N ms(阈值 N ms) | 只是警告:比慢响应阈值慢 |
| 失败 1/3,确认中 | 有一次检测失败,判定故障之前会再检测 |
Ping 监控项一直显示故障
Ping 使用 ICMP,很多网络和云服务商会屏蔽它。如果主控和目标主机之间屏蔽了 ICMP,请改用 TCP 端口 检测(例如 主机:22 或 主机:443)。主控上还需要有 ping 命令;没有时会报告“系统里没有 ping 命令”。
每次检测只发一个包,ping 的任何失败都显示为“无响应(丢包)”,包括主控没有权限发送 ICMP 的情况。在主控上用 ping -c 1 主机 试一下。
访问统计与黑白名单
没有访问统计数据
- 被控会读取常见位置的 Apache 和 Nginx 访问日志。如果你的日志在其他位置,在
/etc/3rmonitor/agent.conf中设置access_logs(例如access_logs = /data/logs/*.access.log),然后重启被控。 - 从 1.1.0 起,被控以非特权用户
3rmonitor-agent运行,安装脚本会用setfacl给它读取日志的权限。如果缺少acl软件包,被控日志会显示 “The agent (user 3rmonitor-agent) cannot read the access logs in …”(被控读不了访问日志):安装acl,然后再执行一次sudo 3rmonitor agent secure。把access_logs改到新位置之后也要这样做。 access_logs会替换常见位置,而不是追加:要列出所有需要的位置。- 轮转和压缩过的日志(
access.log.1、access_log-20261020、.gz)以及错误日志会有意跳过。 access_logs = off会关闭统计。- 国家信息需要 IP 国家库。系统 页面显示它是否已加载以及最近一次更新的时间。
- 网站在 Cloudflare 后面时,在源站恢复真实 IP 之前,所有请求都来自 Cloudflare。见 Cloudflare 使用提示。
黑名单没有生效
| 看到的提示 | 怎么办 |
|---|---|
| “还没有服务器开启‘防火墙拦截’:规则会保存,但不会生效” | 给每台服务器开启拦截:服务器 → 设置 → 在这台服务器上用防火墙执行黑白名单。 |
| 没有找到 nftables(nft)或 ipset + iptables…… | 安装其中一个,例如 apt install nftables 或 dnf install nftables。 |
| 已在本机用 3rmonitor firewall off 停用 | 用 sudo 3rmonitor firewall on 重新开启。 |
| 助手没有运行 | 见助手没有运行。 |
nft 报 exit status 1: … | 这台服务器上 nftables 用不了,例如某些内核不允许的容器(LXC)。这台服务器请在服务商的防火墙或 Cloudflare 上拦截。 |
| 网站在 Cloudflare 后面 | 服务器只看得到 Cloudflare 的 IP:请在 Cloudflare 上拦截。见 Cloudflare 使用提示。 |
添加规则时,面板会拒绝有害的规则:
| 看到的提示 | 原因 |
|---|---|
| 不能拉黑内网、本机或组播地址 | 这些是你自己的网络 |
| 网段太大(IPv4 至少 /8,IPv6 至少 /16)…… | 要拦截整个国家请用国家规则 |
| 这是 Cloudflare 的网段…… | 拦截它会拦掉所有经过 Cloudflare 的访客 |
| 这会拦截你自己当前的 IP(…) · 你当前的 IP 就在这个国家…… | 防止把你自己锁在外面 |
| … 永远不能被封禁:…… | 这个地址在白名单里、是设置里的受保护地址、是你的服务器、是主控,或者有管理员从它登录过 |
被黑名单锁在外面
在服务器的控制台上(如果 SSH 被拦截,使用服务商的网页控制台)执行:
sudo 3rmonitor firewall off拦截规则立即清除。在 访问统计 → 黑白名单 中修正规则,然后执行 sudo 3rmonitor firewall on。以后为了避免这种情况,把 黑名单只拦截这些端口 设为 80,443。
从 1.1.1 起,国家规则和大于 /24 的网段永远不拦 SSH 端口,所以只有针对你自己 IP 或它所在小网段的规则,才可能让你连不上 SSH。
被拦截的国家还能连 SSH
这是 1.1.1 起有意的设计:国家规则和大网段拦截除 SSH 以外的所有端口,保证你总能连回来。要不让某个攻击者连 SSH,拦截它的单个 IP 或小网段(/24 及以内)。见防止把自己锁在外面。
漏洞
服务器没有显示漏洞,或者没有被检查
安全 页面顶部会写原因:
| 看到的提示 | 怎么办 |
|---|---|
| 漏洞检查已关闭(设置 → 漏洞检查) | 在 设置 → 漏洞检查 中开启 |
| “还没收到软件清单:……” | 被控上线几分钟后会上传软件清单。等一等,或者点 立即检查。 |
| “这些服务器的被控版本太旧,不会上传软件清单……” | 升级主控;被控会自动更新 |
| “这些服务器的系统暂不支持按发行版安全公告检查系统软件包……” | 系统软件包只在 Debian、Ubuntu、AlmaLinux、Rocky Linux 和 Alpine 上检查(不包括 RHEL、CentOS、Oracle Linux、Amazon Linux、Fedora、SUSE 和 Debian testing)。主要服务和项目依赖仍然会检查。 |
| “主控本机没有装被控……” | 在主控上也装被控(主控 + 被控) |
| “没有找到 composer.lock……” | 在 服务器 → 设置 → 项目目录 中添加项目目录。被控以普通用户 3rmonitor-agent 读取这些文件,所以它要有读取权限。 |
数据来源和匹配方式 显示每个来源最近一次更新的时间。那里显示“失败:……”,说明主控连不上它:主控需要能通过 HTTPS 访问 api.osv.dev、services.nvd.nist.gov、www.cisa.gov、endoflife.date、cveawg.mitre.org、raw.githubusercontent.com 和 github.com。“NVD: HTTP 403” 或 “429” 表示 NVD 在限制请求:在 设置 → 漏洞检查 中填一个免费的 NVD API 密钥。
修复过的漏洞还在列表里
- 软件变化时被控会上传新的软件清单,每 6 小时还会全部重新检查一次。在 安全 页面点 立即检查 可以马上检查。
- 要升级的是“实际安装:……”里的软件包,而不是标题里的源码包名:例如
perl-base,而不是perl。 - “什么都没有升级:配置的软件源里没有更新的版本……”:发行版还没有发布修复,或者服务器的软件源过时了。勾选 隐藏暂无修复版本的 可以隐藏这类漏洞,或者 忽略 这一条并写明原因。
- 服务要重启才会用上新版本时,运行中的可能还是旧版本:重启它。
AI
AI 不在某台服务器上执行任何操作
AI 分析 → 值守 → AI 能做的事受限的服务器,以及服务器 系统 标签页中的 被控 一行,会说明原因。按顺序检查:
| 原因 | 处理方法 |
|---|---|
| AI 操作权限 是“关闭:不在服务器上执行任何东西”(例如点过 停止所有 AI 操作 之后) | 在 AI 分析 → 设置 中选择其他级别 |
| 这台服务器被排除了:不允许 AI 在这台服务器上执行任何东西 | 在 服务器 → 设置 中取消勾选 |
| root 在服务器上关闭了它 | sudo 3rmonitor ai status 查看;sudo 3rmonitor ai on 重新开启 |
| 被控仍以 root 运行,或者它的助手没有运行 | 在服务器上执行 sudo 3rmonitor agent secure,并查看 journalctl -u 3rmonitor-helper -n 50。需要 systemd。 |
| 被控早于 1.1.0 | 升级主控;被控会自动更新 |
| 只执行诊断,从不执行修复 | 这台服务器还不信任这些钥匙:在上面执行 sudo 3rmonitor approvers trust。见通行密钥。 |
| “这台服务器没有沙盒” | 沙盒需要 systemd 236 或更新版本,以及 D-Bus。在那里只执行固定的检查。 |
模型测试失败,或者报告生成失败
错误显示在 测试 的提示里、报告上(“报告生成失败:……”),或者处理记录里(“模型出错:……”):
| 看到的提示 | 怎么办 |
|---|---|
| 模型接口返回 HTTP 401:…… 或 403 | API 密钥错误、过期或被封,或者你的账号不能用这个模型。重新粘贴密钥,并到服务商那里检查。 |
| 模型接口返回 HTTP 404:…… | 接口地址 或 模型名称 不对。OpenAI 兼容的接口,地址通常以 /v1 结尾(例如 https://api.openai.com/v1):重新选一次 服务商 自动填上,模型名称用 获取列表 来选。 |
| 模型接口返回 HTTP 429:…… | 请求太多,或者账户余额不足。到服务商那里检查余额;请求会自动重试两次。 |
| 模型接口返回 HTTP 400:……,里面有 “context” 或 “length” | 内容超出了这个模型能处理的长度。换一个上下文更长的模型,或者把任务写得更具体。 |
| 模型接口返回的不是 JSON:…… | 这个地址指向的是网页或代理,不是接口 |
| 无法连接模型接口:…… | 主控连不上:DNS、防火墙或超时。在主控上用 curl -I 接口地址 测试。Ollama 必须运行在主控本机,地址是 http://127.0.0.1:11434/v1。 |
| 模型返回了空的回答 | 再试一次,或者换个模型。推理模型有时需要调大 最长回答(tokens)。 |
| 今天的 AI token 用量已达上限(N),明天恢复 AI 分析 | 在 AI 分析 → 设置 里调大 每日 token 上限,或者等到午夜(面板时区)。 |
| 请先开启 AI 分析并添加模型 | 在 AI 分析 → 设置 → + 添加模型 中添加 |
处理中途停止,或者 AI 只给出修复建议
| 看到的提示 | 含义 |
|---|---|
| “AI operations are limited to read-only diagnostics” | AI 操作权限 是 只允许诊断(默认):修复只作为建议列出。在 AI 分析 → 设置 中选 修复需要我批准 或 低风险修复自动执行。 |
| 审查员无法访问,需要人来决定 | 安全审查员的模型出错了,或者到了 token 上限。这个操作等你决定。 |
| 最近一小时已经做过 3 次 · 今天自动修复的次数已达上限(N) | 面板对自动修复的限制:这个操作改为等你批准。 |
| 没有完成就停止了(达到时间上限,或在面板里停止)。 · 已停止:一次处理的步数或 token 用量达到上限。 | 这次处理用完了时间、步数或 token。把任务写得更具体一些。 |
| 已停止:这次处理里被拒绝的操作太多,请管理员查看。 | 审查员或规则拒绝了 3 个操作,或者你驳回了 6 个。看看 AI 试图做什么。 |
| 模型出错(…),已换用 … | 模型出错一次,改用默认模型继续 |
| “The agent did not answer in time” | 服务器 10 分钟内没有执行这个操作:它没有上报,或者助手没有运行 |
服务器自己拒绝某个操作时,操作上会写原因:
| 看到的提示 | 含义 |
|---|---|
| 这台服务器上已关闭 AI 操作(3rmonitor ai off) · 这台服务器只允许只读诊断(3rmonitor ai read) | root 在服务器上做了限制。sudo 3rmonitor ai on 重新允许修复。 |
| 这个操作没有这台服务器信任的主控签名,或者在传送中被改过 | 主控重装过,或者迁移时没有用备份(签名钥匙换了)。在服务器上执行 sudo 3rmonitor approvers trust。 |
| 这台服务器还没有固定主控的签名钥匙和管理员的通行密钥…… | 在服务器上执行 sudo 3rmonitor approvers trust |
| 批准用的通行密钥不被这台服务器信任 | 服务器还没有信任这把通行密钥:在它上面执行 sudo 3rmonitor approvers trust |
| 批准已经过期 · 这个批准已经用过了…… | 一次批准只能用一次,并且要在一小时内。还需要的话重新批准。 |
| 高风险:只能由管理员亲自执行(…) · 被控拒绝执行:…… | 服务器自己的规则不允许。你同意的话,自己执行。 |
| 什么都没有升级:配置的软件源里没有更新的版本…… | 见修复过的漏洞还在列表里 |
修复被拒绝:“这台服务器上的限制”
从 1.1.1 起,每台服务器自己限制只经过 AI 审查员批准的修复:
- “这台服务器上的限制:这个修复最近 1 小时已经执行了 3 次”:同一个修复反复出现,说明原因在别处。看一下这次处理,自己把根本原因解决掉。
- “这台服务器上的限制:最近 24 小时已经自动修复了 N 次(agent.conf 里的 ai_auto_per_day)”:真的需要更多的话,调大那台服务器
agent.conf里的ai_auto_per_day,或者由你来批准这个修复:你批准的修复不受这个限制。
“这个对话已经关闭”
任务的对话在 AI 最后一次回复后 24 小时内可以接着进行。提示里写着关闭的原因(处理被停止了、到了上限、模型出错了……):请交给 AI 一个新任务。见接着对话。
通行密钥
无法添加通行密钥,或批准失败
- 通行密钥需要通过 HTTPS(或 localhost)打开面板:面板是
http://时,+ 添加通行密钥 按钮不可用。请用https://地址打开面板。见 HTTPS。 - “这个浏览器不支持通行密钥”或“不能注册通行密钥”:请使用较新的 Chrome、Edge、Safari 或 Firefox。
- “通行密钥请求被取消或超时”:重试,并在两分钟内确认。
- 通行密钥只能在创建它时所用的主机名下使用。请用同一个地址打开面板。
- 新的通行密钥会一直显示 等待签名,直到一位拥有已信任通行密钥的管理员确认它。
- “批准用的通行密钥不被这台服务器信任”:在那台服务器上执行
sudo 3rmonitor approvers trust。 - 一次批准的有效期为一小时。超过之后,这项操作会标为 已到期。
- “批准要用通行密钥签名。请先在 设置 → 通行密钥 里添加一把”:你还没有通行密钥。
- “请用通行密钥签名批准(请求已过期或操作有变化);请重试”:请求的有效期是 5 分钟。
- “请用你自己的、已被信任的通行密钥签名”:你用的通行密钥还在 等待签名,或者是别人的。
- “浏览器的回应和请求不一致”:打开面板用的地址不是它自己的地址。请用面板对外地址打开。
- “这把通行密钥已经注册过了”:这台设备已经有这个面板的通行密钥了。
- 添加第一把通行密钥以后,设置 → 通行密钥 显示“还没有信任:在服务器上执行 sudo 3rmonitor approvers trust 并核对指纹”:每台服务器都要信任它一次,包括你有通行密钥之前装好的服务器。
- 如果所有通行密钥都丢失了,见通行密钥。
服务器一直显示“正在取最新的记录……”
从 1.1.1 起,服务器几秒内就会用上新的通行密钥记录,期间 设置 → 通行密钥 会自己刷新。如果某台服务器一直停在这里,说明它的被控连不上主控,或者助手没有运行:在那台服务器上看一下 systemctl status 3rmonitor-helper 和 journalctl -u 3rmonitor-helper -n 50。
更新
更新下载了,但没有安装
从 1.1.1 起,你确认之前什么都不会装。系统 → 软件更新 上写着“x.y.z 已经下载并核对了签名,你确认以后才会安装。”:点 现在安装… 或 安装。“这个版本还没下载,请先下载”表示下载的文件不在了,或者又发布了更新的版本:再点一次 立即更新。
在面板里更新失败
系统 → 软件更新 卡片会显示错误和安装程序的输出。你随时可以用新的发布包执行 sudo bash install.sh upgrade 手动升级。
| 看到的提示 | 怎么办 |
|---|---|
| 无法连接更新服务器:…… · 更新服务器返回 HTTP … | 主控无法通过 HTTPS 访问 3rsoft.com.pa。检查它的出站连接,或者手动升级。 |
| 一键更新需要升级服务…… | 1.0.4 之前的安装,或者手动安装时没有装 3rmonitor-update.path:先手动升级一次。 |
| 升级服务没有启动,请检查:systemctl status 3rmonitor-update.path | 启动它:sudo systemctl enable --now 3rmonitor-update.path,然后再试一次更新。 |
| 下载失败:…… · 下载的安装包与签名的校验值不一致 | 下载中断了,或者在传输中被改过。再点一次 立即更新。 |
| 已经有一个更新正在进行 | 等它结束;卡片上显示进度 |
| install.sh upgrade 执行失败:…… | 安装程序输出 里有原因。处理好以后手动升级。 |
| … 不比已安装的 … 新 | 这个版本已经装好了 |
| 一键更新只支持 Linux | 手动升级 |
升级后主控起不来
从 1.1.1 起,install.sh 会让主控在更严格的 systemd 隔离里运行。少数不支持的系统(某些 LXC 容器)上,安装脚本会自动去掉它,并提示“这台机器不支持主控的额外隔离……”。如果主控还是起不来,看一下 journalctl -u 3rmonitor-master -n 50,并手动去掉隔离:
sudo rm -r /etc/systemd/system/3rmonitor-master.service.d
sudo systemctl daemon-reload && sudo systemctl restart 3rmonitor-master获取帮助
如果本页和常见问题都没能解决:
- 升级到最新版本(系统 → 软件更新):问题可能已经修好了。
- 发邮件到 info@3rsoft.com.pa。 在面板里点 系统 → 帮助与支持 → 遇到问题或 bug,会打开一封标题里带着你的版本号的邮件。
为了第一次回信就能解决,请写上:
-
你做了什么、期望看到什么、实际发生了什么,附上提示的原文或截图;
-
在相关服务器(主控或被控服务器)上执行这些命令的输出:
3rmonitor version 3rmonitor status cat /etc/os-release journalctl -u 3rmonitor-master -n 100 --no-pager # 在主控上 journalctl -u 3rmonitor-agent -n 100 --no-pager # 在被控服务器上 journalctl -u 3rmonitor-helper -n 100 --no-pager # 在被控服务器上 sudo 3rmonitor agent --test # 在被控服务器上 -
安装问题的话,安装脚本的完整输出。
不要发 agent.conf、master.conf、密钥、绑定密钥、密码或 API 密钥:3R Soft 不需要这些。复制的内容里如果有,请换成 …。
安全问题请私下报告到 security@3rsoft.com.pa,不要发到普通地址。见报告安全问题。