00c0a1fb7f
- 接入 NDRServer 告警和流量日志,支持凭据与任务管理 - 支持分页拉取、窗口拆分、调度优先级及 WAL 持久化后推进断点 - 增加迟到告警规则重放,优化多条泛化规则选择和事件时间处理 - 补充回归测试、数据库升级脚本及部署文档
2.4 KiB
2.4 KiB
设备 API 适配器开发说明
API 拉取代码放在 syslog-serve,不单独建 Maven 模块。
如果只是接入当前 NDRServer,不需要重新写整套拉取程序。先核对现有适配器是否缺少字段或接口参数,有差异时只修改 NDR 适配器。
NDRServer
现有代码:
syslog-serve/src/main/java/com/haobang/apipull/adapter/ndr/NdrServerApiAdapter.java
测试代码:
syslog-serve/src/test/java/com/haobang/apipull/adapter/ndr/NdrServerApiAdapterTest.java
syslog-serve/src/test/java/com/haobang/apipull/adapter/ndr/NdrServerSpringWiringTest.java
现有 NDR 拉取实现如需补充特殊参数或字段处理,直接修改上述适配器和测试。定时任务、线程池、checkpoint 和 Kafka Producer 使用项目公共实现。
新厂商
新建厂商目录:
syslog-serve/src/main/java/com/haobang/apipull/adapter/<vendor>/
实现 ApiPullAdapter 并加上 @Component。Spring 启动后会自动注册。
接口方法的作用:
| 方法 | 要返回什么 |
|---|---|
type() |
厂商和协议版本的固定名称,例如 VENDOR_X_V1 |
version() |
当前代码的协议版本号 |
streams() |
支持的日志类型,例如告警、流量日志 |
minimumWindowSeconds() |
设备允许查询的最小时间范围 |
validateConfig() |
检查地址、分页大小和超时时间 |
pull() |
查询指定时间范围中的一页数据 |
适配器负责以下内容:
- 认证和 Token;
- 请求地址、参数和时间格式;
- 单页数据查询;
- 响应解析和厂商错误码;
- 事件时间、设备侧 ID 和平台事件 ID;
- 原始 JSON 及必要的兼容字段。
调度、并发、窗口拆分、checkpoint、WAL 和 Kafka 由公共代码处理。适配器不要直接写 Kafka,也不要自行推进 checkpoint。
如果新厂商不是 AppKey/AppSecret 认证,还需要一起调整凭据 DTO、ApiCredentialService、DatabaseCredentialProvider 和数据库脚本。
开发完成后至少检查:
- 认证成功、认证失败和 Token 过期;
- 接口返回空数据时任务能够正常推进;
- 多页数据没有漏页;
- 事件时间来自设备日志,不使用接口响应时间;
- 同一条设备日志重复拉取时
eventId保持不变; - 接口异常时 checkpoint 不推进;
- 单元测试和 Spring 启动测试通过。