【问题标题】:liblognorm rule for nginx logsnginx 日志的 liblognorm 规则
【发布时间】:2017-11-15 00:30:36
【问题描述】:

我通过 rsyslog 将日志发送到 elasticsearch。对于这些日志的解析,我使用的是 liblognorm 规则。

我想创建 nginx 日志的字段,

这是一个日志条目,

127.0.0.1 - kibanaadmin [13/Jun/2017:14:18:17 +0530] "GET /ui/favicons/favicon-32x32.png HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0"

这是模式文件,

version=2

rule=:%clientip:ipv4% - %user:word% [%timestamp:char-to:]%] %auth:word% "%verb:alpha% %request:word%" %response:number% %bytes:number% "%referrer:word"%" "%agent:char-to:{"extradata":"("}"

我认为解析失败的原因是由于日期时间格式。

有人可以帮助创建解析 nginx 日志的规则吗?

【问题讨论】:

    标签: parsing nginx rsyslog


    【解决方案1】:

    对于前面提到的 Nginx 访问日志行,您需要这样的规则:

    version=2
    
    rule=:%clientip:ipv4%%-:whitespace%-%-:whitespace%%user:word%%-:whitespace%[%timestamp:char-to{"extradata":"]"}%]%-:whitespace%"%verb:word%%-:whitespace%%request:word%%-:whitespace%%protocol:char-to{"extradata":"\""}%"%-:whitespace%%response_code:number{"format":"number"}%%-:whitespace%%bytes:number{"format":"number"}%%-:whitespace%"%referrer:char-to{"extradata":"\""}%"%-:whitespace%"%agent:char-to{"extradata":"\""}%"
    

    产生以下输出(漂亮的打印):

    {
        "agent": "Mozilla\/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko\/20100101 Firefox\/53.0",
        "referrer": "-",
        "bytes": 0,
        "response_code": 304,
        "protocol": "HTTP\/1.1",
        "request": "\/ui\/favicons\/favicon-32x32.png",
        "verb": "GET",
        "timestamp": "13\/Jun\/2017:14:18:17 +0530",
        "user": "kibanaadmin",
        "clientip": "127.0.0.1"
    }
    

    要更轻松地测试您的日志文件和Liblognorm 规则文件,您可以为您的规则创建一个nginx.rule 文件并运行以下命令:

     lognormalizer -H -p -r nginx.rule < nginx.log
    

    您可以找到有关 lognormalizer 命令here 的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-15
      • 2020-10-02
      • 2015-12-29
      • 2016-08-29
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多