121 Commits
Author SHA1 Message Date
dushixiang 0fa920e972 refactor: 重构 WebSocket 可靠投递会话模型 2026-08-31 21:52:03 +08:00
dushixiang 787fa6918d feat: WebSocket 消息可靠投递(纯内存事件队列)
- agent 数据写入增加 10s 超时,写失败立即断连重连,消除无超时写卡死期间快照被覆盖的静默丢失
- 事件类消息(SSH登录/防篡改/指令响应/监控检测)改走内存 outbox:seq + 服务端累计 ack + 断线重放,上限 1024 条溢出丢最旧,重启清空(可接受)
- 注册请求携带 BootID 会话标识:探针重启后 seq 从 1 重新分配,服务端据此重置确认位点,避免新消息被旧位点误判为重复而丢弃
- server 读循环与处理解耦(per-agent 有序队列 + 串行 worker),慢处理不再阻塞 TCP 读取,队列满断连由探针重放兜底
- 修复探针快速重连时旧连接误注销新连接的竞态(此前会闪断新连接)
- IsAgentEnabled 加 3s TTL 缓存,禁用立即失效;pong 在线状态写库去抖(首次 + 5 分钟心跳刷新)
- VM 写超时默认 30s -> 10s,快速失败配合重放兜底

新旧版本双向兼容:注册响应 Reliable 字段协商,旧 server 下探针自动降级直发
2026-08-30 22:30:41 +08:00
dushixiang 3efa6852ed fix: filter disabled agents from authenticated API 2026-08-26 20:46:45 +08:00
dushixiang d700d595ab fix: hide disabled agents from public list 2026-08-26 20:37:55 +08:00
dushixiang 14a48f81a4 feat: support disabling agents 2026-08-26 20:24:17 +08:00
dushixiang a4ec00b47e 支持 agent 拖动排序 2026-08-26 20:06:20 +08:00
dushixiang 080579d0e6 refactor: decouple public monitor sparklines 2026-08-23 23:05:41 +08:00
dushixiang 5210f91eef fix(auth): make OIDC discovery resilient 2026-08-23 21:33:28 +08:00
dushixiang 6c8d2f13d3 feat: 告警规则实体化与服务监控按标签选探针
- 告警规则:独立实体(alert_rules 表),按优先级命中第一条生效;支持三种主机目标(全部/按主机/按标签)、7 类阈值、事件通知开关、IP 打码、推送渠道选择;未命中规则的主机不产生告警;列表支持外置启停
- 服务监控:新增按标签选择探针,与指定探针取并集,均为空时全部探针执行
- 公网 IP 采集:范围支持全部探针/按探针/按标签,兼容历史 custom 取值
- 告警历史:新增规则归属列;评估链路(指标/证书/服务下线/探针离线/到期提醒/事件通知)全部按主机命中规则驱动
- 设置页:左侧菜单改为浅色卡片容器并优化对比度,通知渠道移至公网 IP 采集之后;主菜单宽度调整为 240px
2026-08-23 19:53:35 +08:00
dushixiang acf3b6b57f refactor: split default theme into standalone repository 2026-08-12 20:00:48 +08:00
dushixiang a4f7c82de6 更新包路径 2026-08-12 18:59:29 +08:00
dushixiang 1af64eccd9 refactor: simplify theme system to filesystem-only with self-contained portal
主题系统从带数据库/事务/repo 层/远程下载/配置管理/主题市场的重型架构,
彻底简化为纯文件系统操作:

后端:
- 主题数据全部存放在 data/themes/ 目录,不经过数据库
- 删除主题配置功能(managed/raw/redirect schema、配置存取 API、
  ThemeConfiguration model、theme_configurations 表、repo 层)
- 删除远程下载(URL 安装、GitHub Release 更新、SSRF 防护、SHA-256)
- 删除版本范围检查(semver 解析/比较/匹配、pikaVersion 校验)
- 删除主题市场
- ThemeService 不再持有 db,合并为 theme.go + theme_util.go 两个文件
- 主题类型从 models 包移到 service 包(非数据库模型)
- 保留:ZIP 上传解压(含目录穿越防护)、目录扫描列表、启用/删除、
  覆盖安装、默认主题回退、启动恢复、入口 HTML 渲染缓存

前端 portal(官方默认主题):
- 从 47 个碎片文件精简到 15 个,按标准目录组织
- 删除 theme-sdk 包,API 客户端和类型内联回 portal,完全自包含
- 按职责拆分:types.ts / api.ts / constants.ts / lib/utils.ts /
  contexts/ColorMode.tsx / hooks/index.ts / components.tsx / pages/
- 每个页面一个文件,图表和子组件内联,fork 二开只需看一个文件
2026-08-09 22:45:43 +08:00
dushixiang 60678ea1bc chore: upgrade dependencies 2026-07-08 21:56:14 +08:00
dushixiang d3690832f9 优化发布构建资源加载 2026-05-07 21:45:22 +08:00
dushixiangandClaude Opus 4.7 c431f300bc 新增实时监控模式,agent 1s 并行采集 + 前端滑动窗口
agent
- 移除 collector.interval 配置项;按指标类型内置节奏:cpu/memory/network/
  disk_io/gpu/network_connection 1s,temperature 5s,disk 30s,host 60s
- doCollectAndSend 改为并行执行本 tick 到期的采集器,避免串行累计耗时
  超过 1s 节奏;每个 goroutine 加 recover 兜底,单点 panic 不拖垮整 tick

server
- LatestMetrics 加 sync.RWMutex + Update/Snapshot 方法,HandleMetricData
  所有写入走 Update;GetLatestMetrics 返回 Snapshot,handler 在副本上
  sanitize,修复 marshal 时与 ws 写入的 data race(go test -race 验证)
- HandleMetricData defer Set 缓存项,每次上报刷新 TTL;host case 也走
  Update,不再 1 小时后失效
- LatestMetrics.Timestamp 用服务端 time.Now(),agent 时钟倒拨不会冻结
  前端实时图;Timestamp/DiskIOSummary 字段补到 LatestMetrics
- AutoStep 新增 r ≤ 5m → 1s 档;timeRangeMilliseconds 加 2m

frontend
- 详情页加"实时"档位(默认),1s 拉 latestMetrics + 1m 历史播种 + 滑动
  2 分钟窗口;快图表(CPU/Memory/Network/DiskIO/NetworkConnection)走
  useLiveBuffer 追加,慢图表(GPU/Temperature/Monitor)保留 refetch
- useLiveBuffer:seed 不再覆盖已追加的 livePoint;resetKey 处理切网卡 /
  切 agent 时的语义复位
- formatChartTime live 档位精确到秒;修复 1d/24h 仅显示 HH:mm 跨夜歧义
- 慢图表用 React.memo,阻断 1Hz 节奏的级联重渲染
- GpuChart 修复 utilization/temperature 时间戳错位时温度点丢失

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 23:18:50 +08:00
dushixiang e115d828ab 重构数据采集打包,修改为统一打包发送 2026-05-05 17:46:32 +08:00
dushixiang 29d8b3e9cf 调整指标数据使用 max 聚合,避免消峰 2026-05-05 17:09:26 +08:00
yumusb 47c9a515a2 feat: 支持短UUID访问服务器详情,前端默认使用短链接
- 后端支持通过UUID前缀(第一段)匹配探针,保留完整UUID兼容
- 注册时自动检测短ID前缀冲突,冲突时分配新UUID
- 前端列表和卡片默认链接到短UUID(前8位)
2026-04-30 14:10:39 +08:00
yumusb 52a30aae74 feat: 支持 API Key 类型与管理接口认证 2026-04-24 18:45:01 +08:00
yumusbandClaude Opus 4.6 b9ec210542 refactor: 优化后端服务结构
- 统一使用 orz 响应格式
- 优化 handler 和 service 层代码
- 改进上下文传递

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 12:53:13 +08:00
yumusb fd452e56d8 增加测试镜像、增加删除残留数据。 2026-04-08 20:24:03 +08:00
yumusb 35becefe1e Support metric bundles and enable WS compression
Add support for bundling metrics and enable WebSocket compression. Introduces protocol.BundlePayload and MessageTypeBundle, and handles bundled messages on the server side (handleBundleMessage) by iterating items and forwarding each to metricService.HandleMetricData. On the agent side, add bundleWriter to collect outgoing MetricsPayloads, switch collectors to write into the bundle writer, and send a single bundle message when items exist. Also enable compression on the WebSocket upgrader and create a custom websocket.Dialer (with Proxy, HandshakeTimeout and EnableCompression). Minor logging/messages and import adjustments included.
2026-04-08 11:26:00 +08:00
dushixiang 4df28e3536 删除探针、服务监控时同步删除 victoriametrics 数据 2026-02-25 14:28:11 +08:00
dushixiang 1a64b27af6 移除原心跳配置和业务,改为使用 WebSocket Ping Pong 实现,并增加超时逻辑 2026-02-25 14:11:22 +08:00
yumusb 63cdd37b12 Hide agent IP when unauthenticated
Ensure agent.IP is cleared for unauthenticated requests. Previously IPv4, IPv6 and Hostname were redacted, but agent.IP was left intact and could leak sensitive information. This change sets agent.IP to an empty string in Get() when the user is not authenticated.
2026-02-24 09:44:27 +08:00
dushixiang d40fc1314f 1. 修改注册探针的服务端地址为手动填写
2. 优化 Linux 系统服务模板
3. 优化首页流量展示方式
2026-02-10 19:56:46 +08:00
dushixiang c9b6d6ff5a 优化流量统计 2026-01-25 22:01:56 +08:00
dushixiang ff2afc82a5 移除管理员探针管理的分页功能,增加标签过滤,与公共页面保持一致的排序逻辑 fix #47 2026-01-24 21:51:23 +08:00
dushixiang 85f80b76fd 新增批量修改探针可见性的功能 fix #33 2026-01-24 18:48:49 +08:00
dushixiang 58efeea362 安装探针命令增加自动创建文件夹的代码 fix #59 2026-01-24 18:30:00 +08:00
dushixiang 6f08f9447a 修复自定义 agent 名称 2026-01-17 17:39:43 +08:00
dushixiang 2664ebb05e 优化探针查询过滤 2026-01-17 17:30:44 +08:00
dushixiang 6488c9155d 保留旧的连接 IP 地址 2026-01-17 17:15:51 +08:00
dushixiang 3a8caec66e 保留旧的连接 IP 地址 2026-01-17 17:14:19 +08:00
dushixiang be54ef2d31 增加公网 IP 采集和网卡 IP 展示 2026-01-17 16:24:59 +08:00
yumusb 2108d09f6a 增加自定义 name 参数 2026-01-15 19:34:57 +08:00
yumusb 56e92c9081 允许只设置一个 systemName 2026-01-12 11:44:16 +08:00
榆木 07cc517b2c 允许有探针在线的IP地址不提供key下载 2026-01-11 19:55:41 +08:00
榆木 9ae1fea7d8 下载地址增加 key 认证
agent二进制下载地址增加 key 认证,防止刷流量
2026-01-11 19:19:58 +08:00
dushixiang f0cff6a878 SSH 登录事件增加 IP 白名单 2026-01-11 13:56:21 +08:00
dushixiang 52037fa8e6 优化已使用流量计算 2026-01-11 12:08:59 +08:00
dushixiang ab1a13d5b2 在管理页面增加设备 IP 信息 2026-01-11 11:43:39 +08:00
dushixiang 8904d39872 在探针注册后服务端主动下发SSH登录监控配置 2026-01-11 10:22:36 +08:00
dushixiang 5359ee89d4 在探针注册后服务端主动下发SSH登录监控配置 2026-01-11 10:20:38 +08:00
dushixiang 2b626b067f 优化事件展示 2026-01-10 23:21:39 +08:00
dushixiang 0ec6cee36c 改为异步下发配置 2026-01-10 23:10:13 +08:00
dushixiang f4d6a3fc3e 完善流量使用统计 2026-01-10 17:59:28 +08:00
dushixiang 1ffa20045c 增加 agent 数据缓存功能,避免长时间连不上服务端导致数据丢失。 2026-01-09 22:28:56 +08:00
dushixiang 3cf4d7e5a9 优化目录保护 2026-01-09 21:53:44 +08:00
dushixiang f43a856add 优化 SSH 登录配置 2026-01-09 21:15:09 +08:00