我应该如何在logstash中过滤多个具有相同名称的字段?

时间:2015-11-20 15:47:41

标签: json regex elasticsearch logstash tsung

我将tsung日志放入ElasticSearch(ES),以便我可以使用Kibana过滤,可视化和比较结果。

我使用logstash及其JSON解析过滤器将jung格式的tsung日志推送到ES。

Tsung日志有点复杂(IMO),数组对象包含数组对象,多行事件,以及几个具有相同名称的字段,如" value"在我的例子中。

我想改变这个事件:

{
 "stats":[
  {"timestamp": 1317413861,  "samples": [
   {"name": "users", "value": 0, "max": 1},
   {"name": "users_count", "value": 1, "total": 1},
   {"name": "finish_users_count", "value": 1, "total": 1}]}]}

进入这个:

{"timestamp": 1317413861},{"users_value":0},{"users_max":1},{"users_count_value":1},{"users_count_total":1},{"finish_users_count_value":1},{"finish_users_count_total":1}

由于整个tsung日志文件在性能测试活动结束时转发到logstash,我正考虑使用正则表达式删除 CR 和unusefull stats 和 samples 数组,以便简化一点。

然后,我将使用这些JSON过滤器选项:

add_field => {"%{name}_value" => "%{value}"}
add_field => {"%{name}_max" => "%{max}"}
add_field => {"%{name}_total" => "%{total}"}

但是我应该怎样处理一个事件中有很多 value 字段的事实呢?什么是最好的事情?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这里需要像ruby {}过滤器一样的感觉。遍历“样本”字段中的条目,并根据名称/值/总数/最大值构建自己的字段。

在SO的其他地方有这种行为的例子。