【发布时间】:2014-07-26 01:43:58
【问题描述】:
我想从各种目录读取我的日志文件,例如:Server1, Server2...
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***]
}
cron 以上是日志文件(不是 cronLog 目录)。
但是像这样我也想过滤server name,因为每个服务器都会有cron、auth等日志。
如何过滤两者?
有没有办法从输入中的path 获取目录名称?喜欢这里
path => "path/to/folders/**/*_log"
我应该如何进行?任何帮助表示赞赏?
【问题讨论】:
-
@Alcanzar:我看到了你的回答。您的
filter将在input之外应用??目前我这样做:filter { if [path] =~ "auth"{ grok...所以我从路径中选择身份验证。同样,我想同时选择服务器和日志类型并应用条件,例如:路径有servername=XYZ && logtype=YYY,然后是日志的 grok 模式。我错过了什么吗?你能用一些代码解释一下吗? -
你可以做多个 grok。因此,您在路径上使用 grok 从中提取您关心的部分。
-
@Alcanzar:像这样的东西:
filter{ grok {on path to extract fields} if extract_field1 ==XYZ { grok{pattern matching log message}}???
标签: cron elasticsearch logstash kibana