首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用不同模式的日志解析日志文件

用不同模式的日志解析日志文件
EN

Stack Overflow用户
提问于 2017-01-26 19:33:44
回答 1查看 997关注 0票数 0

在那件事上,我是新手。日志文件有不同的进程记录数据到它。每个进程以不同的模式写入日志。我想解析这个日志文件。此日志文件中的每个日志以下面的grok模式启动,

%{SYSLOGTIMESTAMP:时间戳} %{SYSLOGHOST:logsource} %{SYSLOGPROG}:+ %{ SRCFILE :srcfile}:%{NUMBER:linenumber},其中SRCFILE定义为-Za-Z0-9._-+

请让我知道如何解析这个文件,以便解析该文件中每个进程日志的不同类型的日志。

EN

回答 1

Stack Overflow用户

发布于 2017-01-27 10:19:57

由于您试图传递日志文件,因此您可能必须使用文件输入插件从给定路径检索文件或x号文件。所以一个基本的input看起来可能是这样的:

代码语言:javascript
运行
复制
input {

        file {
            path => "/your/path/*"
            exclude => "*.gz"
            start_position => "beginning" 
            ignore_older => 0 
            sincedb_path => "/dev/null"
        }
}

以上只是一个供你复制的样本。因此,一旦您获得文件并开始逐行处理它们,您可以使用格罗克过滤器来匹配日志文件中的关键字。样例过滤器可能如下所示:

代码语言:javascript
运行
复制
grok {
    patterns_dir => ["/pathto/patterns"]
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:logsource} %{SYSLOGPROG}: + %{SRCFILE:srcfile}:%{NUMBER:linenumber} where SRCFILE is defined as [a-zA-Z0-9._-]+" }           
}

如果在单个文件中打印了不同类型的日志,则可能需要使用不同的筛选器,您可以在同一行中使用,逗号分隔的值。类似于:

代码语言:javascript
运行
复制
grok {
        match => { "message" => [ 
              "TYPE1,%{WORD:a1},%{WORD:a2},%{WORD:a3},%{POSINT:a4}",
              "TYPE2,%{WORD:b1},%{WORD:b2},%{WORD:b3},%{WORD:b4}",
              "TYPE3,%{POSINT:c1},%{WORD:c2},%{POSINT:c3},%{WORD:c4}"  ]
        }
    }

然后,也许您可以使用message,因为您已经得到了它所需要的所有值。希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41881505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档