dushixiang
217da343a0
fix: 防止监控任务重复调度
2026-08-31 23:06:08 +08:00
dushixiang
78006a7120
fix: 避免在线探针离线告警抖动
2026-08-31 22:44:38 +08:00
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
29582f9124
feat: 支持 Telegram 代理和自定义反代
2026-08-24 00:14:07 +08:00
dushixiang
d0a5f304a0
feat: 增加每日计划维护免告警时段
2026-08-24 00:04:32 +08:00
dushixiang
4687cf7fc5
feat: 增加机器到期分级提醒
2026-08-23 23:24:33 +08:00
dushixiang
080579d0e6
refactor: decouple public monitor sparklines
2026-08-23 23:05:41 +08:00
dushixiang
2a5c19079f
feat: add public monitor sparklines
2026-08-23 22:41:35 +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
62a0f28b21
refactor: remove assemble scripts, build directly to final dirs
...
去掉 .dist 中间层和组装脚本,admin 和 portal 各自直接构建到最终目录:
- admin 构建到 web/dist/admin/(后端直接读取)
- portal 构建到 portal/dist/(后端默认主题从此目录读取)
- 删除 web/scripts/(assemble-web.mjs + verify-dist.mjs)
- Makefile build-web 不再调用组装/校验脚本
- 后端 defaultThemeDir 从 web/dist/default-theme 改为 portal
2026-08-09 23:05:07 +08:00
dushixiang
1dd07117a3
refactor: move portal to repo root, merge admin into web/
...
目录结构调整,为 portal 搬迁到独立仓库做准备:
- portal/ 从 web/portal/ 移到仓库根目录,完全自包含
- web/admin/ 内容合并到 web/ 根目录(admin 就是主仓库的前端)
- web/scripts/ 保留在主仓库(负责发布时组装 admin + portal 产物)
- admin 构建产物改为输出到 web/.dist,避免与最终 web/dist 冲突
- 更新 Makefile、assemble-web.mjs、paths.go、README 中的路径引用
2026-08-09 22:56:16 +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
c8ef936a71
feat: add agent expire alerts
2026-05-23 15:32:46 +08:00
dushixiang
d3690832f9
优化发布构建资源加载
2026-05-07 21:45:22 +08:00
dushixiang and Claude 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
yumusb and Claude Opus 4.6
ab22f9bd57
fix: 修复指标采集空数据时误报0%的问题
...
当磁盘或网卡采集不到有效数据时,空列表会被写入缓存导致
磁盘占用率和网络流量显示为0%,与真实值混淆。
修复方案:
- Agent端:空列表不发送,与GPU/温度采集器保持一致
- Server端:空数据时跳过缓存更新,保留上一次有效值
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-14 20:30:54 +08:00
yumusb and Claude Opus 4.6
9c1752bb4d
fix: 删除探针时清理内存缓存中的监控数据
...
删除探针时只清理了 VictoriaMetrics 时序数据,但没有清理内存中的监控缓存,
导致监控页面显示已删除探针的 agent_id (hash) 作为名称。
- 新增 CleanAgentFromMonitorCache 方法遍历清理监控缓存
- 新增 DeleteAgentLatestMetricsCache 方法清理探针指标缓存
- DeleteAgent 删除探针时增加清理内存缓存步骤
- CleanOrphanedAgentMetrics 手动清理时也清理内存缓存
- 前端隐藏"清理残留指标数据"按钮(已自动清理无需手动操作)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-10 16:14:04 +08:00
yumusb and Claude 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 and Claude Opus 4.6
ffd1461b80
feat: 优化通知和告警服务
...
- 重构告警通知逻辑
- 新增通知队列服务
- 优化告警信息处理
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-10 12:52:50 +08:00
yumusb
3919340d85
Update notifier.go
2026-04-08 21:15:31 +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
6ba52a1850
修复告警恢复当前值不正确的问题
2026-02-25 15:13:41 +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
3db7118258
强制更新公网 IPv4 和 IPv6 信息 fix #65
2026-02-07 15:24:40 +08:00
yumusb
7f922e7382
优化告警消息
...
优化告警消息,IP去重以及增加监控项的名称
2026-01-29 19:20:09 +08:00
dushixiang
c9b6d6ff5a
优化流量统计
2026-01-25 22:01:56 +08:00
dushixiang
43732e57e2
优化设备详情网络地址的展示,服务监控的默认增加默认排序。
2026-01-25 21:21:46 +08:00
dushixiang
3f3ddfea49
通知增加通信 IP 的展示,移除自定义 Webhook 的默认 json form 模版 fix #42
2026-01-25 21:02:09 +08:00
dushixiang
ff2afc82a5
移除管理员探针管理的分页功能,增加标签过滤,与公共页面保持一致的排序逻辑 fix #47
2026-01-24 21:51:23 +08:00
dushixiang
e957183588
增加 weight 字段的自动化迁移,按照 name 顺序分配 weight,从 1 开始递增 fix #35
2026-01-24 19:49:54 +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
b34ddd750f
SSH 登录监控增加 IP 归属地
2026-01-18 11:14:57 +08:00