首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于日志消息查询日志的日志分析

基于日志消息查询日志的日志分析
EN

Stack Overflow用户
提问于 2015-03-30 10:04:22
回答 2查看 170关注 0票数 0

我有一个Java应用程序,它以这种格式输出日志

时间戳UUID1一些信息

时间戳UUID1更多信息

时间戳UUID1 x=1

时间戳UUID2一些信息

时间戳UUID2更多信息

时间戳UUID2 x=2

时间戳UUID3一些信息

时间戳UUID3更多信息

时间戳UUID3 x=1

我想用Elsatic、LogStash和Kibana实现一个日志分析框架。是否有可能只根据X值获取日志?

例如:-

如果我查询X= 1,我应该只获得以下日志。

时间戳UUID1一些信息

时间戳UUID1更多信息

时间戳UUID1 x=1

时间戳UUID3一些信息

时间戳UUID3更多信息

时间戳UUID3 x=1

如果我查询X= 2,我应该只获得以下日志。

时间戳UUID2一些信息

时间戳UUID2更多信息

时间戳UUID2 x=2

我控制日志消息格式。如果不能直接执行此查询,我也可以更改消息格式。

更新1:

我会说得更具体一点。

下面是我的日志语句。

代码语言:javascript
复制
    MDC.put("uuid", UUID.randomUUID().toString());
    logger.info("Assigning value to the variable : {}", name);
    this.setVal(value.getVal());
    logger.info("{} = {}", name, value.getVal());
    logger.info("Assigned value {} to the variable : {}", value.getVal(),
            name);
    MDC.clear();

我使用UDP在Logstash中接收到日志语句。我收到的信息就像。

代码语言:javascript
复制
{
     "@timestamp" => "2015-04-01T10:23:37.846+05:30",
       "@version" => 1,
        "message" => "Assigning value to the variable : X",
    "logger_name" => "com.example.logstash.Variable",
    "thread_name" => "pool-1-thread-1",
          "level" => "INFO",
    "level_value" => 20000,
       "HOSTNAME" => "pnibinkj-W7-1",
           "uuid" => "ab17b842-8348-4474-98e4-8bc2b8dd6781",
           "host" => "127.0.0.1"
}
{
     "@timestamp" => "2015-04-01T10:23:37.846+05:30",
       "@version" => 1,
        "message" => "Assigning value to the variable : Y",
    "logger_name" => "com.example.logstash.Variable",
    "thread_name" => "pool-1-thread-2",
          "level" => "INFO",
    "level_value" => 20000,
       "HOSTNAME" => "pnibinkj-W7-1",
           "uuid" => "d5513e4c-de3b-4144-87e4-87b077ac8056",
           "host" => "127.0.0.1"
}
{
     "@timestamp" => "2015-04-01T10:23:37.862+05:30",
       "@version" => 1,
        "message" => "Y = 1",
    "logger_name" => "com.example.logstash.Variable",
    "thread_name" => "pool-1-thread-2",
          "level" => "INFO",
    "level_value" => 20000,
       "HOSTNAME" => "pnibinkj-W7-1",
           "uuid" => "d5513e4c-de3b-4144-87e4-87b077ac8056",
           "host" => "127.0.0.1"
}
{
     "@timestamp" => "2015-04-01T10:23:37.863+05:30",
       "@version" => 1,
        "message" => "X = 1",
    "logger_name" => "com.example.logstash.Variable",
    "thread_name" => "pool-1-thread-1",
          "level" => "INFO",
    "level_value" => 20000,
       "HOSTNAME" => "pnibinkj-W7-1",
           "uuid" => "ab17b842-8348-4474-98e4-8bc2b8dd6781",
           "host" => "127.0.0.1"
}
{
     "@timestamp" => "2015-04-01T10:23:37.863+05:30",
       "@version" => 1,
        "message" => "Assigned value 1 to the variable : X",
    "logger_name" => "com.example.logstash.Variable",
    "thread_name" => "pool-1-thread-1",
          "level" => "INFO",
    "level_value" => 20000,
       "HOSTNAME" => "pnibinkj-W7-1",
           "uuid" => "ab17b842-8348-4474-98e4-8bc2b8dd6781",
           "host" => "127.0.0.1"
}
{
     "@timestamp" => "2015-04-01T10:23:37.863+05:30",
       "@version" => 1,
        "message" => "Assigned value 1 to the variable : Y",
    "logger_name" => "com.example.logstash.Variable",
    "thread_name" => "pool-1-thread-2",
          "level" => "INFO",
    "level_value" => 20000,
       "HOSTNAME" => "pnibinkj-W7-1",
           "uuid" => "d5513e4c-de3b-4144-87e4-87b077ac8056",
           "host" => "127.0.0.1"
}

有两个UUID

"d5513e4c-de3b-4144-87e4-87b077ac8056“,用于"Y = 1”

"ab17b842-8348-4474-98e4-8bc2b8dd6781“(X=1)

每个UUID还有另外两条消息。我想把它们合并成一个单一的事件。

我不确定,如何为这种情况编写多行过滤器。

代码语言:javascript
复制
filter {
  multiline {
    pattern => "."
    what => "previous"
    stream_identity => "%{uuid}"
  }
}

“模式”和“什么”似乎是必需的字段。我应该为这些领域准备些什么。如何使用流标识?

请给我指出正确的方向。

谢谢,保罗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-30 23:31:57

您需要组合您的消息(请参阅支持stream_identity的多行{}过滤器),然后常规查询将返回适当的消息。

票数 0
EN

Stack Overflow用户

发布于 2015-03-30 12:18:04

如果X是一些唯一的值,这应该可以使用kibana过滤器,但是对于显示格式的日志,您需要使用多行筛选器将条目连接在一起。

有了这一点,您可能会使用类似于

代码语言:javascript
复制
message: "X=1"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29343393

复制
相关文章

相似问题

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