使用Kibana的动态查找



我正在尝试可视化卡巴纳中的一些数据
让我们举一个例子:
我有几个销售某些产品的条目,它们的交易ID是一个事件,成本是另一个事件。

Line  1     {"event" : {"transId" : "q4h56", "prod" : "notebook"} }  
Line  2     {"event" : {"transId" : "q4h56", "cost" : 100       } }  
Line  3     {"event" : {"transId" : "rt45e", "prod" : "crayons" } }  
Line  4     {"event" : {"transId" : "rt45e", "cost" : 75        } }  
Line  5     {"event" : {"transId" : "gr56d", "prod" : "pen"     } }  
Line  6     {"event" : {"transId" : "gr56d", "cost" : 83        } }  
Line  7     {"event" : {"transId" : "uh65r", "prod" : "paper"   } }  
Line  8     {"event" : {"transId" : "uh65r", "cost" : 49        } }  
Line  9     {"event" : {"transId" : "yh5er", "prod" : "crayons" } }  
Line 10     {"event" : {"transId" : "yh5er", "cost" : 140       } }  
Line 11     {"event" : {"transId" : "23yg5", "prod" : "pen"     } }  
Line 12     {"event" : {"transId" : "23yg5", "cost" : 83        } }  

我想要实现的目标:

1:使用日志存储:

是否可以将transId相似的事件合并为单个事件,如下所示:

Line  1     {"event" : {"transId" : "q4h56", "prod" : "notebook",   "cost" : 100} }  
Line  2     {"event" : {"transId" : "rt45e", "prod" : "crayons",    "cost" : 75 } }  
Line  3     {"event" : {"transId" : "gr56d", "prod" : "pen",        "cost" : 83 } }  
Line  4     {"event" : {"transId" : "uh65r", "prod" : "paper",      "cost" : 49 } }  
Line  5     {"event" : {"transId" : "yh5er", "prod" : "crayons",    "cost" : 140} }  
Line  6     {"event" : {"transId" : "23yg5", "prod" : "pen",        "cost" : 83 } }  

由于日志存储每次解析一行,所以这似乎无法实现
我需要存储一堆全局键/值对,以便以后使用,例如CCD_ 1,并且如果相同的transId再次出现。

*[@metadata]对于每一行日志存储解析都是唯一的,并且在下一个日志存储解析周期中不可用。如果我没有错的话!

2:使用Kibana:

有没有可能将我们销售的每种类似产品的[成本]总和可视化
因为成本没有与产品名称对应
在可视化中查看这些产品,不提供成本。

如何映射这些,某种动态查找/连接,我觉得Kibana不支持它,如果我没有错的话!

有什么建议吗
同样,这只是一个示例数据,实际使用具有类似情况的事件的syslog。

感谢

您可以在logstash中使用聚合过滤器来完成此操作。您的用例类似于文档中的示例1。

如果事件的顺序是可变的,那么执行示例3。在这种情况下,将产品名称和成本都存储在映射中,然后event.cancel所有源事件。

也许Logstash的聚合过滤器可以帮助您实现这一点。

考虑样本数据:

{"event" : {"transId" : "q4h56", "prod" : "notebook"} }
{"event" : {"transId" : "q4h56", "cost" : 100 } }
{"event" : {"transId" : "rt45e", "prod" : "crayons" } }
{"event" : {"transId" : "rt45e", "cost" : 75} }
{"event" : {"transId" : "gr56d", "prod" : "pen" } }
{"event" : {"transId" : "gr56d", "cost" : 83} }
{"event" : {"transId" : "uh65r", "prod" : "paper" } }
{"event" : {"transId" : "uh65r", "cost" : 49} }
{"event" : {"transId" : "yh5er", "prod" : "crayons" } }
{"event" : {"transId" : "yh5er", "cost" : 140 } }
{"event" : {"transId" : "23yg5", "prod" : "pen" } }
{"event" : {"transId" : "23yg5", "cost" : 83} }

以下聚合筛选器将根据transId值聚合行。

aggregate {
task_id => "%{[event][transId]}"
code => "
map['event'] ||= {}
map['event']['transId'] ||= event.get('[event][transId]')
map['event']['prod'] ||= event.get('[event][prod]')
map['event']['cost'] ||= event.get('[event][cost]')
event.cancel()
"
push_previous_map_as_event => true
}

这将为您提供一个同时具有prodcost字段的事件。

最新更新