解析整数并在Kibana中显示时间轴

时间:2017-03-23 09:46:39

标签: elasticsearch logging kibana kibana-5

enter image description here

这是Kibana UI,我想在消息中解析一些Integer。消息末尾的数字是一种方法的处理时间,以及我在Kibana中以小时为单位可视化平均处理时间的内容。这可能吗?

我在logstash中尝试了一些conf:

filter{
    json{
        source => "message"
    }
    grok {
        match => {
            "message" => "^Finish validate %{NUMBER:cto_validate_time}$"
        }
    }
    grok {
        match => {
            "message" => "^Finish customize %{NUMBER:cto_customize_time}$"
        }
    }

}

有效。但是当我创建时间表时,我无法获得新的字段。

1 个答案:

答案 0 :(得分:1)

由于您不关心性能问题,因此您可以使用以下无痛代码在索引模式中创建名为process_time的{​​{3}}。它的作用只是从message字段中获取最后一个数值。

def m = /.*\s(\d+)$/.matcher(doc['message.keyword'].value);
if ( m.matches() ) {
   return m.group(1)
} else {
   return 0
}

然后,您可以构建一个图表,以按小时显示平均处理时间。转到“可视化”选项卡并创建一个新的垂直条形图。在Y轴上,您将在process_time字段和X轴上创建平均聚合,您将在您的轴上使用日期直方图聚合时间戳字段。样本如下所示:

scripted field

注意:您还需要在elasticsearch.yml文件中添加以下行并重新启动ES:

script.painless.regex.enabled: true

<强>更新

如果您想通过Logstash执行此操作,可以添加以下grok过滤器

filter{
    grok {
        match => {
            "message" => "^Finish customize in controller %{NUMBER:cto_customize_time}$"
        }
    }
    mutate {
        convert => { "cto_customize_time" => "integer" }
    }
}