2
我想從不同的目錄讀取我的日誌文件,如:Server1, Server2
...從輸入文件路徑logstash中提取字段?
Server1
有子目錄cron, auth
...裏面這些子目錄是log file
分別。
所以我打算讀的文件是這樣的:但是
input{
file{
#path/to/folders/server1/cronLog/cron_log
path => "path/to/folders/**/*_log"
}
}
,我有困難的過濾他們即知道,哪個服務器(Server1
)和日誌類型(cron
),我必須應用grok
模式:
如:我認爲做這樣的事情
if [path] =~ "auth"{
grok{
match => ["message", ***patteren****]
}
}else if [path] =~ "cron"{
grok{
match => ["message", ***pattern***]
}
以上的用於日誌文件(不是cronLog目錄)。 但是這樣我也想過濾server name
因爲每個服務器將有cron
,auth
等日誌。
如何過濾兩者?
有沒有辦法在輸入時從path
中抓取目錄名?從這裏開始
path => "path/to/folders/**/*_log"
我該如何繼續?任何幫助表示讚賞?
查看http://stackoverflow.com/questions/23561684/extracting-fields-from-paths-in-logstash/23567477#23567477 – Alcanzar
@Alcanzar:我看到了你的答案。你的'過濾器'將被應用在'input'的外部?目前我做的是:'filter {if [path] =〜'auth'{grok ...'所以我從路徑中選擇auth。同樣,我想選擇服務器和日誌類型,並應用條件,如:路徑具有'服務器名= XYZ &&日誌類型= YYY',然後日誌格羅克模式。我錯過了什麼嗎?你能解釋一些代碼嗎? –
你可以做多個grok。所以你在路徑上使用grok來從中提取你關心的部分。 – Alcanzar