簡體   English   中英

Logstash從grok過濾器添加字段

[英]Logstash Add field from grok filter

是否可以使用grok和mutate將消息匹配到logstash中的新字段?

日志示例:

"<30>Dec 19 11:37:56 7f87c507df2a[20103]: [INFO] 2018-12-19 16:37:56 _internal (MainThread): 192.168.0.6 - - [19/Dec/2018 16:37:56] \"\u001b[37mGET / HTTP/1.1\u001b[0m\" 200 -\r"

我試圖創建一個新的鍵值,將container_id匹配到7f87c507df2a。

filter {
  grok {
    match => [ "message", "%{SYSLOG5424PRI}%{NONNEGINT:ver} +(?:%{TIMESTAMP_ISO8601:ts}|-) +(?:%{HOSTNAME:service}|-) +(?:%{NOTSPACE:containerName}|-) +(?:%{NOTSPACE:proc}|-) +(?:%{WORD:msgid}|-) +(?:%{SYSLOG5424SD:sd}|-|) +%{GREEDYDATA:msg}" ]
  }
  mutate {
    add_field => { "container_id" => "%{containerName}"}
  }
}

生成的日志文件呈現了這一點,其中grok並未引用containerName的值,它只是一個字符串文字:

"container_id": "%{containerName}" 

我正在嘗試創建conf:

"container_id": "7f87c507df2a"

顯然,containerName的值不是從grok鏈接的。 我想做的事甚至有可能嗎?

如評論中所述,我的騙子模式不正確。 對於任何可能需要這篇博客幫助的人,請前往此處,以減少構建模式的時間。

這是工作快照:

filter {
  grok {
    match => [ "message", "\A%{SYSLOG5424PRI}%{SYSLOGTIMESTAMP}%{SPACE}%{BASE16NUM:docker_id}%{SYSLOG5424SD}%{GREEDYDATA:python_log_message}" ]
    add_field => { "container_id" => "%{docker_id}" }    
  }  
}

暫無
暫無

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

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