ELK Index Action
ELK Index Action 用于从 Kibana action 写入的 Elasticsearch 索引中轮询告警。它适合无法让 Kibana 直接 POST 到 ASP Webhook,或希望先把告警 action 落到 Elasticsearch 再由 ASP 拉取的场景。
工作方式
Kibana Rule
-> Index Action 写入 Elasticsearch 索引
-> ASP ELK action worker 轮询 Action Index
-> 转换为 Kibana webhook payload
-> 写入 Redis Stream
-> Module 处理告警并生成 Case / Alert / Artifact配置位置
ELK 连接、Action Index、轮询间隔和读取数量在 SIEM 设置 中配置。
本页只说明接入流程、Kibana action 内容和 worker 运行方式。
创建 Index Connector
在 Kibana 中创建 Index Connector,将 action 写入指定 Elasticsearch 索引。


索引名可以自定义,但需要与 SIEM 设置中的 Action Index 保持一致。

Kibana Action 内容
创建 Kibana Alert Rule,配置查询条件、执行周期和触发条件。


为 Rule 添加 Index Action,并使用前面创建的 connector。


Action 写入的文档需要包含规则名和命中的原始事件。ASP 会读取:
| 字段 | 说明 |
|---|---|
rule.name | 作为 Stream 名称和告警规则名。 |
context.hits | 告警命中的事件列表,可以是数组,也可以是 JSON 字符串。 |
示例结构:
{
"@timestamp": "{{context.date}}",
"rule": {
"name": "{{rule.name}}"
},
"context": {
"hits": "[{{context.hits}}]"
}
}等待 Rule 触发后,Action Index 中会出现新的告警文档。

Worker 运行与验证
Docker Compose 生产部署中,asp-worker-elk-action 会随发布包默认启动。启用、Action Index、轮询间隔和读取数量都在 SIEM 设置 中配置,不需要在生产环境手动传入启动参数。
源码开发环境中,如果需要单独调试 ELK Index Action,可以在 backend 目录手动启动 worker:
python manage.py run_elk_action_worker可以在 Redis 或 Custom Console 中查看 worker 写入的消息,确认后续 Module 能够消费。

与 Webhook 的区别
| 方式 | 说明 |
|---|---|
| Webhook | SIEM 直接 POST 到 ASP 的 /api/webhook/kibana/ 或 /api/webhook/splunk/。 |
| ELK Index Action | Kibana 先把 action 写入 Elasticsearch 索引,ASP 再由 worker 轮询读取。 |
两种方式进入 ASP 后都会写入 Redis Stream,并交给 Module 继续处理。
使用建议
- 如果网络允许 SIEM 直接访问 ASP,优先使用 Webhook。
- 如果只方便让 Kibana 写入 Elasticsearch 索引,可以使用 ELK Index Action。
- 保证 action 文档中的
rule.name和context.hits字段完整。 - 确认
asp-worker-elk-action正常运行,否则索引中的 action 不会被拉取处理。 - 需要完整示例时,参考 Custom Module 示例。
下一步
- SIEM — 配置 ELK 连接、Action Index 和轮询参数。
- Module 开发 — 编写消费 ELK Action Stream 的 Module。
- Custom Console — 检查 Stream 消息和 Module 加载状态。