对子聚合结果进行统计

作者 赵圣锋 | 发布于2018年10月16日 | 阅读数:158

在kibana上使用表格的格式,在聚合branch后再对User-Agent进行聚合


2726bd2d252e4fb0a0c05d3a8a4ec8d2.png

这是表格的请求
 "aggs": {
"4": {
"terms": {
"field": "header.Via_branch.branch.keyword",
"size": 500,
"order": {
"_count": "desc"
},
"min_doc_count": 2
},
"aggs": {
"3": {
"terms": {
"field": "header.User-Agent.keyword",
"size": 50,
"order": {
"_count": "desc"
}
}
}
}
}

现在我想在这个基础上统计各个User-Agent的数量,我应该怎么做
想得到这样的结果:


User-Agent                                    count
SIP-Test 2.0.0.0                                  2
VC Mobile 1.23.0.1                            2
VC Mobile 1.25.0.10                          5


已邀请:

rochy - rochy_he@jointsky

赞同来自: 赵圣锋

看起来你目前的设置是没有错误的kibana 的 split row 部分,第一列设置为根据 header.Via_branch.branch.keyword 聚合,
第二列设置为根据 header.User-Agent.keyword 聚合
 
你可以参考我的测试案例:
第一列设置为根据 cache_flag 聚合,第二列根据 project_id 聚合
360截图-60768796.jpg

赵圣锋

赞同来自:

我明白你的意思 但是这样的话嵌套聚合的顺序就不对了, 得到的结果就不对了。因为我的日志是一个报文的格式,像这样子的
2018-10-16T00:53:37.825+0000 [NOTC]  log_receive_msg(): recv 948 bytes from tls/[127.0.0.1]:0000 at 00:53:37.825470:
------------------------------------------------------------------------
REGISTER sip: xxx ;transport=TLS SIP/2.0
Call-ID: 1_65671665@10.22.51.51
branch:z9hG4bK2177905531
CSeq: 3 REGISTER
User-Agent: VC Mobile 1.26.0.1
------------------------------------------------------------------------

2018-10-16T00:53:37.833+0000 [NOTC] log_send_msg(): send 808 bytes to tls/[127.0.0.0]:0000 at 00:53:37.833505:
------------------------------------------------------------------------
SIP/2.0 200 OK
Call-ID: 1_65671665@10.22.51.51
branch:z9hG4bK2177905531
CSeq: 3 REGISTER
------------------------------------------------------------------------
是需要统计 REGISTER 回复200 ok时  REGISTER 的User-Agent ,但是200 ok 的日志里面是不带User-Agent的。 所以我需要先对branch聚合,然后再嵌套User-Agent 
 

zqc0512 - andy zhou

赞同来自:

处理下,再新搞个索引吧。这玩意支持不是很好。或者在写入的时候就对数据做fork 产生新的字段。

要回复问题请先登录注册