nxLog-ce 配置需要 IIS 服务器日志的正则表达式

问题描述 投票:0回答:1

我已经在 windows-11 系统中设置了一个 IIS 服务器,并部署了一个示例 node.js 应用程序。我的系统上还运行着 nxLog-ce。我正在尝试读取、解析 IIS 日志并将其发送到连接到我的 Windows 系统的远程 rsyslog 服务器。因此,在我的 nxLog 配置中,我正在使用正则表达式读取 IIS 服务器日志文件。配置如下:

#sending iis server logs
<Input iis>
     Module      im_file
     File        "C:\inetpub\logs\LogFiles\W3SVC1\u_ex231010.log"
     SavePos     False
     InputType   LineBased
     ReadFromLast False
     <Exec>
        if $raw_event =~ /^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) ([^ ]+) ([^ ]+) ([^ ]+) (\d+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)/ {
            $second=$1;
            $third=$2;
            $fourth=$3;
            $fifth=$4;
            $sixth=$5;
            $seventh=$6;
        }
     </Exec>
</Input>

iis服务器日志样本如下:

2023-10-10 04:53:12 ::1 GET /node - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/117.0.0.0+Safari/537.36 - 404 0 2 371

rsyslog 中收到的日志中没有一个键(方法、UriStem 等):

Oct 10 12:59:27 10.228.13.4  {"EventReceivedTime":"2023-10-10 12:59:28","SourceModuleName":"iis","SourceModuleType":"im_file"}#015

我认为 if 条件(在配置中给出)不起作用,因为正则表达式是错误的。

我尝试过以下正则表达式:

20[0-9][0-9]-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9] .* [a-zA-Z]* .* - [0-9][0-9]+ - .* [a-zA-Z0-9\.\-\ ]+\/[0-9\.\-a-zA-Z\+]*.* - [0-9][0-9]+ [0-9]+ [0-9]+ [0-9]+

使用此正则表达式,我可以在 rsyslog 服务器中收到的日志中找到密钥,但收到的每个自定义密钥的值为空:

Oct 10 12:59:27 10.228.13.4  {"EventReceivedTime":"2023-10-10 12:59:28","SourceModuleName":"iis","SourceModuleType":"im_file","second":null,"third":
null,"fourth":null,"fifth":null,"sixth":null,"seventh":null}#015

有人可以建议我应该在 nxLog-ce 配置中放入什么正则表达式,以便我可以获得带有值的键。或者我在这里做错了什么,任何建议都会有帮助。

regex iis config nxlog iis-logs
1个回答
0
投票

您提供的iis服务器日志样本中有15个标准字段,我认为您可能需要增加正则表达式中捕获组的数量。请尝试下面的正则表达式:

     <Exec>
        if $raw_event =~ /^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)/ 
        {
            $second=$1;
            $third=$2;
            $fourth=$3;
            $fifth=$4;
            $sixth=$5;
            $seventh=$6;
        }
     </Exec>
© www.soinside.com 2019 - 2024. All rights reserved.