历史报警存储
插件用途
将达到指定等级的报警产生和恢复记录写入数据库,供历史报警查询和报表使用。
转发组范围、离线缓存和启停操作见数据转发。本页只说明历史报警存储特有的表、等级过滤、双库镜像和调试功能。
保存并查询一条报警
- 先给一个测试变量设置高限报警,不要用生产设备试报警。
- 打开“开发配置 → 数据转发”,新增转发组,范围选“手动选择”并保存。重新编辑组,将这个测试变量加入“转发变量”并保存。
- 在该组下新增目标
Demo_Alarm_Target,插件选择“历史报警存储”。 - 目标属性中选择数据库类型
Sqlite,连接字符串填Data Source=manual-alarm.sqlite;journal mode=WAL。保持历史报警表名historyAlarm、最小报警等级0,脚本留空、双库镜像关闭,其余保持默认。 - 保存并启用组和目标。数据库文件位于网关运行目录,该目录必须可写。
- 在仿真或测试变量中先产生一次报警,再让它恢复。目标启动以前已经发生的事件不能作为本次存储验证。
- 进入“数据与告警 → 报警查询 → 历史报警”,在“转发目标”中选择刚建的目标,选项按“组名/目标名”显示,例如
Demo_Alarm_Group/Demo_Alarm_Target。选择覆盖本次操作的时间范围并确认,点击刷新图标,再核对变量、报警值与事件时间。
使用正式数据库时,将第 4 步改为实际数据库类型和连接字符串。要筛选严重报警再调整“最小报警等级”;它不是在这里设置变量的报警阈值。
目标基本信息
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 所属转发组 | - | 必须选择已保存的转发组。 |
| 目标名称 | - | 必填,同一转发组内不能重复。 |
| 启用 | 开启 | 关闭时不会初始化或写入报警表。 |
| 日志级别 | Info | 排查数据库或报警写入问题时临时使用 Debug。 |
| 启动超时 | 60 秒 | 页面可填 1~3600 秒。 |
目标属性
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 数据库类型 | SqlServer | 支持 SqlServer、MySql、Sqlite 和 PostgreSql。 |
| 分表策略 | 不分表 | 关系型数据库可按天、周、月、季度、年或自定义服务分表。 |
| 连接字符串 | 开发环境 SQL Server 示例 | 替换为实际数据库地址、账号和密码;账号需要建表、查询、插入和删除权限。 |
| 历史报警表名 | historyAlarm | 保存报警产生和恢复记录的表名;多个目标建议使用独立名称。 |
| 保留天数 | 3650 | 正整数;小于 1 的值会归一为 1。清理按报警 EventTime 执行。 |
| 历史报警表脚本 | 空 | 从表达式选择器选择 Dynamic SQL 脚本,由脚本负责建表、写入和清理;留空使用标准表。 |
| 时区偏移 | +08:00 | 填 +08:00、-05:00 等固定偏移;留空表示 UTC。查询时使用相同约定。 |
| 最小报警等级 | 0 | 只接收 AlarmLevel >= 此值的报警;低于此值的报警和恢复事件都会被忽略。 |
| 双库镜像 | 关闭 | 仅关系型标准表支持;填写备用库后主库和备用库同时写入。 |
关系型数据库连接字符串
| 数据库 | 示例 |
|---|---|
| SQL Server | Server=127.0.0.1,1433;Database=thingsgateway_alarm;User Id=history_user;Password=<密码>;TrustServerCertificate=True; |
| MySQL | Server=127.0.0.1;Port=3306;Database=thingsgateway_alarm;Uid=history_user;Pwd=<密码>; |
| SQLite | Data Source=DB/alarm.db;journal mode=WAL |
| PostgreSQL | Host=127.0.0.1;Port=5432;Database=thingsgateway_alarm;Username=history_user;Password=<密码>; |
“双库镜像”仅支持 SQL Server、MySQL、SQLite 和 PostgreSQL。启用时,主库与备用库必须是不同的数据库实例,且不能同时配置“历史报警表脚本”。镜像对话框中的自动检查、自动补齐和容量设置与历史数据存储相同。
目标变量属性
该插件没有目标变量级附加参数。报警是否写入只由转发组范围和“最小报警等级”决定。
缓存与容量
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 启用失败重试缓存 | 开启 | 建议保持开启,数据库暂不可写时保留报警,恢复后自动补发。 |
| 缓存文件最大行数 | 262144 | CacheDB 出站报警上限,超过后删除最旧数据。 |
| 上传分片大小 | 2000 | 每次写入或补发的最大报警数。 |
| 内存队列上限 | 100000 | 内存报警队列上限,持续超限仍可能丢弃旧数据。 |
| 过滤离线数据 | 关闭 | 该字段由通用目标属性提供,但历史报警的接收条件实际由转发组范围和“最小报警等级”决定;需要排除离线来源时应在转发组或报警规则中处理。 |
| 并发上传数量 | 1 | 默认串行写入;确认数据库承受能力后再调整。 |
目标调试
进入“开发配置 → 数据转发”,选择当前转发组和目标后打开“调试”。
| 功能 | 作用 |
|---|---|
| 转发管线 | 查看转发组范围和进入目标的报警数据。 |
| 缓存出站 | 查看待写报警、保留重试和最近错误。 |
转发管线

“转发管线”用于确认转发组范围、目标状态和进入目标的报警数据。
缓存出站

“缓存出站”显示报警队列、CacheDB 待处理数量、保留重试数和最近错误。启用离线缓存后,数据库恢复时会继续写入待处理报警。
验证方法
- 启用转发组和目标,确认目标在线。
- 使用允许测试的变量触发一条不低于“最小报警等级”的报警,再恢复该报警。
- 查询历史报警表,确认产生和恢复记录均已写入。
常见问题
| 现象 | 检查方法 |
|---|---|
| 报警没有入库 | 检查报警是否实际触发、报警等级是否达到下限、目标是否在线。 |
| 目标无法启动 | 检查数据库连接、表名、分表策略和账号权限。 |
| 数据库恢复后未补写 | 检查是否启用离线缓存,并查看“缓存出站”和目标日志。 |
| 双库镜像保存或启动失败 | 确认主库与备用库不同、数据库类型受支持,且未配置历史报警表脚本。 |