【发布时间】: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 和无用的 stats 和samples 在将事件发送到 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