我对 influxdb 很陌生。
我有一个这样的数据集;(每一行/点都是一个连接)
time dest_ip source_ip
---- ------- ---------
2018-08-10T11:42:38.848793088Z 211.158.223.252 10.10.10.227
2018-08-10T11:42:38.87115392Z 211.158.223.252 10.10.10.59
2018-08-10T11:42:38.875289088Z 244.181.55.139 10.10.10.59
2018-08-10T11:42:38.880222208Z 138.63.15.221 10.10.10.59
2018-08-10T11:42:38.886027008Z 229.108.28.201 10.10.10.227
2018-08-10T11:42:38.892329728Z 229.108.28.201 10.10.10.181
2018-08-10T11:42:38.896943104Z 229.108.28.201 10.10.10.59
2018-08-10T11:42:38.904005376Z 22.202.67.174 10.10.10.227
2018-08-10T11:42:38.908818688Z 138.63.15.221 10.10.10.181
2018-08-10T11:42:38.913192192Z 138.63.15.221 10.10.10.181
Run Code Online (Sandbox Code Playgroud)
dest_ip 和 source_ip 是字段,而不是标记。
是否可以按 dest_ip 以某种方式对所有连接记录进行分组并获取前 10 条记录的计数?
是否可以按 dest_ip 和 source_ip 进行分组并获取前 10 条记录的计数?
或者有任何其他解决方案可以根据连接计数获取前 10 个 source_ip 到 dest_ip 关系?
目前InfluxDB仅支持GROUP BY子句中的标签和时间间隔;如您所见,group by 子句的语法(更多信息请参阅InfluxDB 文档):
SELECT <function>(<field_key>) FROM_clause WHERE <time_range> GROUP BY time(<time_interval>),[tag_key]
Run Code Online (Sandbox Code Playgroud)
但是,如果您插入dest_ipandsource_ip作为标签而不是字段,则可以使用 InfluxQL 查询语言实现您提到的所有愿望。