Wazuh自定义解码器与规则失效求助:LogTest正常但Windows代理无告警
Wazuh自定义解码器与规则告警不触发问题排查建议
我正在编写Wazuh自定义解码器与规则,该问题已困扰一周。使用wazuh-logtest测试日志可得到预期结果,但通过Windows代理将日志传入Wazuh时,告警未触发。已确认archives.log中的日志条目包含"account"和"computer":"字段。以下是我的解码器与规则配置,求排查建议:
解码器配置
<decoder name="uchtest"> <prematch>\.*account\.*</prematch> </decoder> <decoder name="uchtest_login_child1"> <parent>uchtest</parent> <regex>"computer":"(\.)"\.*Accoun</regex> <order>servername</order> </decoder>
规则配置
<group name="uchtest_login"> <rule id="100002" level="13"> <decoded_as>uchtest</decoded_as> <description>just logged into $(servername)</description> </rule> </group>
排查与修改建议
修正正则表达式错误
- 父解码器
<prematch>:\.*account\.*写法错误,\.*表示匹配0个或多个转义的.,实际应改为.*account.*,用来匹配包含account字符串的任意日志内容。 - 子解码器
<regex>:"computer":"(\.)"\.*Accoun无法正确捕获主机名,(\.)仅匹配单个.,正确写法应为"computer":"([^"]+)",可捕获双引号之间的完整主机名;多余的\.*Accoun部分可删除。修改后的子解码器正则:<regex>"computer":"([^"]+)"</regex>
- 父解码器
验证Windows代理日志转发配置
- 检查Windows代理
ossec.conf,确认日志收集路径、event_channel或log_format配置与测试时的日志格式一致。 - 查看代理
ossec.log是否有日志发送记录,管理器ossec.log是否有接收该代理日志的记录,确认日志链路通畅。
- 检查Windows代理
用实际日志重新测试解码
- 从
archives.log中复制实际转发的日志条目,使用/var/ossec/bin/wazuh-logtest重新测试,确认是否能解码出decoded_as: uchtest和servername字段,排查测试日志与实际日志的细微差异(如空格、转义字符)。
- 从
确认规则配置生效
- 确保规则文件放置在管理器
/var/ossec/etc/rules/目录下,且ossec.conf中已通过<include>引用该文件。 - 修改配置后重启Wazuh管理器(
systemctl restart wazuh-manager)和Windows代理(net stop wazuh-agent && net start wazuh-agent)。
- 确保规则文件放置在管理器
检查告警日志过滤情况
- 查看管理器
alerts.log,搜索规则ID100002,确认告警是否被更高优先级规则覆盖,或因日志级别设置问题未触发。
- 查看管理器
内容的提问来源于stack exchange,提问作者brad3260
相关产品推荐
相关产品推荐

