92 Commits
Author SHA1 Message Date
dushixiang f391cb15a6 更新默认主题 2026-09-06 18:16:07 +08:00
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 cf053cb720 更新默认主题 2026-08-27 21:47:27 +08:00
dushixiang efa505f378 feat(web): support batch traffic stats configuration 2026-08-27 21:24:19 +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 58da45eba8 更新 pg 版本到 18 2026-08-26 20:34:21 +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 22e93ecf2b fix doc 2026-08-25 11:28:35 +08:00
dushixiang f9f3466b4a fix: 修复跨平台服务自动重启配置 2026-08-25 11:21:07 +08:00
dushixiang eaa2977847 fix(ci): publish Docker image to dushixiang/pika 2026-08-24 10:44:12 +08:00
dushixiang b00a9097a6 test build 4 2026-08-24 00:16:08 +08:00
dushixiang 29582f9124 feat: 支持 Telegram 代理和自定义反代 2026-08-24 00:14:07 +08:00
dushixiang 1634225e31 test build 3 2026-08-24 00:05:19 +08:00
dushixiang d0a5f304a0 feat: 增加每日计划维护免告警时段 2026-08-24 00:04:32 +08:00
dushixiang f2c5eb6e2e test build 2 2026-08-23 23:36:56 +08:00
dushixiang 4687cf7fc5 feat: 增加机器到期分级提醒 2026-08-23 23:24:33 +08:00
dushixiang 6a29286fb5 test build 2026-08-23 23:06:40 +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 7603906c36 refactor: 优化探针详情页与流量统计页
- 探针详情: /admin/agents 前缀匹配宽屏布局;状态并入页头,返回列表改为名称旁小字链接,编辑探针移至页头右侧;基本信息/流量/防篡改/SSH 配置去卡片嵌套,内容扁平化
- 流量统计: 重构页面布局,配置与使用情况分栏;流量限额支持 GB/TB 单位切换与自动适配(后端字节存储无需改动);限额输入与单位下拉组合;使用情况改为卡片呈现
2026-08-23 20:32:56 +08:00
dushixiang 6c8d2f13d3 feat: 告警规则实体化与服务监控按标签选探针
- 告警规则:独立实体(alert_rules 表),按优先级命中第一条生效;支持三种主机目标(全部/按主机/按标签)、7 类阈值、事件通知开关、IP 打码、推送渠道选择;未命中规则的主机不产生告警;列表支持外置启停
- 服务监控:新增按标签选择探针,与指定探针取并集,均为空时全部探针执行
- 公网 IP 采集:范围支持全部探针/按探针/按标签,兼容历史 custom 取值
- 告警历史:新增规则归属列;评估链路(指标/证书/服务下线/探针离线/到期提醒/事件通知)全部按主机命中规则驱动
- 设置页:左侧菜单改为浅色卡片容器并优化对比度,通知渠道移至公网 IP 采集之后;主菜单宽度调整为 240px
2026-08-23 19:53:35 +08:00
dushixiang c730873be3 refactor: 优化设置页面布局与样式
- 设置页全宽对齐其他页面,左侧分类导航去卡片化并支持桌面端吸顶
- 通知渠道改为「渠道列表 + 配置区」布局,支持未保存提醒与校验失败自动跳转
- 系统配置/公网IP采集/告警规则页去嵌套卡片,改为平铺分区(SettingsSection)
- 主题管理页上传按钮与警告提示合并为一行
- 调整全部页面的小布局问题
2026-08-23 16:35:19 +08:00
dushixiang 45284d31c6 优化重构管理页面 2026-08-12 22:55:45 +08:00
dushixiang 435245d639 优化重构管理页面 2026-08-12 22:55:36 +08:00
dushixiang ef34036bc0 fix: proxy public pages in admin dev server 2026-08-12 20:49:40 +08:00
dushixiang 33920265e0 refactor: improve theme settings layout 2026-08-12 20:35:10 +08:00
dushixiang acf3b6b57f refactor: split default theme into standalone repository 2026-08-12 20:00:48 +08:00
dushixiang d7cdbd7a91 移除过时文档 2026-08-12 19:04:01 +08:00
dushixiang a4f7c82de6 更新包路径 2026-08-12 18:59:29 +08:00
dushixiang 6ab1876899 refactor(admin): remove window globals, move AdminLayout to layouts/
运行时配置不再通过 window.PikaRuntime/window.SystemConfig 全局变量传递:
- 删除 global.d.ts 和 main.tsx 的预加载逻辑,直接渲染
- 新增 api/runtime.ts:useRuntimeConfig hook 通过 React Query 从 /api/config 获取
- Header/Sider/Login 改用 useRuntimeConfig 替代 window.SystemConfig
- ColorModeContext 改用 useRuntimeConfig 替代 window.PikaRuntime
- SystemConfig 保存后 invalidate runtime-config 缓存

AdminLayout 从 pages/ 移到 layouts/(布局框架不是页面)。
删除 components/index.ts(多余的 barrel export),PageHeader 改为直接导入。
2026-08-09 23:40:04 +08:00
dushixiang cda2585f1a refactor(admin): inline bootstrap.tsx into main.tsx
bootstrap.tsx 只有 3 个小函数,不值得单独文件。
合并到 main.tsx:运行时配置加载 + fallback + createRoot 全在一个文件里。
2026-08-09 23:26:55 +08:00
dushixiang ab95b57139 refactor(admin): remove redundant src/admin/ directory layer
src/ 下全是管理后台代码,不需要再套一层 admin/。
将 admin/{pages,components,assets} 提升到 src/ 下:
- src/admin/pages/ → src/pages/
- src/admin/components/ → src/components/
- src/admin/assets/ → src/assets/

所有 @admin/ import 改为 @/,删除 @admin alias 和 tsconfig 路径映射。
2026-08-09 23:25:36 +08:00
dushixiang 88224e3a8c chore: remove tracked yarn.lock 2026-08-09 23:20:42 +08:00
dushixiang 9a98f0a228 chore: ignore yarn.lock (project uses npm) 2026-08-09 23:20:28 +08:00
dushixiang b1a3d3d938 refactor(admin): remove shadcn/radix, split AdminLayout
移除 shadcn/ui 残留,统一到 antd 单一 UI 栈:

- 删除 components/ui/button.tsx 和 scroll-area.tsx(死代码,零引用)
- 删除 components.json(shadcn 配置)
- package.json 移除 @radix-ui/react-scroll-area、@radix-ui/react-slot、
  class-variance-authority 三个依赖
- AdminLayout 的 Radix ScrollArea 替换为 CSS overflow + thin-scrollbar 样式

拆分 AdminLayout(380行单文件 → 6个文件):
- menu.tsx: 菜单配置数据
- useThemeToggle.ts: 主题切换 + View Transition 动画
- Header.tsx: 顶部栏(logo/系统名/公共页面/主题切换/用户菜单)
- Sider.tsx: PC 侧边栏(菜单导航 + 版本信息)
- MobileNav.tsx: 移动端底部导航(修复 grid-cols-5 截断 7 项的 bug → 横向滚动)
- index.tsx: 布局壳

修复:useEffect 不再依赖 location(避免每次路由切换都重新请求版本接口)
删除遗留的 App.css
2026-08-09 23:18:11 +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 4bc998c77a 升级依赖 2026-08-01 12:51:49 +08:00
dushixiang be4919508a 升级前端依赖 2026-07-12 21:54:16 +08:00
dushixiang 07bce71bbe fix: clean up agent data on uninstall 2026-07-12 21:38:47 +08:00
dushixiang a510cf3be7 fix: correct traffic stats period display 2026-07-12 21:04:11 +08:00
dushixiang 3c4f978395 Refactor agent metrics collection and delivery 2026-07-12 21:00:04 +08:00
dushixiang 828c0b54ca Remove agent metrics buffer 2026-07-08 22:33:43 +08:00
dushixiang 60678ea1bc chore: upgrade dependencies 2026-07-08 21:56:14 +08:00
dushixiang 26bd90ed90 升级依赖 2026-05-23 15:51:24 +08:00
dushixiang 8df67c55ba fixed 2026-05-23 15:45:07 +08:00
dushixiang ff06e1aecb fix: sort offline monitors last 2026-05-23 15:36:23 +08:00
dushixiang c8ef936a71 feat: add agent expire alerts 2026-05-23 15:32:46 +08:00
dushixiang 0e670a82a0 修复默认 ip_trust_list 格式不正确的问题 2026-05-23 15:01:50 +08:00
dushixiang d3690832f9 优化发布构建资源加载 2026-05-07 21:45:22 +08:00
dushixiang e3dcdb73cc remove docker agent 2026-05-07 21:11:37 +08:00
dushixiang af50627d9b Adjust server list refresh interval 2026-05-07 21:10:13 +08:00
dushixiang f9e2de81ef fix: prevent agent version column collapse 2026-05-07 20:59:15 +08:00
dushixiang ac80cdc7b8 add postgres driver 2026-05-07 08:05:39 +08:00
dushixiangandClaude Opus 4.7 a6b70e33a9 修复网络连接图表 TS 编译错误,使用类型守卫替代不安全的类型断言
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 23:42:46 +08:00
dushixiangandClaude Opus 4.7 fe388df67d Windows 下 ICMP 探测改用 ping.exe,避开 raw socket 权限限制
pro-bing 在 Windows 上必须 SetPrivileged(true) 走原始套接字,普通账号
没有权限会直接失败。按平台拆分实现:unix 继续走 pro-bing,windows 调
系统 ping 并以 TTL= 作为跨语言锚点解析输出;同时校验 target 防止被
ping.exe 当作 flag 解析。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 23:39:40 +08:00
dushixiang 304b113c3b 升级依赖,修复 macOS arm64 温度采集导致的 bug 2026-05-06 23:30:42 +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
dushixiang 77967a37cd 修复告警记录间隔不对的问题 2026-05-05 16:25:16 +08:00
dushixiang 911269ce12 Merge pull request #82 from yumusb/main
Enhance API Key management and improve user experience
2026-05-05 10:05:30 +08:00
dushixiang e952a5a67f Merge pull request #80 from yumusb/main
一些优化
2026-04-22 14:55:09 +08:00
dushixiang ed828a83d3 Merge pull request #79 from yumusb/main
优化监控展示、告警服务和前端交互
2026-04-10 16:18:25 +08:00
dushixiang 2ffb315eb7 Merge pull request #78 from yumusb/main
Support metric bundles and enable WS compression
2026-04-08 11:35:12 +08:00
dushixiang b41e86b251 Merge pull request #74 from yumusb/main
Hide agent IP when unauthenticated
2026-02-24 13:02:13 +08:00
dushixiang 37d2058600 Merge pull request #69 from Hoinor/main
fix(agent): 排除PVE虚拟机 tap 开头的虚拟网卡,以避免虚拟机流量影响PVE宿主机监控数据。
2026-01-31 11:40:44 +08:00
dushixiang fa70172e5c Merge pull request #68 from zmf963/main
修复GPU监控显示问题
2026-01-30 15:14:21 +08:00
dushixiang dcf16c5e6d Merge pull request #67 from yumusb/main
优化告警消息
2026-01-29 20:27:35 +08:00
dushixiang 5bd3aef57e 更新 README.md 2026-01-25 09:28:58 +08:00
dushixiang 4685597411 Merge pull request #50 from yumusb/main
兼容 ubuntu 系的 计划任务采集、ssh登录日志的解析
2026-01-21 15:52:09 +08:00
dushixiang b556e0da6f Merge pull request #29 from yumusb/main
增加自定义 name 参数
2026-01-16 13:48:23 +08:00
dushixiang 2f014cef77 Merge pull request #19 from yumusb/main
网卡IP采集过滤本地单播地址
2026-01-15 10:20:40 +08:00
dushixiang c347ba815a Merge pull request #15 from yumusb/main
feat: Refactor system configuration injection to use a JSON script ta…
2025-12-30 21:19:42 +08:00
dushixiang 681c645be0 Merge pull request #16 from yumusb/feat/hide-login-form
feat: Add `passwordEnabled` configuration to conditionally display th…
2025-12-26 19:57:27 +08:00
dushixiang be0c74015a Merge pull request #14 from voidxxl7/main
修复corpSecret判断问题
2025-12-22 16:48:44 +08:00
dushixiang 13c5ab7ef5 Merge pull request #13 from voidxxl7/main
通知渠道增加企业微信应用
2025-12-22 16:21:04 +08:00
dushixiang 0ec6ca1677 Update README.md 2025-12-19 13:33:33 +08:00
dushixiang 25f382d216 Merge pull request #11 from yumusb/main
feat(notifier): 告警恢复增加持续时间,支持IP打码选项
2025-12-16 21:02:07 +08:00
dushixiang 00b01c7ad9 Merge pull request #10 from yumusb/main
fix(notifier): 修复不同告警类型的单位显示问题
2025-12-15 18:42:19 +08:00
dushixiang 833b99cea0 Merge pull request #8 from dushixiang/victoriametrics
Victoriametrics
2025-12-14 22:50:17 +08:00
dushixiang e0e6f8289a Merge pull request #7 from yumusb/main
自定义告警中 增加格式化后的时间字段
2025-12-10 15:46:29 +08:00
dushixiang 1a2735180a Merge pull request #6 from xbclub/main
新增NPU温度识别-修复部分设备读取温度失败导致的忽略全部设备温度问题
2025-12-09 16:25:08 +08:00
dushixiang e30586f84c Merge pull request #5 from xbclub/main
修复探针温度类型识别错误
2025-12-09 16:00:55 +08:00
dushixiang 1e8af8c86e Merge pull request #1 from bh1xaq/feat-loong64
增加对 LoongArch64 架构的支持
2025-11-28 15:38:40 +08:00