Cron 从输入文件路径日志中提取字段?
我想从各种目录中读取日志文件,如:Cron 从输入文件路径日志中提取字段?,cron,elasticsearch,logstash,kibana,Cron,elasticsearch,Logstash,Kibana,我想从各种目录中读取日志文件,如:Server1、Server2 Server1的子目录为cron,auth…在这些子目录中分别是日志文件 因此,我考虑阅读如下文件: input{ file{ #path/to/folders/server1/cronLog/cron_log path => "path/to/fol
Server1、Server2
Server1
的子目录为cron,auth
…在这些子目录中分别是日志文件
因此,我考虑阅读如下文件:
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目录)。
但是像这样,我还想过滤服务器名称
,因为每个服务器都有cron
,auth
等日志
如何对两者进行过滤
有没有办法从输入中的path
中获取目录名??从这里开始
path => "path/to/folders/**/*_log"
我应该如何进行?非常感谢您的帮助?这很直截了当,与我的另一个答案几乎一模一样。。。你可以使用道路上的垃圾来提取你所关心的部分,然后你可以从那里做任何你想做的事情
filter {
grok { "path", "path/to/here/(?<server>[^/]+)/(?<logtype>[^/]+)/(?<logname>.*) }
if [server] == "blah" && [logtype] =~ "cron" {
grok { "message", "** pattern **" }
}
}
过滤器{
grok{“path”,“path/to/here/(?[^/]+)/(?[^/]+)/(?.*)}
如果[server]=“blah”&&[logtype]=“cron”{
grok{“消息”,“模式**”}
}
}
See@Alcanzar:我看到了你的答案。你的过滤器将被应用到输入之外
?目前我这样做:过滤器{if[path]=“auth”{grok…
所以我从path中选择auth。类似地,我想同时选择server和logtype并应用条件,比如:path有servername=XYZ&&logtype=YYY
然后是日志的grok模式。我缺少什么了吗?你能用一些代码解释一下吗?你可以做多个grok。所以你可以在路径上使用grok来从中提取片段您关心什么。@Alcanzar:类似这样的内容:如果extract_field1==XYZ{grok{模式匹配日志消息}
???