Wazuh将其数据保存在两个地方。在Wazuh管理器上,警报被写入/var/ossec/logs/alerts/alerts.json中,每行一个JSON对象,并每天按日期压缩文件进行轮换。相同的警报被索引在Wazuh索引器(OpenSearch)中,在wazuh-alerts-4.x-*中。无论哪种方式,触发警报的原始日志行都在full_log中。要导出每个事件,而不仅仅是匹配规则的那些,管理器需要启用归档。
Wazuh是最广泛使用的开源SIEM和XDR,一旦知道去哪里找,数据就非常容易获取。Prime Core为Wazuh提供了23,542条检测规则,映射到671个MITRE ATT&CK技术。以下是如何导出警报和事件,清理它们,并在LogTotal中免费调查它们。
在你开始之前
警报还是归档? 警报是匹配Wazuh规则的事件,超过警报级别的阈值。归档保存了管理器接收到的所有内容,但仅当在ossec.conf中启用了logall_json时。如果问题是“该主机上还发生了什么?”,你需要归档,并且它们只存在于开启的那一刻。
权限。 在管理器上,文件属于wazuh用户和组,因此使用sudo。对于索引器,你需要一个对警报索引具有读取访问权限的用户。
保留。 管理器的轮换文件会保留,直到有人删除它们。索引器保留它的索引生命周期策略允许的内容。
选项1:管理器上的文件
# 今天到目前为止的警报
sudo cp /var/ossec/logs/alerts/alerts.json ./wazuh_alerts_today.jsonl
# 过去的一天(轮换并压缩)
sudo zcat /var/ossec/logs/alerts/2026/Oct/ossec-alerts-19.json.gz > wazuh_alerts_1019.jsonl
# 仅一个代理
jq -c 'select(.agent.name == "web-03")' wazuh_alerts_1019.jsonl > web-03_alerts_1019.jsonl
# 警报背后的原始日志行
jq -r '.full_log // empty' web-03_alerts_1019.jsonl > web-03_raw_1019.log
启用归档后,相同的模式适用于/var/ossec/logs/archives/archives.json及其在/var/ossec/logs/archives/<year>/<month>/下的轮换文件。
选项2:Wazuh索引器
索引器是OpenSearch,因此我们的应用照常。指向wazuh-alerts-*并根据agent.name和timestamp进行过滤:
query = {"query": {"bool": {"filter": [
{"term": {"agent.name": "web-03"}},
{"range": {"timestamp": {"gte": "2026-10-19T00:00:00Z", "lt": "2026-10-20T00:00:00Z"}}},
]}}}
Wazuh仪表板也可以生成报告,但不是LogTotal今天读取的格式。
上传、清理并在LogTotal中查看
- 上传。 打开 logtotal.com 并将文件拖入:警报JSON或来自full_log的原始行。
- 清理。
- 查看。
当出错时
| 症状 | 可能的原因 | Fix |
|---|---|---|
| 在管理器上被拒绝权限 | 文件属于wazuh用户 | 使用sudo |
| archives.json为空或缺失 | logall_json未启用 | 为将来启用它;对于过去使用警报 |
| 没有过去一天的文件 | 不同的轮换路径或命名 | 列出/var/ossec/logs/alerts/<year>/<month>/ |
| 有些警报没有full_log | 不是每个警报都来自日志行(完整性检查、漏洞检测) | 上传警报JSON代替 |
| 索引器返回403 | 用户缺乏对wazuh-alerts-*的读取访问权限 | 授予对警报索引的读取权限 |
FAQ
我可以使用Wazuh API导出警报吗?
Wazuh服务器API用于管理代理和配置,而不是搜索警报。使用文件或索引器。
原始行还是警报JSON?
当你希望LogTotal在原始日志上运行自己的检测时,使用原始行(full_log)。当你还希望文件中包含Wazuh的规则匹配时,使用警报JSON。