我将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 字段的事实呢?什么是最好的事情?
感谢您的帮助。
答案 0 :(得分:2)
这里需要像ruby {}过滤器一样的感觉。遍历“样本”字段中的条目,并根据名称/值/总数/最大值构建自己的字段。
在SO的其他地方有这种行为的例子。