簡體   English   中英

Logstash-grok使用消息以外的其他字段

[英]Logstash - grok use a field other than message

我正在使用Logstash轉發器從遠程服務器接收Log4j生成的日志文件。 日志事件中的字段包括格式為/tomcat/logs/app.log、/tomcat/logs/app.log.1等的名為“文件”的字段。當然,文件路徑/ tomcat / logs在遠程計算機上我希望Logstash僅使用文件名而不使用遠程文件路徑在本地文件系統上創建文件。

在本地,我想基於文件名app.log,app.log.1等創建一個文件。如何實現此目的?

我無法使用grok,因為它似乎僅適用於“消息”字段,而不適用於其他字段。

示例日志事件:

{“ message”:[“ 2014年9月11日16:29:04,934此處的信息日志消息詳細信息”],“ @ version”:“ 1”,“ @ timestamp”:“ 2014-09-15T05:44:43.472Z”, “文件”:[ “/ Tomcat的/日志/ app.log.1”], “宿主”: “AUS-002157”, “偏移量”: “3116”, “類型”: “app.log”}

Logstash配置-如何編寫過濾器部分?

input {
    lumberjack {
      port => 48080
      ssl_certificate => "/tools/LogStash/logstash-1.4.2/ssl/logstash.crt"
      ssl_key => "/tools/LogStash/logstash-1.4.2/ssl/logstash.key"
    }
}

filter{

}

output {

    file{
        #message_format => "%{message}"
        flush_interval => 0
        path => "/tmp/%{host}.%{type}.%{filename}"
        max_size => "4M"
    }
}

得出的模式如下:

grok{
    match => [ "file",  "^(/.*/)(?<filename>(.*))$" ]
}

謝謝您的幫助!

Logstash Grok可以解析日志事件中的所有字段,而不僅僅是message字段。

例如,您要提取file字段,可以這樣

filter {
   grok {
       match => [ "file", "your pattern" ]
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM