2016-08-17 2 views
1

나는 Grafana에 쿼리를 가지고 : influxdb의 여러 차원에서 집계 함수를 호출 할 수 있습니까?

SELECT mean(value) FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host", "instance" 

현재이 호스트 당 큐마다 별도의 그래프를 보여 주어진 시간 기간 동안 rabbitmq 큐에 메시지의 평균 수를 그래프.

나는 본질적으로 똑같은 작업을 원하지만 모든 대기열을 함께 추가하는 호스트 당 단 하나의 그래프로 결과하고 싶습니다. 이는 지정된 기간 (0-초, host 초 및 시간 간격을 따로 유지) 동안 모든 메시지 수의 평균을 취한 다음 이들을 합계 함 (이번에는 host과 시간 간격을 별도로 유지함)을 의미합니다.

mean 또는 sum과 같은 각 집계 함수는 전체 쿼리에만 영향을 미치며 하나의 집계 함수에 GROUP BY 문을 적용하는 방법이없는 것처럼 보입니다. 그것이 가능했던 경우

는,이 같은 짓을 한 것 :

SELECT sum(mean(value) GROUP BY "instance") FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host" 

또는이 :

SELECT sum(value) FROM (SELECT mean(value) FROM "queues_value" WHERE "host" =~ /$host/ AND "type" = 'rabbitmq_messages' AND $timeFilter GROUP BY time($interval), "host", "instance") GROUP BY time($interval), "host" 

하지만 그 중 어느 것도 유효한 구문됩니다.

본질적으로 주어진 기간 동안 하나의 특정 호스트에서 하나의 특정 대기열을 포함하는 집계를 먼저 작업하고 그 다음에 해당 호스트의 계산 결과로 구성된 집계를 작업하려고합니다. 같은 기간.

나는 influxdb 또는 grafana에서 원하는 것을 성취 할 수있는 방법이 있습니까?

답변

2

InfluxDB에서이 작업을 수행하는 방법이 있지만 두 단계 프로세스가 있습니다.

첫째, 평균

CREATE CONTINUOUS QUERY <name> ON <database> 
BEGIN 
    SELECT mean(value) AS value 
    INTO "mean_queue_value" FROM "queues_value" 
    WHERE "host" =~ /<host>/ 
    AND "type" = 'rabbitmq_messages' 
    GROUP BY time(<interval>), "host" 
END 
을 계산 연속 쿼리를 만들

그리고 단순히 쿼리

SELECT sum(value) FROM "mean_queue_value" GROUP BY time(<interval>), "host" 
를 발행
관련 문제