Skip to content

🛰️ 系统日志/监控

【系统日志/监控】把原系统日志、系统监控和安全日志菜单收口为一个可安装、可升级、可由 AI 查询的可观测性控制台。它用于回答三个最重要的问题:系统现在是否健康、资源消耗来自哪里、异常流量由谁通过什么接口产生。

系统日志/监控网络流量驾驶舱

功能亮点

  • 日志仍是第一入口:首个 Tab 提供日志总数、错误、警告、慢 SQL、慢执行、异常统计,支持组合筛选、搜索、每页 15 条默认分页和完整详情。
  • 从现象追到根因:热点接口按窗口总耗时贡献排序,同时展示请求数、平均/P95、异常率、活动请求与 W3C TraceId 时间线。
  • 网络流量可归因:同时展示网卡/容器累计与窗口增量、HTTP 请求体/响应体字节、未归因残差,并按接口、IP、帐号/匿名、租户和内容类型排名。
  • 高价值异常留证:普通高频样本只留短窗口内存;错误、慢请求、大文件和可疑传输通过有界队列异步写 MongoDB;长期趋势写入 MySQL 固定时间桶。
  • 运行态一屏诊断:覆盖进程 CPU/内存/线程/GC、主机、磁盘、网卡、Docker 容器、日志队列、正在执行与最近完成请求。
  • 安全数据与治理:统一查看安全访问、攻击事件、活动封禁,并在核对代理/NAT 后封禁或解封 IP;所有动作复核权限并写审计。
  • 主题化驾驶舱:界面跟随平台主题,异常标红并给出原因/方案;持续动效仅使用低成本属性,在页面隐藏或“减少动态效果”时自动暂停。
  • AI 原生:MCP 提供统一只读查询和有确认门的 IP 治理工具;能力目录、参数上限、权限与真实数据边界均可机器读取。

七个功能页

Tab主要能力典型问题
系统日志统计卡、类型/级别/月/关键字筛选、详情、Trace为什么报错、哪条 SQL 慢、参数和堆栈是什么
网络流量收发总量、HTTP 归因、残差、趋势、五类 TOP、大文件/可疑样本30GB 接收和 9GB 发送是什么、谁发的、发给谁
运行诊断请求率、并发、错误率、P95、热点接口/IP、自动建议CPU 高时最值得先查什么
请求与接口正在执行、最近完成、TraceId、状态与耗时是否有长请求或并发堆积
系统监控进程、主机、磁盘、网卡、Docker、队列是 CPU、GC、内存、磁盘还是容器问题
安全数据访问、攻击、IP 封锁与解封是否被扫描/攻击、是否需要处置某个 IP
应用日志当前 API 进程环形日志尾部、搜索和脱敏服务端最近输出了什么

系统日志/监控总览与七个功能页签

系统日志

系统日志默认显示 15 条,可切换 30、50、100 或 200 条。搜索和筛选在服务端执行,不会只过滤当前页。统计区域保留:

指标含义
日志总数当前月份与筛选条件下的总数
错误日志Level 为错误的日志
警告日志风险、降级或需要关注但未必失败的日志
慢 SQL数据库执行时间超过阈值的 SQL 日志
慢执行接口、V8、任务或外部依赖执行过慢
异常Exception、运行时异常或平台保护事件

点击任意行会打开平台级弹窗,遮罩整个系统框架。详情可包含日志级别、类型、耗时、用户、IP、Api、AppId、请求方法、客户端、节点、环境、TraceId、标题、内容、参数、其它信息、可执行 SQL 与 Trace 时间线。敏感键值在可信后端递归脱敏后才返回。

标题与副标题最多显示两行;完整内容通过详情查看。错误、长耗时和可疑流量会标红,悬停可查看常见原因与处置建议,例如:

  • 慢 SQL:检查执行计划、索引、分页、返回字段、排序/Join 与锁等待。
  • 慢执行:检查外部接口、逐行 I/O、大对象序列化、线程池与接口引擎循环。
  • 异常:沿 Trace 时间线先处理第一个根因,避免调用方无界重试。
  • 大流量:检查无分页响应、轮询、下载/上传、压缩、Range、CDN 与对象存储直传。

CPU 与热点接口怎么解释

热点接口的“耗时占比”表示它在选定窗口内贡献的请求总耗时比例,适合排序定位。例如某接口占 36%,说明先检查它最划算,但这不等于该接口精确消耗了 36% CPU。数据库等待、外部 HTTP、锁等待和序列化都会拉高请求耗时。

排查顺序:

  1. 记录当前节点、窗口、进程 CPU/内存、业务请求率、活动请求、P95 与错误率。
  2. 查看热点接口和来源 IP,区分“少量超慢”与“高频中等耗时”。
  3. 打开正在执行/最近完成请求,复制 TraceId。
  4. 在系统日志详情和 Trace 时间线定位首个慢步骤、SQL、外部调用或异常。
  5. 对同一接口以相同负载复测;同时看 P50/P95/P99、RPS、错误率、CPU、内存和分配率。

需要规范压测时参阅项目内 microi.skills/performance-testing/SKILL.md

网络流量:知道“谁、从哪来、通过什么、传了多少”

网络驾驶舱分三层展示数据,避免把容器 NetIO 误解为用户下载量:

层次能回答什么不能回答什么
网卡/容器累计与窗口增量API 节点或容器总体收发规模与速率不能直接归属到某个用户或 HTTP 接口
HTTP 可归因字节接口、IP、帐号/匿名、租户、内容类型的请求体/响应体字节不包含 TLS/HTTP 头、重传和非 HTTP 通信
未归因残差提醒还有数据库、Redis、Mongo、MQ、对象存储、外部 HTTP 或协议开销需要查不能强行算给某个帐号、IP 或接口

五类流量排名

  • Endpoint:定位大响应、无分页接口、重复轮询、上传/下载路由。
  • IP:定位高频来源和可疑外部地址;封禁前确认可信代理和 NAT。
  • User:授权完成后按帐号聚合,未携带有效身份统一标记“匿名”。
  • Tenant:共享 API 节点按请求租户聚合。
  • ContentType:识别 JSON 大响应、二进制下载、表单上传等资源类型。

系统只对大文件、错误、慢请求或可疑传输保留有界明细,包括清洗后的接口、IP、帐号/匿名、租户、内容类型、收发字节、状态、耗时和 TraceId;不保存文件内容、请求正文或响应正文。

发现异常后的建议

现象常见原因优先措施
单接口响应字节很大无分页、字段过多、重复数据、文件走 API分页/选择字段、压缩、对象存储直传、Range/CDN
匿名上传或可疑样本接口匿名开放、鉴权失效、扫描攻击核对业务、关闭匿名、限流、文件类型/大小校验、必要时封禁
HTTP 很低但容器 NetIO 很高DB/Redis/Mongo/MQ/对象存储/外部 HTTP对照连接与依赖指标、反向代理和对象存储日志
同一 IP 高频小请求轮询、爬虫、攻击、错误重试缓存/SignalR、退避、速率限制、核对后封禁
4xx/5xx 大响应错误页/堆栈过大、调用方反复失败缩小错误响应、按 Trace 修根因、限制重试

存储与性能架构

text
HTTP 热路径
  ├─ 原子计数 + 有界分钟桶(内存,当前节点)
  ├─ TOP N 维度聚合(接口/IP/帐号/租户/内容类型)
  └─ 仅高价值样本 → 有界日志队列 → MongoDB 批量写入

后台汇总
  └─ 5 分钟固定桶 + 确定性幂等键 → MySQL 批量 upsert

设计约束:

  • 请求线程不逐条同步写 MySQL/MongoDB,也不序列化完整请求或响应。
  • 队列、维度基数、明细大小和保留时间都有硬上限;故障时走 spool/WAL,不创建无界内存队列。
  • 历史趋势直接读取 MySQL 汇总,不能每次扫描 MongoDB 明细重新统计。
  • Redis 只用于短期热点结果、限流或租约;Key 必须包含租户和查询摘要,写入后主动失效,并保留短 TTL。
  • 非重要高频日志适合 MongoDB;长期统计、治理记录和可索引汇总适合 MySQL。

权限、隐私与作用域

  • 系统观测敏感数据和 IP 治理只允许平台可观测性管理员,通常要求 Level >= 9999,最终以服务端权威判定为准。
  • 不记录 QueryString、Cookie、Authorization、Token、密码、Secret、API Key、请求正文或响应正文。
  • 文件只记录经过清洗且有长度上限的名称/扩展名/数量/字节。
  • Snapshot、活动请求、应用日志、进程和 Docker 数据是当前节点视角;多节点需要逐节点采集或接入统一遥测平台。
  • Windows 宿主机网卡计数可能包含同机其它进程;Linux 容器网络命名空间更接近容器边界,但仍包含全部协议和依赖通信。

AI / MCP 调用

连接 Microi MCP 后,先发现能力:

json
{
  "action": "microi_query_system_observability",
  "params": { "action": "Capabilities" }
}

查询最近 24 小时接口流量:

json
{
  "action": "microi_query_system_observability",
  "params": {
    "action": "TrafficHistory",
    "dimensionType": "Endpoint",
    "hours": 24,
    "pageIndex": 1,
    "pageSize": 15
  }
}

查询日志:

json
{
  "action": "microi_query_system_observability",
  "params": {
    "action": "Logs",
    "keyword": "超时",
    "level": 3,
    "searchMonth": "202608",
    "pageIndex": 1,
    "pageSize": 15
  }
}

IP 治理必须两步执行。第一次不传 confirmExecution 只返回 dry-run;核对后再传精确确认值:

json
{
  "action": "microi_manage_system_observability",
  "params": {
    "action": "BlockIp",
    "ip": "203.0.113.10",
    "blockMinutes": 30,
    "reason": "核对后确认为异常高频访问",
    "confirmExecution": "BlockIp:203.0.113.10"
  }
}

完整 AI 决策、存储、权限、扩展和验收规范见 microi.skills/system-observability/SKILL.md

安装与升级

【系统日志/监控】由框架底层能力和应用商城资源共同组成:

  1. 先升级 Microi 框架到兼容版本(最低 v7.5.8,推荐当前最新版)。
  2. 在【应用商城】安装或更新【系统日志/监控】应用。
  3. 应用包会交付数据表、字段、索引/DDL、Managed 接口引擎、菜单、微服务全部源码和编译产物。
  4. 刷新登录态后进入菜单,确认七个 Tab、默认 15 条分页、日志详情、网络历史与安全数据。
  5. 通过 MCP 查询 CapabilitiesSnapshot,确认 AI 工具、权限和目标租户均正确。

只更新框架不会自动替代租户已安装的商城应用;只更新应用也不能补齐旧后端缺失的可信原子能力。

验收清单

  • [ ] 系统日志是第一个 Tab,统计、筛选、搜索、15 条默认分页和详情可用。
  • [ ] 详情弹窗遮罩完整平台框架,内容脱敏,标题/副标题最多两行。
  • [ ] 错误、长耗时和可疑流量标红,悬停可看到原因与解决方案。
  • [ ] 热点接口、活动请求、Trace、进程、主机、Docker、队列、应用日志可回读。
  • [ ] 网卡/容器、HTTP 归因和未归因残差分层展示,边界文案真实。
  • [ ] Endpoint/IP/User/Tenant/ContentType 排名及 24 小时 MySQL 趋势可分页查询。
  • [ ] MongoDB 故障不阻塞业务请求,MySQL 固定桶重复汇总保持幂等。
  • [ ] MCP 能发现查询/治理工具,Trace 缺参拦截,IP 治理先 dry-run 再精确确认并审计。
  • [ ] 主题、深色、移动端、减少动态效果和低配设备渲染均通过检查。

底层 V8 原子方法签名见V8 后端函数:系统日志/监控可信原子

MIT License.