我采集了Kafka中的每个topic/partition的 logsize 存到了ES里面. 但是不是严格间隔一段时间采集的, 比如说第一次采集是 10:00, 下一次采集是 10:02, 再下一次采集是 10:05.
我现在需要在Kibana里面展示 topic 的消息生产速度, 也就是每秒的logsize增加量. 第一反应是用pipeline里面的derivative aggregation , query 如下. 但是这样有一个问题, 因为采集时间有时候间隔2分钟, 有时候3分钟,有时候5分钟, 这就导致 derivative之后的差值也是2分钟的, 3分钟的 , 5分钟的. 在kibana上面展示出来的就忽大忽小, 不能一眼看出来生产速度是多少, 也不能看出来生产速度有没有增加或者减少.
"aggs": {
"2": {
"date_histogram": {
"field": "@timestamp",
"interval": "1m",
"time_zone": "Asia/Shanghai",
"min_doc_count": 1
},
"aggs": {
"1": {
"derivative": {
"buckets_path": "1-metric"
}
},
"1-metric": {
"sum": {
"field": "logsize"
}
}
}
}
}
response截取
[
{
"key_as_string": "2018-11-06T16:12:00.000+08:00",
"key": 1541491920000,
"doc_count": 30,
"1-metric": {
"value": 1028875959431
}
},
{
"1": {
"value": 31658233
},
"key_as_string": "2018-11-06T16:20:00.000+08:00",
"key": 1541492400000,
"doc_count": 30,
"1-metric": {
"value": 1028907617664
}
},
{
"1": {
"value": 10852752
},
"key_as_string": "2018-11-06T16:22:00.000+08:00",
"key": 1541492520000,
"doc_count": 30,
"1-metric": {
"value": 1028918470416
}
},
{
"1": {
"value": 31959053
},
"key_as_string": "2018-11-06T16:30:00.000+08:00",
"key": 1541493000000,
"doc_count": 30,
"1-metric": {
"value": 1028950429469
}
}
]
我的需求是, 得到的 derivative 值, 可以再除以时间跨度之后再展示. 不管是 query dsl 里面实现也好, 还是 kibana 上面处理也好. 有啥方法吗?
我现在需要在Kibana里面展示 topic 的消息生产速度, 也就是每秒的logsize增加量. 第一反应是用pipeline里面的derivative aggregation , query 如下. 但是这样有一个问题, 因为采集时间有时候间隔2分钟, 有时候3分钟,有时候5分钟, 这就导致 derivative之后的差值也是2分钟的, 3分钟的 , 5分钟的. 在kibana上面展示出来的就忽大忽小, 不能一眼看出来生产速度是多少, 也不能看出来生产速度有没有增加或者减少.
"aggs": {
"2": {
"date_histogram": {
"field": "@timestamp",
"interval": "1m",
"time_zone": "Asia/Shanghai",
"min_doc_count": 1
},
"aggs": {
"1": {
"derivative": {
"buckets_path": "1-metric"
}
},
"1-metric": {
"sum": {
"field": "logsize"
}
}
}
}
}
response截取
[
{
"key_as_string": "2018-11-06T16:12:00.000+08:00",
"key": 1541491920000,
"doc_count": 30,
"1-metric": {
"value": 1028875959431
}
},
{
"1": {
"value": 31658233
},
"key_as_string": "2018-11-06T16:20:00.000+08:00",
"key": 1541492400000,
"doc_count": 30,
"1-metric": {
"value": 1028907617664
}
},
{
"1": {
"value": 10852752
},
"key_as_string": "2018-11-06T16:22:00.000+08:00",
"key": 1541492520000,
"doc_count": 30,
"1-metric": {
"value": 1028918470416
}
},
{
"1": {
"value": 31959053
},
"key_as_string": "2018-11-06T16:30:00.000+08:00",
"key": 1541493000000,
"doc_count": 30,
"1-metric": {
"value": 1028950429469
}
}
]
我的需求是, 得到的 derivative 值, 可以再除以时间跨度之后再展示. 不管是 query dsl 里面实现也好, 还是 kibana 上面处理也好. 有啥方法吗?
1 个回复
rochy - rochy_he
赞同来自:
欢迎高手解答