首页 > 解决方案 > 如何使用 kibana 的日期过滤器转换我的时间

问题描述

我需要利用这个日志行:

   30361  30485  494 8861012      42:42 /plw/modules/bin/Lx86_64/opx2-intranet.exe -I /plw/modules/bin/Lx86_64/opx2-intranet.dxl -H /plw/modules/bin/Lx86_64 -L /plw/PLW_PROD/modules/preload-intranet.ini -- plw-sysconsole -port 8400 -logdir /plw/PLW_PROD/httpdocs/admin/log/ -slaves 2

我的目标是恢复系统启动所花费的时间,这里是 42:42。问题是格式可以是这里的 mm:ss,或者是 HH:mm:ss,例如 01:42:30。我想知道使用哪个paterne grok。这是我的conf文件:

input {
    file { 
        path => ["/home/mathis/Documents/*]"
        start_position => "beginning"
        sincedb_path => "/dev/null"
    }
}

filter {
    grok {
        match => {"message" => ["%{NUMBER}%{SPACE}%{NUMBER}%{SPACE}%{NUMBER}%{SPACE}%{NUMBER}%{SPACE}%{TIME:starttime}"]}
        remove_field => "message"
    }
    date {
            match => [ "starttime", "HH:mm:ss","mm:ss" ]
    }
}
output {
    elasticsearch {
        hosts => "127.0.0.1:9200"
        index => "logstash-local3-%{+YYYY.MM.dd}"
    }
}

不幸的是,TIME 的语法是 HH:mm:ss 并且不包括 mm:ss。

标签: logstashlogstash-groklogstash-configuration

解决方案


解决方案:

%{NUMBER}%{SPACE}%{NUMBER}%{SPACE}%{NUMBER}%{SPACE}%{NUMBER}%{SPACE}(?<starttime>((?!<[0-9])%{HOUR}:)?%{MINUTE}(?::%{SECOND})(?![0-9]))

推荐阅读