跳到正文

事件中心与通知

事件中心记录系统发生过什么;通知规则决定哪些事件要发送到哪里。先让事件记录稳定,再建立少量有价值的通知,避免把每次正常访问都变成告警噪声。

数据之间的关系

对象作用
事件一次登录、封锁、更新或状态变化的结构化记录
提供商Webhook、邮件或消息推送通道的连接配置和凭据
规则按事件类型、窗口、阈值、聚合维度和冷却时间决定是否通知
通知目标一条规则引用的提供商及该规则专用的接收目标
投递记录规则触发后,每个目标各自产生的一次发送与重试记录

删除事件不会删除已产生的投递记录;清空投递记录也不会删除事件或规则。删除规则只停止后续通知,不影响已有事件。

事件页

事件页识别的系统事件包括:

  • 认证:登录成功、退出登录、登录失败、会话 IP 漂移;
  • 安全:扫描器拦截、网关节流封锁、网关可见性拦截、WAF 阻断;
  • SSH:登录成功、登录失败、IP 封锁;
  • 网络:DDNS 更新、FRP 连接/断开、Cloudflared 连接/断开、导航面板同步失败/恢复;
  • 远程设备:WOL 广播完成(管理员、传送门、点灯科技或巴法云)和 SSH 关机;
  • 终端:SSH 目标变更、主机指纹确认、连接测试、本机终端启用/禁用,以及本机或远程会话的创建、结束、退出与丢失;
  • 系统:应用更新提示、CPU 告警/恢复、内存告警/恢复;
  • 运行时:组件启动、停止、重启、健康检查失败、恢复和异常退出。

事件级别分为信息、注意、错误和严重;来源系统分为管理后台、认证代理、系统监控和运行监控。

页面支持:

  • 搜索事件 ID、IP、会话或凭据;
  • 按事件类型、级别和来源系统筛选;
  • 分页查看并打开结构化详情;
  • 删除单条或批量删除所选事件;
  • 清空全部事件。

“清空事件”会删除事件中心保存的全部事件,括号中的数量用于说明当前视图匹配数,并不表示只清除当前筛选结果。此操作不可恢复,但不会清除通知规则和投递记录。

事件详情根据类型显示凭据、认证方式、会话、IP 与属地、失败次数、封锁时间、DDNS 地址变化、Trace ID、WAF 规则、隧道 PID、WOL 目标与投递来源、资源阈值等字段。网关可见性拦截还会记录请求 Host、路径、方法,以及生效的是网关全局还是 Host 自定义范围。排障时可复制详情,与请求日志、WAF 日志、隧道日志或设备在线状态对照。

本机终端事件会标明终端后端、执行身份及是否为特权身份,便于确认会话实际以谁的权限运行。终端事件只审计配置变化和会话生命周期,不保存管理员在 Shell 中输入的逐条命令;需要命令级留痕时,应在宿主机或远程 SSH 目标另行配置审计。

页面顶部的 Trace ID 查询 可粘贴响应头、拦截页、请求日志或通知中的完整 Trace ID。全链路追踪会把同一请求关联到 WAF、系统事件、通知触发和投递记录;旧事件或未启用对应采集时可能只显示部分链路。

认证和安全类事件中的 IP 会复用 IP 属地缓存。首次遇到尚未缓存的地址时,事件可以先保存并异步补齐属地;通知投递会尽量使用已经补齐的字段。不要因为刚生成的事件暂时没有属地就判断地址识别失败,稍后刷新并与 IP 属地查询 对照。

核心服务状态与诊断

事件中心 → 状态 每 5 秒刷新管理服务、Go 网关进程、网关数据面、认证桥接、存储和配置同步的健康状态。进程卡还会显示版本、PID、启动时间、CPU、内存或 Go 运行时信息;服务卡显示探测延迟和连续失败原因。受上游阻断 表示当前组件自身可运行,但依赖组件尚未就绪。

状态页提供三类排障材料:

操作内容与边界
复制诊断信息复制当前版本、平台、组件健康状态和最近运行事件的 JSON 摘要
查看日志查看管理服务或 Go 网关最近 200 条已脱敏核心运行日志;不包含请求、WAF 或认证记录
导出诊断包下载 diagnostics.json 及有界的管理、网关和监督进程日志,适合提交故障材料

核心诊断日志总占用上限为 6 MiB,达到上限后会轮换或丢弃低优先级信息;状态页会显示覆盖时间、磁盘占用和已丢弃的 INFO 数量。清空某个组件日志只移除该组件当前和上一代核心运行日志,不会删除运行事件、崩溃日志或其他组件日志。

诊断日志会对常见密钥字段脱敏,但诊断包仍可能暴露版本、平台、目录、组件状态和故障时间。对外分享前应检查内容;请求明细应从请求日志或 WAF 日志单独导出,不要把三者混为同一种日志。

Rust 运行诊断

事件中心 → 状态 → 运行诊断 点击 开始 60 秒采样,按每秒一次采集当前 Rust 管理进程的资源、后台任务与 SQLite 操作统计。打开窗口不会自动采集;可以提前停止并保留结果,关闭窗口后服务端仍会自动完成。

采集内存详情 是独立的按需快照,不会执行内存回收。导出 JSON 可保留逐秒样本、操作统计和内存详情,状态页诊断导出也包含当前报告。新一轮采样会替换上一轮,服务重启后报告丢失,应先导出。

CPU 以一个逻辑核满载为 100%,首个无基线样本不应当作零;任务经过时间包含等待,不能当作 CPU 时间。Linux 提供较完整的资源信息,macOS 主要提供进程 CPU 与 RSS,Windows 主要提供进程工作集;不可用字段不等于零。报告不包含其他实例或 Go 网关的资源占用,单次 RSS 升高也不足以确认内存泄漏。

Go 网关内存

Go 网关进程卡右下角的内存按钮可以调整垃圾回收强度和 Go 运行时软内存上限,也可以立即执行一次回收。状态卡中的 Heap、RSS、GC 次数、活动请求和连接数用于判断趋势;软上限只约束 Go 运行时管理的内存,不等于进程 RSS 的硬上限。

  • 积极(GOGC 50) 更频繁回收,通常降低内存但增加 CPU 开销;均衡(100) 是默认值;宽松(200) 更重视吞吐量。自定义范围为 25–500
  • 内存上限默认使用自动模式:取运行环境有效内存的约四分之一,并限制在 128–512 MiB;无法读取有效内存时使用 256 MiB
  • 手动上限可设为 64–4096 MiB,且不能超过当前有效系统内存的 50%。保存值会在网关启动时先于业务流量恢复。
  • 立即回收 会短暂增加 CPU 或造成暂停,只适合排障或确认回收效果,不应当作周期性优化按钮反复点击。

低内存 NAS 或容器先保留自动上限;只有状态页持续显示 Heap / RSS 压力,并已排除请求量、深度监控或异常连接后,再逐步降低 GOGC 或设置手动上限。调整后同时观察 CPU、延迟和网关健康状态。

CPU 与内存监控

资源监控只在运行时能力可用的平台启动;当前 Windows 部署不提供该能力。Linux 类环境从系统资源信息计算整机或当前容器可见范围内的 CPU 与可用内存,并生成告警和恢复事件。它不是进程级性能分析器,不能指出具体由哪个进程造成负载。

当前默认规则为:

指标告警阈值恢复阈值采样间隔持续时间
CPU80%60%5 秒30 秒
内存80%60%5 秒30 秒

使用率必须持续达到告警阈值才产生告警;告警后还要持续回落到恢复阈值,才产生恢复事件。60%–80% 的中间区间用于避免临界值附近反复告警。短暂尖峰不会立即形成事件,第一条 CPU 样本也只用于建立计算基线。

当前管理界面可查看资源事件并为其配置通知,但没有调整上述采样和阈值的控件。不要把通知规则中的时间窗口、触发次数误认为资源采样阈值:前者决定已有事件如何发送,后者决定事件何时产生。

Docker 中看到的是容器运行环境可见的 CPU 和内存边界;若部署时设置了资源限制,告警应结合这些限制解释。没有资源事件时,先确认当前平台能力和事件系统正常,再检查负载是否确实持续超过阈值。

配置提供商

进入 事件中心 → 通知 → 提供商,先创建并测试发送通道。当前目录包括:

  • Webhook;
  • WxPusher;
  • Server 酱;
  • PushPlus;
  • 企业微信;
  • 钉钉;
  • 飞书;
  • 邮件;
  • PushDeer;
  • 鸿蒙 MeoW;
  • MagicPush;
  • Bark;
  • Telegram。

不同通道支持的 Markdown、操作按钮、提及和消息长度不同,以新增提供商时显示的字段与能力为准。

创建时设置名称、类型、启用状态和连接配置。部分通道还提供默认接收目标,规则中的同名目标字段留空时会沿用提供商默认值。WxPusher 当前需要安装并登录其官方 App,不能继续依赖微信内直接收取消息。

保存前可以测试表单中的草稿配置,保存后也可从列表再次测试。敏感字段在编辑时会显示“已配置,留空则保持不变”;不要为了保留密钥而重复粘贴旧值。

Webhook URL、Token、SMTP 密码、接收标识等属于敏感配置,不能贴到公开日志或截图中。提供商已被规则引用时,后端会阻止删除;应先调整或删除对应规则。

Webhook 自定义内容

Webhook 提供商可以设置自定义请求头,以及标准、JSON 或文本请求体;规则的 Webhook 目标可继承提供商设置或单独覆盖请求体。先预览,再发送测试请求,确认第三方接口收到的格式。

编辑器的“通知详情”按事件列出可插入字段,“公共详情”提供事件类型、风险级别、来源、发生时间与聚合统计。使用 {{message.fact_values.login_ip}}{{message.fact_values.credential_name}} 等固定字段名读取通知详情;字段名不随语言或详情排列变化,值仍是通知中格式化后的内容。需要原始数据时使用 event.payload.*

{{message.fact_values}} 可引用整个对象;JSON 字符串仅包含一个变量时保留其类型,混合文本则转为字符串。事件不提供的字段会在预览中标记缺失,独立 JSON 变量为 null,嵌入文本时为空字符串,不会阻止发送。

样例 Context 留空时使用服务端样例;填入样例 JSON 后可改成目标事件数据,供标准或自定义请求体预览和测试使用,不会保存或影响真实投递。重试使用原消息快照,历史消息可能没有 fact_values

鸿蒙 MeoW

选择 鸿蒙MeoW 后填写:

字段说明
服务地址官方接口使用默认的 https://api.chuckfang.com;自建兼容服务填写其根地址
接收昵称MeoW 应用中配置的用户昵称,不能包含 /;它相当于接收标识,应按敏感凭据保存
超时秒数默认 5 秒,可设置 1~30 秒

该通道发送 Markdown 通知并支持通知操作,不支持提及。保存后先发送测试消息,确认鸿蒙设备收到内容,再把提供商加入通知规则。

创建通知规则

进入 事件中心 → 通知 → 规则。至少存在一个提供商后才能创建规则;每个事件类型当前只允许一条规则。新增时只列出尚未配置规则的事件,可一次选择多个事件并批量创建。

批量新建使用以下默认触发条件:

字段新建默认值说明
时间窗口60 秒在该窗口内累计同组事件
触发次数1 次达到次数后生成通知
聚合维度按事件自动推荐决定哪些事件计入同一组
冷却时间60 秒同组触发后抑制重复通知

规则创建后可逐条编辑触发条件。聚合维度包括全局、IP、会话、主题对象、主机名和提供商。自动推荐示例:

  • 登录失败、扫描器、网关节流、WAF 和 SSH 事件按 IP;
  • 网关可见性拦截按全局聚合;
  • 会话 IP 漂移按会话;
  • DDNS 更新按提供商;
  • CPU 与内存事件按主机名;
  • 隧道与应用更新按主题对象;
  • 远程唤醒完成按主题对象区分设备;
  • 登录成功和退出登录按全局。

一条规则可添加多个提供商,但同一个提供商在该规则中只能添加一次。部分提供商需要在规则目标中填写接收人、Topic、Chat ID 或其他目标字段;这些字段只影响当前规则。

推荐起步规则

  • 登录失败:按 IP 聚合,在短窗口达到多次后通知;
  • 扫描器、网关节流、WAF 和 SSH 封锁:按 IP 聚合;
  • 网关可见性拦截:默认按全局聚合;流量较大时提高阈值或延长冷却时间,避免同一策略产生通知风暴;
  • DDNS:按提供商聚合,关注失败结果;
  • FRP 与 Cloudflared:按主题对象区分不同隧道;
  • 导航面板同步:为失败和恢复事件按主题对象配置规则,避免单次短暂网络错误产生持续告警;
  • CPU、内存:同时为告警和恢复事件配置规则;
  • 应用更新:按主题对象发送一次提示。
  • 远程唤醒:按主题对象聚合;失败结果用于告警,成功结果仍只表示广播已提交,不代表设备已经上线。

登录成功、SSH 登录成功等高频事件如果阈值为 1,可能产生大量通知。应结合实际访问量调整窗口、阈值与冷却时间。

应用更新事件包含发布说明时,系统会把当前可更新版本的发布说明摘要同时写入纯文本和 Markdown 正文,因此只展示正文的推送渠道也能收到,而不只存在于结构化详情中。通知不会把多个历史版本的说明连续拼接。需要查看完整或更早内容时,应前往 版本与更新 页面或项目发布记录。

查看投递结果

投递记录 显示触发时间、规则、提供商、状态、消息摘要和尝试次数。状态包括排队中、发送中、成功、失败待重试、失败放弃和已跳过。

详情中可查看:

  • 规则、提供商和当前状态;
  • 尝试次数、触发时间、发送时间和下次重试时间;
  • 失败或跳过原因;
  • 发送时冻结的标题、摘要和正文快照;
  • 已脱敏的请求摘要和响应摘要。

排查“规则没有触发”和“提供商没有收到”时按以下顺序:

  1. 先确认事件本身已经产生。
  2. 检查该事件类型是否有规则,规则和目标是否仍启用。
  3. 检查窗口、阈值、聚合维度和冷却时间。
  4. 有投递记录时查看状态、失败原因、尝试次数和下一次重试时间。
  5. 检查提供商连通性、凭据、接收目标和对端限流。

清空投递记录会删除全部投递历史,无法恢复,但不会影响事件和后续规则触发。需要审计时先复制相关详情。

通知系统用于辅助响应,不代替请求日志、WAF 日志和备份。

QQ群:1081609274