[英]Fluentd apache log format with multiple host ip
我對fluend日志解析器有一點問題。 我有一個清漆服務器,在該服務器上設置了X-Forwarded-For參數以滿足http請求通過的所有主機堆棧的IP列表。 我用它來獲取varnishncsa日志中的信息。 這是log的示例:
"192.168.79.16, 192.22.10.22, 10.2.2.22 - - [13/Aug/2015:09:50:45 +0000] \"GET http://poc.mydomain.com/panier/payment/payline?notificationType=WEBTRS&token=1KB01BwKWdUhVj1222301439454223514 HTTP/1.1\" 401 0 \"-\" \"Java/1.8.0_45\""
在另一種情況下,我想將這些日志流利地匯總起來。 然后,隨着vanishncsa日志使用apache格式,我將apache2 flentd格式用於輸入解析,例如在此配置中:
<source>
type tail
format apache2
path /var/log/varnish/varnishncsa.log
pos_file /var/log/td-agent/tmp/access.log.pos
tag "apache2.varnish.mydomain.com.access"
</source>
現在的問題是,如果日志中只有一個主機ip,但是當有多個IP時,流暢的聚合器會報告“模式不匹配”警告。 我的意思是
這符合:
"192.168.79.16 - - [13/Aug/2015:09:50:45 +0000] \"GET http://poc.mydomain.com/panier/payment/payline?notificationType=WEBTRS&token=1KB01BwKWdUhVj1222301439454223514 HTTP/1.1\" 401 0 \"-\" \"Java/1.8.0_45\""
這不匹配:
"192.168.79.16, 192.22.10.22, 10.2.2.22 - - [13/Aug/2015:09:50:45 +0000] \"GET http://poc.mydomain.com/panier/payment/payline?notificationType=WEBTRS&token=1KB01BwKWdUhVj1222301439454223514 HTTP/1.1\" 401 0 \"-\" \"Java/1.8.0_45\""
apache2流利的正則表達式是:
^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
使用這種時間格式:
%d/%b/%Y:%H:%M:%S %z
我嘗試找出正確的regx並將其發送文本,但尚未找到。
我試過了,但是沒用
<source>
type tail
format format /^(?<host>\,*[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$/
time_format %d/%b/%Y:%H:%M:%S %z
path /var/log/varnish/varnishncsa.log
pos_file /var/log/td-agent/tmp/access.log.pos
tag "apache2.varnish.mydomain.com.access"
</source>
有人可以幫忙嗎? 並且也為我提供了有關fluend解析器模式捕獲的很好的文檔,以及一種測試有效的正則表達式的好方法。 這個Fluentd正則表達式編輯器並沒有真正的幫助。
它總是生成配置,而不給出測試結果。
謝謝。
如果您有多個IP,可以使用以下正則表達式:
^(?<host>[^ ]*(?:,\s+[^ ]+)*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
^^^^^^^^^^^^^^
的(?:,\\s+[^ ]+)*
模式匹配0或更多( *
的)序列,
,1或多個空格( \\s+
)符號,並且比空間其它1個或多個字符( [^ ]+
)。
更加安全的表達式如下所示:
^(?<host>(?:\d+\.){3}\d+(?:,\s*(?:\d+\.){3}\d+)*|-) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
見演示2
(?:\\d+\\.){3}\\d+(?:,\\s*(?:\\d+\\.){3}\\d+)*
匹配number
+ .
+ number
+ .
+ number
+ .
+ number
,並以逗號列出可選的相同模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.