星辰监控新手使用指南
这份指南面向第一次部署服务器监控系统的用户。你不需要提前安装 PostgreSQL、Redis,也不需要手工建表或执行 SQL。按照本文顺序完成后,你将拥有一套可以登录、接入服务器、查看指标、发送告警并自动备份和更新的监控系统。
如果你已经完成安装,只想查某项功能,可以直接跳到控制台功能怎么用或日常运维速查。页面内也可以点击右上角问号进入“使用指南”,按功能名称搜索操作步骤。
1. 先了解三个概念
1.1 总控服务器
总控服务器运行 Web 控制台、服务端、安装与更新服务、PostgreSQL 和 Redis。管理员在浏览器里访问它,所有被监控服务器也向它上报数据。
总控通过 Docker Compose 运行以下组件:
web:浏览器页面和反向代理入口,默认端口为18080。server:处理登录、设备、指标、告警和通知。setup:负责首次配置、备份、恢复和总控更新。postgres:保存账号、配置、设备、指标和告警。redis:缓存和实时消息。controller-agent:仅 Linux 总控默认启用,用于采集总控宿主机指标。
PostgreSQL、Redis 和服务端端口默认只在 Docker 内网开放。公网只应开放 Web 入口。
1.2 被监控服务器和 Agent
每台被监控服务器安装一个 Agent。Agent 采集 CPU、内存、磁盘、网络、进程、端口和可选的容器信息,然后通过 HTTP(S) 主动连接总控。通常不需要在被监控服务器上开放入站端口。
1.3 设备 ID 和一次性接入令牌
在控制台“设备管理”中创建设备后,会得到设备 ID 和只显示一次的接入令牌。安装 Agent 时两者必须同时使用:
- 设备 ID 表示数据属于哪台设备。
- 接入令牌证明这次安装已获授权,15 分钟后过期且只能消费一次。
- 安装器交换得到的长期 Agent 密钥直接写入受限配置文件,不显示在安装命令中。
不要把接入令牌、Agent 密钥、API Token、管理员密码或 .env 内容发到聊天群、工单和截图中。
2. 推荐的首次部署顺序
第一次使用时,建议严格按下面的顺序操作:
- 准备一台 Linux 总控服务器和一个域名。
- 选择公共源、内部源或离线包;内部和离线环境提前准备 Docker Engine 与 Compose v2。
- 使用固定版本的统一管理脚本安装总控,或运行已校验离线包中的安装入口。
- 打开
/setup,填写站点和管理员信息。 - 登录控制台,创建第一个数据库备份。
- 配置并测试至少一种通知渠道。
- 创建设备,在目标服务器运行控制台生成的 Agent 命令。
- 确认设备在线并有指标,再创建告警规则和服务监控。
- 测试告警流程,最后启用每日自动备份和自动更新。
先接通数据再配置告警,可以避免因为设备尚未上报而误判故障。
3. 安装前准备
3.1 推荐配置
小规模使用可以从以下配置开始:
- 64 位 Linux,推荐当前受支持的 Ubuntu、Debian、Rocky Linux 或同类发行版。
- 2 核 CPU、4 GB 内存、至少 20 GB 可用磁盘。
- Docker Engine 24 或更高版本。
- Docker Compose v2,命令格式是
docker compose,不是旧版docker-compose。 - 可访问总控所需的内部 Registry/制品服务或 Gitee;完全断网环境提前准备架构对应的离线 bundle。GitHub 不是目标服务器的必需依赖。
- 生产环境准备一个域名和有效 HTTPS 证书。
设备数量、指标保留时间和采集频率越高,磁盘使用量越大。生产环境应持续观察总控磁盘空间。
3.2 Linux 前置检查
在总控服务器终端执行:
docker --version
docker compose version
docker info
git --version已准备好环境时,这些命令应正常返回,docker info 不出现连接守护进程失败。公共在线安装器可以补齐受支持的依赖;内部和离线安装必须提前准备所需工具。固定版本在线更新不要求部署目录保留 .git,也不需要 Git 查询版本。
如果普通用户执行 Docker 命令提示权限不足,可以临时在命令前加 sudo。是否把用户加入 docker 组应按你的服务器安全策略决定,因为该组接近 root 权限。
确认默认 Web 端口没有被占用:
sudo ss -lntp | grep ':18080' || true没有输出表示端口通常可用。如果已经被其他程序占用,需要在首次启动前修改 .env 中的 WEB_PORT;不要等向导完成后再改端口。
3.3 Windows 前置检查
Windows 可以运行总控,但生产环境更推荐 Linux。若用于本机体验或测试:
- 安装 Docker Desktop,并切换为 Linux containers。
- 启动 Docker Desktop,等待状态显示引擎已运行。
- 使用 PowerShell 检查:
docker --version
docker compose version
docker info
git --versionWindows 总控不会自动采集 Windows 宿主机。完成总控安装后,还要把它当作普通 Windows 设备安装 Agent。
3.4 域名、端口和防火墙
生产环境推荐使用 https://monitor.example.com 这类域名。请提前完成:
- 域名 A/AAAA 记录指向总控公网地址。
- 防火墙或安全组放行 80/443;如果暂时直接访问
18080,只在初始化期间按需放行。 - Caddy、Nginx、Traefik、宝塔反向代理或云负载均衡器把 HTTPS 请求转发到
127.0.0.1:18080。 - 反向代理开启 WebSocket,并透传
Host、X-Forwarded-Host、X-Forwarded-For、X-Forwarded-Proto。
不要把 PostgreSQL、Redis 或 Spring Boot 端口直接暴露到公网。
4. 安装总控
4.1 Linux:从 Gitee 安装
curl -fsSL --proto '=https' --tlsv1.2 'https://gitee.com/starchen520/monitor-for-server/raw/v1.20.22/deploy/xingchen.sh' -o xingchen.sh && chmod +x xingchen.sh && sudo CN=true ./xingchen.sh install --version v1.20.22该入口从 Gitee 取得固定版本编排文件,并从腾讯云 TCR 拉取六个公开预构建镜像;目标机不访问 GitHub/GHCR,也不编译应用。
4.2 Linux:能够访问 GitHub 时
curl -fsSL --proto '=https' --tlsv1.2 'https://raw.githubusercontent.com/Pstarchen/monitor-for-server/v1.20.22/deploy/xingchen.sh' -o xingchen.sh && chmod +x xingchen.sh && sudo ./xingchen.sh install --version v1.20.22安装器会自动完成这些工作:
public模式自动补齐 curl、Git、Docker Engine 和 Compose v2;internal/offline只检查本地依赖。- 生成随机 PostgreSQL 凭据并写入私有
.env。 - 中国模式从腾讯云 TCR 拉取固定版本镜像,GitHub 模式从 GHCR 拉取;不使用可变的
latest。 - 统一管理入口关闭隐式源码构建回退,拉取失败会直接停止并保留可重试状态。
- 启动数据库和临时安装环境。
- 等待
http://127.0.0.1:18080/healthz健康检查通过。
Linux 安装成功后可直接使用 sudo xingchen status、sudo xingchen logs、sudo xingchen restart 和 sudo xingchen update。首次安装中断或网络失败时,修复问题后可使用相同目录、来源和版本重新执行原 install 命令续装;已有部署应使用 update。
安装完成后,终端会提示打开:
http://<总控服务器IP>:18080/setup4.3 Windows:运行总控安装器
在项目目录打开 PowerShell:
powershell -ExecutionPolicy Bypass -File .\deploy\install-controller.ps1确认 Docker Desktop 正在运行。如果命令提示无法连接 Docker daemon,先启动 Docker Desktop,再重新执行安装器。
4.4 安装器常用选项
下表适用于已取得对应版本源码目录后使用的底层 deploy/install-controller.sh 和 deploy/install-controller.ps1,不是 xingchen 管理命令的参数表:
| 用途 | Linux | Windows |
|---|---|---|
| 安装后启用每日 04:00 自动更新 | --auto-update | -AutoUpdate |
| 使用当前目录源码构建 | --build | -Build |
| 跳过镜像,直接从配置的源码仓库构建 | --source-build | -SourceBuild |
| 跳过配置的镜像前缀 | --no-mirror | -NoMirror |
| 镜像失败后不回退源码构建 | --no-source-fallback | -NoSourceFallback |
| 清理本项目旧容器和本地镜像 | --cleanup | -Cleanup |
例如,在已取得并验证的源码目录内,Linux 首次安装并启用自动更新:
sudo bash ./deploy/install-controller.sh --auto-update--cleanup/-Cleanup 会删除本项目旧容器和本地镜像,但保留 PostgreSQL、Redis 数据卷。它不是“恢复出厂设置”,也不会清空已有数据。
4.5 安装完成后的检查
Linux:
docker compose --profile host-monitoring ps
curl -fsS http://127.0.0.1:18080/healthzWindows:
docker compose ps
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:18080/healthz成功标准:容器状态为运行中或 healthy,健康检查返回 HTTP 200。
5. 完成首次 /setup 向导
浏览器打开 /setup 后,只需要填写站点和第一个管理员。数据库已经由安装器准备好,不要在这里寻找数据库地址或密码输入框。
5.1 每个字段怎么填
| 字段 | 怎么填 | 示例和注意事项 |
|---|---|---|
| 公网入口 | 用户和 Agent 实际访问的完整来源 | https://monitor.example.com;临时测试可填 http://192.168.1.10:18080。不能带路径、查询参数或末尾业务页面。 |
| 允许的 Web 来源 | 允许打开控制台的浏览器来源 | 通常与公网入口完全相同。多个来源使用英文逗号分隔,每项都写完整的 http(s)://主机[:端口]。 |
| 站点名称 | 页面和通知里显示的名称 | 例如“公司服务器监控”。 |
| 服务时区 | IANA 时区名称 | 中国大陆通常填 Asia/Shanghai。它影响告警、审计、维护窗口和定时任务时间。 |
| 管理员用户名 | 第一个登录账号 | 默认可用 admin,也可以改成不易猜到的名称。 |
| 管理员密码 | 至少 12 位的独立强密码 | 不要与服务器 SSH、邮箱或其他后台共用。 |
| 再次输入管理员密码 | 与上一项完全一致 | 建议使用密码管理器保存。 |
提交后,安装服务会写入生产 .env 并重建 server 和 web。页面短暂不可访问是正常现象,等待服务启动完成后刷新即可。
5.2 如果先用 IP、以后再换 HTTPS 域名
- 先用
http://<IP>:18080完成初始化。 - 配置正式域名、证书和反向代理。
- 登录后进入“系统设置 > 站点与部署”。
- 把公网入口改为正式 HTTPS 地址并保存。
- 确认服务端
.env中的PUBLIC_BASE_URL和ALLOWED_ORIGINS都使用正式 HTTPS 来源,SESSION_COOKIE_SECURE=true。 - 重建 Web 和服务端:
docker compose up -d --force-recreate server web来源不一致时,浏览器可能出现登录失败、请求被拒绝或 WebSocket 无法连接。
6. 登录、公开状态页和账号角色
访问公网入口的根路径 / 会看到公开状态页;旧地址 /status 会自动跳转。点击登录入口,使用首次向导创建的管理员账号进入控制台。
6.1 三种角色
| 角色 | 适合谁 | 权限范围 |
|---|---|---|
| ADMIN | 系统负责人 | 管理系统设置、账号、设备、规则、备份和更新。 |
| OPERATOR | 日常运维人员 | 管理被授权的设备、告警和任务,不能修改全局管理配置。 |
| VIEWER | 只读用户或值班查看账号 | 查看被授权设备的指标和告警。 |
创建普通账号:进入“账号权限”,点击“创建账号”,填写用户名、显示名称、角色和至少 12 位初始密码。对非管理员账号,再点击设备权限图标,逐台分配“查看数据、管理资料、处理告警、执行任务”。
6.2 修改自己的资料、密码和启用双因素认证
点击右上角用户菜单进入个人资料:
- 修改显示名称后保存。
- 修改密码时必须输入当前密码;成功后当前会话会轮换。
- 启用 TOTP 双因素认证时,先输入当前密码,使用身份验证器扫描二维码,再输入 6 位验证码确认。
- 停用双因素认证也需要当前密码和当前 6 位验证码。
建议至少为管理员账号启用双因素认证。
7. 接入第一台服务器
7.1 创建设备
- 进入“设备管理”。
- 点击“添加设备”。
- 至少填写“设备名称”,例如“生产 API-01”。
- 按实际情况填写主 IP、分组、位置、标签、环境、责任人和资产编号。
- 决定是否在公开状态页展示;生产内部设备不需要公开时取消勾选。
- 点击“创建设备”。
创建成功后会立即打开“Agent 接入”弹窗。不要先关闭它。
7.2 在 Agent 接入弹窗中选择参数
- “监控平台域名或地址”:应是目标服务器能够访问的总控地址,生产环境使用 HTTPS。
- 安装脚本固定从总控同域下载;目标服务器只需能访问总控,不需要连接 GitHub、Gitee 或公共 CDN。
- “Linux/Windows”:选择目标服务器真实系统。
- “采集周期”:新手建议保留 3 秒;设备很多或总控配置较低时可改为 10 秒或 30 秒。
- “磁盘白名单”:只想采集特定挂载点时填写,例如 Linux 的
/, /data或 Windows 的C:\, D:\。 - “轻量采集”:低配置或连接很多的服务器可启用,它会跳过进程和连接统计。
- “完整进程”:只有确实需要完整进程清单时启用,并设置合理上限。
参数选好后先点击“复制安装命令”,在目标终端执行;等安装器提示时,再点击“复制令牌”并粘贴到隐藏输入处。命令包含正确的设备 ID 和总控地址,但不包含接入令牌或长期 Agent 密钥;执行安装器前会校验总控返回的 SHA256。安装器取得权限后在终端中隐藏读取令牌,准备并校验制品,最后交换令牌并写入受限配置文件。应优先使用该流程,不要手工拼接。
7.3 Linux 安装 Agent
- SSH 登录刚才创建的目标服务器。
- 粘贴控制台生成的整条命令并执行。
- 安装器会请求 sudo 权限;按提示输入目标服务器自己的 sudo 密码。
- 出现接入令牌提示后,复制同一设备的令牌并粘贴,按一次回车;输入不回显是正常现象。
- 等待出现 Agent 已启动或状态检查提示。
优先完整复制控制台生成的一行命令,保留末尾用于吸收行尾 CR 的 #。以下多行示例需替换域名和 <设备ID>,使用 LF 换行;引导脚本下载成功且非空后才会执行,退出时清理临时文件。不要将命令和令牌作为多行内容一起粘贴:
(
set -eu
umask 077
bootstrap="$(mktemp "${TMPDIR:-/tmp}/xingchen-bootstrap.XXXXXX.sh")"
trap 'rm -f -- "$bootstrap"' EXIT
curl -fsSL --max-redirs 0 --retry 2 --retry-delay 2 \
--connect-timeout 10 --max-time 60 --max-filesize 1048576 \
--proto '=https' --proto-redir '=https' --tlsv1.2 \
'https://monitor.example.com/api/setup/agent-bootstrap?platform=linux&deviceId=<设备ID>&interval=3s' \
-o "$bootstrap" || {
status=$?
printf 'Agent 引导脚本下载失败(curl 退出码 %s)。\n' "$status" >&2
exit "$status"
}
[ -s "$bootstrap" ] || { echo 'Agent 引导脚本为空,安装已停止。' >&2; exit 1; }
bash "$bootstrap"
) #安装器默认用预编译程序注册本机 systemd 服务;只有命令中显式添加 --docker 才用容器模式。检查状态和日志:
/opt/xingchen/agent/agent.sh status
/opt/xingchen/agent/agent.sh logs7.4 Windows 安装 Agent
- 在目标 Windows 服务器上,以管理员身份打开 PowerShell。
- 粘贴控制台“Windows”页签生成的单行短命令。
- 等待脚本下载安装程序、写入配置并创建
XingchenAgent服务。 - 检查服务:
Get-Service XingchenAgent服务应为 Running。配置文件位于:
%ProgramData%\XingchenMonitor\agent.jsonWindows 安装器默认取得总控提供的预编译程序并校验摘要,不需要 Git 或 Go。离线安装可通过 -BinaryPath 提供可信的 xingchen-agent.exe;只有存在本地源码或显式设置 -RepositoryUrl 时才允许源码构建,内部网络模式禁止源码回退。完整参数见受监控服务器搭建材料。旧版主机会继续显示旧服务名和路径,重新运行安装命令可以迁移配置并更新服务。
7.5 确认接入成功
回到“设备管理”并刷新。正常情况下,设备会从“待接入”变为“在线”,并显示主机名、IP、操作系统和最新资源使用率。
点击设备名称检查:
- “趋势与主机”有 CPU、内存、磁盘和网络数据。
- “磁盘”显示正确的挂载点。
- “进程、端口、容器、网卡”按 Agent 能力显示明细。
- “资产与记录”可记录交接、变更和现场处理信息。
- “状态时间线”会记录首次接入、离线和恢复。
若 1 分钟后仍是“待接入”,先看目标服务器 Agent 日志,再检查它能否访问 <公网入口>/healthz。
7.6 重新签发接入令牌和安装
管理员可以为普通设备重新签发一次性接入令牌。签发本身不会中断现有 Agent;安装器成功消费令牌时才生成新密钥并使旧密钥失效:
- 在“设备管理”找到目标设备,点击“签发接入令牌”图标。
- 在“Agent 接入”弹窗中点击“复制令牌”和“复制安装命令”。令牌只显示一次,15 分钟内有效。
- 到目标服务器运行同域安装命令,在安装器提示时隐藏输入令牌。
- 确认设备重新在线,检查 Agent 日志和指标时间。
再次签发会替换该设备尚未使用的旧令牌。不要把同一个设备令牌用于另一台仍需独立监控的服务器。
修改设备名称、分组、资产信息不需要重装 Agent。总控中修改默认上报周期后,在线 Agent 会在下一次成功上报时同步。
8. 控制台功能怎么用
8.1 运行总览
“运行总览”适合每天先看一遍:
- 在线/离线设备数量是否符合预期。
- CPU、内存、磁盘压力排行中是否有异常节点。
- 最近告警是否有未处理项。
- 服务监控是否出现失败或延迟升高。
点击设备或告警可以进入详细页面。总览是快速定位入口,不替代设备详情和告警事件中的完整信息。
8.2 设备管理和设备详情
设备列表支持按名称、地址、分组、标签、环境、在线状态和健康状态筛选,也可以导出当前筛选结果为 CSV。
设备详情常用页签:
- “趋势与主机”:查看时间范围内的资源曲线、温度、SMART 和主机信息。
- “资产与记录”:维护责任人、位置、保修期以及运维工作记录。
- “磁盘”:查看空间、读写速率和 SMART 状态。
- “进程”:查看进程快照及选中进程的趋势。
- “服务”:查看 Agent 配置中声明的系统服务状态。
- “端口”:查看监听地址、端口和 PID。
- “容器”:查看 Docker 容器状态、资源和网络吞吐。
- “安全巡检/自定义项”:查看 Agent 显式配置的安全和自定义采集结果。
8.3 创建告警规则
进入“告警规则”,点击“新建规则”:
- 填写容易理解的名称,例如“生产节点 CPU 持续过高”。
- 选择全部设备或某一台设备。运维账号只能选择有权限的设备。
- 选择指标,例如 CPU、内存、磁盘、设备离线、TCP 连接数、SMART 失败磁盘、进程缺失、服务异常或自定义指标。
- 对数值指标填写阈值;对进程、服务或自定义项填写与 Agent 上报完全一致的目标名称。
- 选择“提示、警告、严重”级别并启用规则。
- 保存后观察实际运行情况,再逐步调整阈值。
建议先用较宽松阈值观察一天,避免一开始产生大量无意义告警。设备离线阈值还会受到“系统设置 > 监控策略”中的离线判定影响。
8.4 处理告警事件
“告警事件”会显示级别、设备、规则、触发值、通知状态和处理人。
- “确认”表示有人已经接手,不表示故障恢复。
- 指标回到正常范围或服务探测恢复后,系统才会自动标记已恢复。
- 可以筛选待处理告警并批量确认。
- 通知列显示已发送或被维护窗口静默。
正确流程是:确认告警、进入设备/服务详情定位、处理故障、等待系统检测恢复,并在需要时补充设备工作记录。
8.5 维护静默
计划发布、重启或机房检修前,进入“维护静默”创建窗口:
- 填写窗口名称和原因。
- 选择全部设备、指定设备以及可选的规则范围。
- 选择开始和结束时间,核对时区。
- 选择仅一次、每天或每周;重复窗口可设置结束时间。
- 启用并保存。
窗口内仍会记录告警,只暂停通知。窗口结束时如果故障仍未恢复,系统会补发通知。维护静默不是关闭监控。
8.6 配置服务监控
“服务监控”从总控主动探测目标,适合监控网站、端口、数据库握手、网络设备和外部任务。
常见选择:
| 目标 | 探测类型 | 目标示例 |
|---|---|---|
| 网站健康接口 | HTTP GET | https://example.com/health |
| 主机是否可达 | ICMP Ping | 192.168.1.20 |
| TCP 端口 | TCPing | example.com:443 |
| FTP/SFTP | FTP 或 SFTP/SSH 握手 | ftp.example.com:21、host:22 |
| 网络设备 | SNMP v2c | switch.example.com:161 |
| Redis/PostgreSQL/MySQL | 对应协议握手 | db.example.com:5432 |
| cron、备份、CI | 外部心跳 | 保存后复制系统生成的命令 |
创建时还要设置:
- 探测间隔和超时。
- 连续失败次数,避免单次网络抖动立即报警。
- 延迟阈值。
- HTTPS 证书到期天数。
- HTTP 期望状态码和响应体必须包含的文字。
- 是否在公开状态页显示。
保存普通探测后可点击“立即探测”验证。外部心跳令牌只在创建时显示一次,应立即把生成的 curl 命令放进 cron、CI 或备份脚本的成功末尾。
8.7 配置通知
只有管理员可以修改通知。进入“系统设置”,选择邮件、钉钉、企业微信或通用 Webhook:
- 填写服务商提供的主机、Webhook 或凭据。
- 开启对应通道。
- 先点击页面顶部“保存设置”。
- 再点击“发送测试邮件/消息”。
- 到实际收件箱或群机器人确认收到。
- 在“最近投递记录”查看成功、失败原因;失败项可使用当前配置重试。
通用 Webhook 支持通用 JSON、Slack、Discord、飞书/Lark 和纯文本格式。敏感字段留空保存时会保留旧值;不要为了“确认内容”反复覆盖已工作的密钥。
8.8 网络发现
“网络发现”从总控扫描私网,适合补齐不知道具体地址的设备:
- 输入 RFC1918 私网 CIDR,例如
192.168.1.0/24。 - 输入要探测的端口,例如
22, 80, 443, 8080,最多 32 个。 - 新手保留默认超时和并发,点击“开始扫描”。
- 等待任务完成,查看可达地址、开放端口和延迟。
- 对确认属于自己的主机点击“使用地址添加设备”。
只支持 /24 到 /32 的 RFC1918 私网,不会扫描公网。扫描结果只是发现线索,添加设备后仍要安装 Agent 才会有完整主机指标。
8.9 网络拓扑和运行报告
网络拓扑根据服务监控的可解析目标自动生成关系。先创建服务监控,再到“网络拓扑”点击节点查看相关探测和影响范围。
“运行报告”可选择 24 小时、7 天或 30 天,查看节点资源压力、服务可用率和告警活动,并导出 CSV。没有数据时先确认 Agent 和服务监控已经运行足够时间。
8.10 动态域名解析(DDNS)
DDNS 通过 Webhook 把 Agent 上报的新 IP 推给你的 DNS 服务:
- 进入“动态域名解析”,新建配置。
- 填写名称、域名、请求方式和 Webhook URL。
- 按 DNS 服务接口填写请求头 JSON、请求体模板和凭据。
- 模板可使用页面提示的
#domain#、#ip#、#type#、#record#、#access_id#、#access_secret#。 - 先保存并测试更新。
- 回到“设备管理”编辑目标设备,启用 DDNS 并关联该配置。
更新已有 DDNS 配置时,凭据字段留空会保留旧值。先测试成功再启用,避免错误模板批量修改 DNS。
8.11 API Token
API Token 用于移动端、脚本或 MCP 客户端,不要用管理员 Cookie 代替:
- 进入“API Token”,点击“创建 Token”。
- 填写能识别用途的名称。
- 从默认只读权限开始,只勾选客户端确实需要的 scope。
- 可填写服务器 ID 白名单;留空表示不额外限制设备,但仍受账号本身权限约束。
- 设置有效期,生产环境不建议无期限。
- 创建后立即复制明文或完成二维码绑定。
明文关闭后不能再次查看。如果泄露或不再使用,立即吊销;使用它的客户端会马上失去访问权限。
8.12 任务执行
任务执行可以远程运行受控命令,默认关闭,风险较高。只有确实需要时才在目标 Agent 安装参数中加入:
- Linux:
--allow-command-execution - Windows:
-AllowCommandExecution
然后在“任务执行”中选择有权限的设备,分别填写命令和参数。参数必须每行一个,不使用管道、重定向、&& 等 Shell 语法,因为命令不会经过 Shell 解析。设置合理超时和输出上限,创建后查看排队、运行、成功/失败、标准输出和标准错误。
不要对不可信设备启用命令执行,也不要用它代替成熟的配置管理和发布系统。
8.13 审计日志
管理员可在“审计日志”按操作者、动作、目标或摘要搜索关键变更。发现异常操作时,先停用或收紧相关账号权限,再修正配置。审计日志用于追溯,不等于数据库备份。
9. 备份、恢复和更新
9.1 第一次备份
完成首次配置后,进入“备份与恢复”,点击“立即备份”。等待状态回到“就绪”,并确认“可用备份”出现一个 PostgreSQL SQL 文件。
备份文件位于总控项目目录的 backups/,默认权限为 0600。它和 .env 都包含敏感信息,应限制服务器目录权限,并把备份定期复制到独立存储。只保存在同一块硬盘上不能防止主机磁盘损坏。
9.2 自动备份
在“备份与恢复”中:
- 开启“每天 03:00 自动创建”。
- 设置保留数量,允许 1 到 100,建议从 7 开始。
- 点击“保存策略”。
任务按“服务时区”执行。超出保留数量后会删除最旧的 SQL 文件,因此长期归档需要另行同步。
9.3 恢复备份
恢复会停止 server 和 web,并用选中的 SQL 覆盖当前监控数据库:
- 先确认选中的文件时间和故障发生时间。
- 如果当前数据库仍可用,先额外保留一份当前备份。
- 点击目标文件的“恢复”并确认。
- 等待任务完成和服务自动重启。
- 重新登录,检查账号、设备、规则和最新数据。
恢复期间控制台暂时不可访问是正常现象。不要重复点击恢复或同时执行总控更新。
9.4 在控制台更新总控
管理员进入“系统设置 > 系统更新”:
- 先到“备份与恢复”创建升级前备份。
- 点击“检查更新”。
- 查看当前版本、最新稳定版本、发布时间和 Release 说明。
- 确认确实有新版本后点击“立即更新”。
- 控制台重启期间耐心等待;恢复后页面会自动刷新状态。
- 检查总控组件版本、设备在线状态和通知投递。
稳定版本使用 vX.Y.Z。发布流程会先准备草稿,确认六个腾讯云 TCR 镜像、四个平台 Agent 制品和架构对应离线包齐备后才公开 Release 并同步 Gitee 稳定标签;中国模式通过 Gitee 稳定标签发现新版本,GitHub 模式只读取已公开 Release,内部或离线模式使用受信 manifest。控制台会显示版本来源及 last-known-good 缓存状态。
9.4.1 更新页面的逐项操作和判断标准
不要把“立即更新”当成普通的保存按钮。它会启动总控更新任务,并按顺序重建和重启服务。建议在维护窗口内由一名管理员完成,另一名值班人员负责观察:
- 确认当前状态:在“系统更新”页先看当前版本、最新稳定版本、最近检查时间和服务列表。若已经显示“正在检查”或“正在更新并重启”,不要再次点击任何更新按钮。
- 创建升级前备份:进入“备份与恢复”,点击“立即备份”。只有当状态回到“就绪”,并且“可用备份”中出现刚刚生成的 SQL 文件时,才继续下一步。记录文件时间和文件名。
- 检查候选版本:返回“系统更新”,点击“检查更新”。等待按钮结束加载,确认出现“发现可用更新”,核对目标版本、发布时间和 Release 说明。若目标版本低于当前版本,先停止并确认是否真的需要降级。
- 检查变更窗口:确认没有人在执行数据库恢复、Agent 密钥轮换、批量任务或其他发布操作;通知值班人员控制台会短暂不可访问。
- 启动更新:点击“立即更新”,在确认框中阅读“拉取镜像、依次重启服务、不会删除监控数据”的提示,确认无误后点击“开始更新”。一次点击即可,不要刷新后重复提交。
- 等待重启:更新状态会变为“正在更新并重启”。这段时间出现登录失败、首页打不开或 WebSocket 断开属于预期现象。耗时取决于镜像下载、备份大小和健康检查;不要手工启动旧容器,也不要同时执行恢复。
- 验证服务版本:页面恢复后重新进入“系统设置 > 系统更新”,确认 setup、server、web 版本一致,健康状态均为“运行正常”。
- 验证业务链路:依次打开运行总览、设备管理、告警事件和通知投递记录,确认至少一台设备重新在线、趋势产生新数据、告警列表可读、测试通知可以发送。
- 记录结果:把升级前后的版本、开始/完成时间、备份文件名和异常信息写入交接记录。没有完成业务验证前,不要关闭维护窗口。
出现问题时按下面顺序收集信息:
docker compose --profile host-monitoring ps
docker compose logs --tail 100 setup
docker compose logs --tail 100 server
docker compose logs --tail 100 web
curl -fsS https://<你的域名>/healthz如果控制台仍可访问,优先查看“系统更新”页的错误提示和服务状态;如果控制台不可访问,先看 setup 日志和 /healthz,不要连续重试。更新任务失败不会删除数据卷;候选服务健康检查失败时,更新器会尝试恢复原 .env、Compose、受管脚本和实际运行的旧镜像,并再次检查服务健康状态。数据库不会自动回滚,新版本可能已经执行 Flyway 迁移,因此恢复镜像后仍要确认数据库兼容性。需要完整降级时,先确认目标版本兼容性,再结合升级前 PostgreSQL 备份恢复。
9.5 命令行检查和更新
Linux 已有公共源部署使用统一管理命令更新到最新稳定版本:
sudo xingchen update需要固定版本时,先用目标版本 bootstrap 预检,再应用。以下示例假定安装目录为 /opt/guanlan-monitor,目标版本已发布且包含更新包:
sudo bash /opt/guanlan-monitor/deploy/bootstrap-controller-update.sh --project-root /opt/guanlan-monitor --version v1.20.22 --check
sudo xingchen update --version v1.20.22bootstrap 从目标 Setup 镜像提取更新包,验证版本、架构、镜像 ID 和包内摘要。--check 准备并校验候选,不切换运行服务;正式更新由目标版本更新器备份数据库后执行。
普通更新保留 .env 中的来源、镜像和网络策略,优先按 XINGCHEN_SOURCE_REPOSITORIES 判断发布来源,未配置时才参考 Git origin;部署目录可以没有 .git。--source gitee 或 --source github 会显式切换公共来源、六个镜像及相关发布策略,并清除原 manifest 和 Agent 离线来源设置。内部或离线部署运行普通在线更新会被拒绝,预检命令也不会自动改变网络模式。
v1.20.18 及更早版本首次迁移时,需先使用已验证的发布包补齐新版管理器和 bootstrap,见部署与运维。Windows Docker Desktop 部署可使用控制台更新或已校验的离线升级包;底层 update-controller.sh/.ps1 用于当前目录源码和高级维护,不作为跨版本在线更新入口。
自动更新在控制台开启后每天 04:00 按服务时区执行。更新过程不会删除 PostgreSQL 和 Redis 数据卷。
9.6 健康检查失败时如何回滚
候选服务健康检查失败时,更新器会尝试恢复更新前的 .env、Compose、受管脚本和实际运行的旧镜像,并再次检查服务健康状态;它不会删除数据卷,也不会自动恢复 PostgreSQL。服务端启动时,Flyway 可能已经执行前向迁移,旧应用镜像不一定兼容新数据库结构,因此镜像恢复成功仍不等于数据库已经安全降级。
需要降级时,必须先确认目标版本的数据库兼容性;必要时同时恢复升级前 PostgreSQL 备份和对应版本镜像。不要只改镜像标签后直接启动旧版本。
在线更新捕获到 SIGHUP、SIGINT 或 SIGTERM 时,也会执行上述恢复和健康检查;管理器不修改源码检出或 Git origin。回滚健康时退出码为 10,恢复不完整时为 11,并保留受保护的 .controller-update-snapshot.*。SIGKILL 或断电无法触发信号处理;恢复连接后先执行 sudo xingchen status,检查日志和保留快照。存在未处理快照时,后续在线更新会拒绝继续,应先人工确认并完成恢复,不要盲目重跑同版本或删除快照、数据卷。
10. 日常运维速查
10.1 总控状态和日志
docker compose --profile host-monitoring ps
docker compose logs --tail 100 setup
docker compose logs --tail 100 server
docker compose logs --tail 100 web
docker compose logs --tail 100 controller-agent持续查看服务端日志:
docker compose logs -f --tail 100 server健康检查:
curl -fsS http://127.0.0.1:18080/healthz
curl -fsS https://monitor.example.com/healthz10.2 Linux Agent 管理
/opt/xingchen/agent/agent.sh status
/opt/xingchen/agent/agent.sh logs
/opt/xingchen/agent/agent.sh restart
/opt/xingchen/agent/agent.sh update
/opt/xingchen/agent/agent.sh list-versions
/opt/xingchen/agent/agent.sh rollback v1.20.4默认卸载会保留配置和离线缓存:
/opt/xingchen/agent/agent.sh uninstall彻底删除配置和缓存:
/opt/xingchen/agent/agent.sh uninstall --purge--purge 不可恢复,执行前确认目标确实是要移除的 Agent。
10.3 Windows Agent 管理
Get-Service XingchenAgent
Restart-Service XingchenAgent
sc.exe query XingchenAgent
sc.exe qc XingchenAgent更新和回退:
powershell -ExecutionPolicy Bypass -File .\deploy\install-agent.ps1 -Action update
powershell -ExecutionPolicy Bypass -File .\deploy\install-agent.ps1 -Action list-versions
powershell -ExecutionPolicy Bypass -File .\deploy\install-agent.ps1 -Action rollback -Version v1.20.4重新运行控制台生成的安装命令可以更新配置和程序。Windows Agent 配置目录为 %ProgramData%\XingchenMonitor,程序目录为 %ProgramFiles%\XingchenMonitor;更新前会保留 .backup,新服务启动失败会自动恢复。
10.4 推荐检查频率
- 每天:查看离线设备、严重告警、服务失败和通知投递失败。
- 每周:检查磁盘增长、备份是否持续成功、未使用 Token 和长期未处理告警。
- 每月:检查新版本 Release、账号权限、管理员双因素认证、证书到期和恢复演练计划。
- 重大更新前:创建备份、记录当前版本、阅读 Release 说明并预留维护窗口。
11. 常见问题排查
11.1 安装器提示找不到 Docker 或 Compose
现象:提示 Docker Engine and Docker Compose v2 are required。
检查:
docker --version
docker compose version
docker info处理:安装或启动 Docker Engine。Windows 要确认 Docker Desktop 正在运行 Linux containers。旧命令 docker-compose 存在不代表 Compose v2 可用。
11.2 总控容器启动了,但网页打不开
依次检查:
docker compose ps
docker compose logs --tail 100 web
curl -v http://127.0.0.1:18080/healthz- 本机健康、外部不通:检查安全组、防火墙、端口映射和反向代理。
- 本机也不通:查看
web、server、setup日志。 - HTTPS 页面 502:检查反向代理目标是否为正确的
WEB_PORT,以及容器是否已健康。
11.3 /setup 提交后暂时 502 或页面断开
向导提交后会重建生产服务,短暂中断属于正常现象。等待 30 到 120 秒,检查:
docker compose ps
docker compose logs --tail 100 setup
docker compose logs --tail 100 server不要反复提交向导。若服务日志明确报错,再按日志处理。
11.4 登录后立即退出、403 或 WebSocket 断开
重点核对公网入口和允许来源是否为浏览器地址的同一来源,包括协议和端口:
https://monitor.example.com与http://monitor.example.com不同。https://monitor.example.com与https://monitor.example.com:8443不同。- HTTPS 站点需要安全 Cookie 和正确的
X-Forwarded-Proto。
修正后重建:
docker compose up -d --force-recreate server web11.5 设备一直“待接入”或突然离线
在目标服务器检查 Agent 状态和日志,并测试:
curl -v https://monitor.example.com/healthz常见原因:总控地址写错、DNS 解析失败、证书不受信任、出口防火墙阻断、设备 ID/密钥不匹配、管理员已经轮换密钥、Agent 服务未运行。
密钥问题不要反复猜测。管理员可重新签发一次性接入令牌,再使用同域安装命令重新安装,按提示输入令牌。
11.6 设备在线,但看不到进程、容器或磁盘
- 进程为空:检查是否启用了轻量采集或
--skip-processes。 - 端口为空:检查是否使用
--skip-ports,以及 Agent 权限。 - 容器为空:Agent 可能无法访问 Docker/Podman socket;主机指标仍可正常工作。
- 某个磁盘缺失:检查安装命令的磁盘白名单;留空通常表示按默认策略采集。
- SMART 缺失:目标机需要
smartctl和读取设备的权限;虚拟磁盘通常没有 SMART。
11.7 告警触发了,但没有通知
- 查看告警事件的通知列,确认是否被维护窗口静默。
- 进入“系统设置”确认通道已启用并保存。
- 发送测试通知。
- 查看“最近投递记录”的服务商返回或错误信息。
- 检查 SMTP、Webhook 允许列表、签名密钥和出站网络。
“确认告警”不会阻止后续恢复通知;维护窗口才负责按时间范围静默通知。
11.8 检查更新显示缓存或发布源不可用
后台版本检查会缓存 20 分钟;控制台手动检查会立即刷新发布源。Gitee 标签 API、GitHub Release API 或内部 manifest 临时失败时会保留 last-known-good 缓存并显示提示。中国模式若持续出现该提示,先确认服务器能访问 gitee.com/api/v5;判断发布是否完整时,应同时检查版本来源、四个应用镜像、PostgreSQL/Redis 依赖镜像和四个平台 Agent 制品。
命令行更新失败时查看输出中的具体镜像源和失败阶段。控制台及 xingchen update 的在线更新会校验目标版本更新包和镜像,不会自动回退到源码构建;源码构建仅用于显式选择的底层维护流程。完全断网环境应使用已校验离线 bundle 中的升级入口,不要等待公共源超时。
11.9 数据库恢复或更新后控制台暂时不可用
恢复和更新都会重启服务。先观察任务和容器状态,不要同时发起第二个恢复或更新:
docker compose ps
docker compose logs --tail 200 setup
docker compose logs --tail 200 server如果数据库迁移已经发生,不要擅自切回旧镜像。使用升级前备份并按版本兼容性方案恢复。
12. 安全和数据边界
- 生产环境使用 HTTPS,不让 Agent 通过公网明文 HTTP 上报。
- 不公开 PostgreSQL、Redis、Docker socket 和 Spring Boot 端口。
.env、backups/、Agent 配置、长期 Agent 密钥和 API Token 都按凭据保护。- 管理员使用独立强密码和 TOTP;普通人员按最小角色和设备权限分配。
- API Token 使用最小 scope、设备白名单和有效期,不再使用时立即吊销。
- 只有可信服务器才启用命令执行和文件操作能力。
- Docker socket 即使只读挂载也具有较高风险,只在受信任主机上启用容器采集。
- 备份至少保留一份在总控主机之外,并定期做恢复演练。
- 删除设备会同时删除关联监控数据和告警;操作前确认对象和备份。
- Agent
uninstall --purge会删除本机配置和离线缓存;普通uninstall会保留它们。 - 总控安装器的
--cleanup只清理本项目容器和本地镜像,保留数据库卷;它不是完整卸载。