Fluentd Regexp patterns


舉例:apache2 Parser Plugin

expression /^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$/
time_format %d/%b/%Y:%H:%M:%S %z

example:

192.168.0.1 - - [28/Feb/2013:12:00:00 +0900] "GET / HTTP/1.1" 200 777 "-" "Opera/12.0"

This incoming event is parsed as:

time:
1362020400 (28/Feb/2013:12:00:00 +0900)

record:
{
  "user"   : nil,
  "method" : "GET",
  "code"   : 200,
  "size"   : 777,
  "host"   : "192.168.0.1",
  "path"   : "/",
  "referer": nil,
  "agent"  : "Opera/12.0"
}

 下面具體分析上面正則表達式,大致結構為 expression /^(?<field1>[^ ]*)(?<field2>[^\\]*)\\(?<field3>[^ ]*)$/

(?<field1>[^ ]*)代表要提取一個field1的字段,內容是連續不為空格的字符
(?<field2>[^\\]*)代表要提取一個field1的字段,內容是連續不為反斜杠的字符
以此類推,這些字段之間還可以結合其他字符或者正則表達式,比方[^\d],
整個expression必須能夠匹配event日志,否則會提示parse error。
(?: )? 這種結構表明中間的正則表達式匹配的字段可能存在或者不存在,
比方說下面的例子,path字段為兩個空格之間的一段字符,但是也有可能這一段不存在,因為為了避免出現parse error,可以用(?: )?這種結構。
(?: +(?<path>[^ ]*) +\S*)?
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM