【问题标题】:How should I filter multiple fields with the same name in logstash?我应该如何过滤logstash中具有相同名称的多个字段?
【发布时间】:2016-02-23 04:18:30
【问题描述】:

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

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

Tsung 日志有点复杂 (IMO),将数组对象转换为数组对象、多行事件以及多个具有相同名称的字段,例如我的示例中的“值”。

我想改造这个活动:

{
 "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 和无用的 statssamples 在将事件发送到 logstash 之前的数组以简化一点。

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

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

但是,例如,我应该如何处理一个事件中有许多 value 字段的事实?最好的做法是什么?

感谢您的帮助。

【问题讨论】:

  • 在我看来,您应该能够遍历样本中的每个字典来进行转换,而无需求助于正则表达式。我从 Python 的角度来看这个,所以我知道这会起作用,将“name”的值连接到每个连续的键

标签: json regex elasticsearch logstash tsung


【解决方案1】:

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

在 SO 上的其他地方有此类行为的示例。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
  • 2023-03-04
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
相关资源
最近更新 更多