Docs

故障排查

看到某条提示是什么意思、该怎么办:安装、面板、被控、邮件、监控、访问统计、漏洞、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) · 无法从主控取得钥匙:……被控要先注册好、能连上主控,见被控不上报。

面板

面板打不开

  1. 主控在运行吗?执行 sudo systemctl status 3rmonitor-master。如果没有运行,日志(journalctl -u 3rmonitor-master -n 50)会说明原因,例如端口已被占用,或者读不了证书文件。
  2. 端口放行了吗?安装脚本会在 ufw 或 firewalld 中放行端口,但云服务商往往在服务器前面还有自己的防火墙(安全组)。在那里也放行 8899 端口(或你设置的端口)。
  3. 是不是只监听了 127.0.0.1?如果 /etc/3rmonitor/master.conf 中的 listen 是 127.0.0.1:8899,面板只能通过反向代理(你的域名)访问,不能用 IP 访问。
  4. 通过域名访问时:检查 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),或者删掉它。
被控没有上报这个服务……刚添加的必须运行的服务:等几次上报。一直这样的话,核对名字。

告警与邮件

收不到告警邮件

  1. 打开 系统 → 最近邮件:每封邮件都显示是已发送、重试中还是已放弃,以及错误信息。
  2. 发一封测试邮件:设置 → SMTP 发信 → 发送测试邮件,或者在主控上执行 sudo 3rmonitor mail-test --to you@example.com。
  3. 常见原因:
    • 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:…… 或 403API 密钥错误、过期或被封,或者你的账号不能用这个模型。重新粘贴密钥,并到服务商那里检查。
模型接口返回 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

获取帮助

如果本页和常见问题都没能解决:

  1. 升级到最新版本(系统 → 软件更新):问题可能已经修好了。
  2. 发邮件到 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,不要发到普通地址。见报告安全问题。

本页目录