我使用CloudLinux运行共享的Web托管。 从中,我可以得到一堆性能指标
所以,我的涌入数据库是:
测量:lve
字段:CPU,EP,IO,IOPS,MEM,MEMPHY,NETI,NETO,NPROC,fEP,fMEM,fMEMPHY,fNPROC,lCPU,lCPUW,lEP,lIO,lIOPS,lMEM,lMEMPHY,lNETI,lNETO,lNPROC ,NCPU
标签:xpool,host,user(其中:xpool是xen-pool uid,host是cloudLinux的主机名,user是共享主机的用户名)
每5秒收集一次数据
查询句子如何:
从特定的xpool + host选择记录,
获取5个唯一的用户名,从中产生5分钟周期内的CPU使用率? 有数百个美国名字,但我想要只有前5名。
注意:与https://docs.influxdata.com/influxdb/v1.5/query_language/functions/#top的TOP()示例4相同,除非预期结果为:
name: h2o_feet
time top location
---- --- --------
2015-08-18T00:00:00Z 8.12 coyote_creek
2015-08-18T00:54:00Z 2.054 santa_monica
而不是:
name: h2o_feet
time top location
---- --- --------
2015-08-18T00:48:00Z 7.11 coyote_creek
2015-08-18T00:54:00Z 6.982 coyote_creek
2015-08-18T00:54:00Z 2.054 santa_monica
2015-08-18T00:24:00Z 7.635 coyote_creek
2015-08-18T00:30:00Z 7.5 coyote_creek
2015-08-18T00:36:00Z 7.372 coyote_creek
2015-08-18T00:00:00Z 8.12 coyote_creek
2015-08-18T00:06:00Z 8.005 coyote_creek
2015-08-18T00:12:00Z 7.887 coyote_creek
由于'8.12'是'coyote_creek'的最高值,'2.054'是'santa_monica'的最高值
此致
-bino -
答案 0 :(得分:2)
例如,子查询可能有所帮助,例如,这是来自使用telegraf的数据库:
SELECT top,host FROM (SELECT TOP(usage_user, 1) AS top, host from cpu WHERE time > now() -1m GROUP BY host)
它将输出如下内容:
name: cpu
time top host
---- --- ----
1527489800000000000 1.4937106918238994 1.host.tld
1527489808000000000 0.3933910306845004 2.host.tld
1527489810000000000 4.17981072555205 3.host.tld
1527489810000000000 0.8654602675059009 4.host.tld
第一个查询是:
SELECT TOP(usage_user, 1) AS top, host from cpu WHERE time > now() -1m GROUP BY host
使用TOP
只获得1个项目并使用字段usage_user
然后去"漂亮的印刷"使用子查询:
SELECT top,host FROM (...)