Grafana中踩過的坑
阿新 • • 發佈:2018-11-08
1、時間戳
遇到將過去某一時間範圍內的放到今天顯示的需求,琢磨的一陣,是可以的。
timeFilter的變化技巧
SELECT
$timeSeries+86400*7*1000 as t,
domain,
sum(hit) as hit_2
FROM $table
WHERE date = today( ) - 7
AND datetime >= toDateTime($timeFilter-toDateTime(86400*7))
GROUP BY t,domain
ORDER BY t,domain
2、group by 的技巧
$colums()的功能有限,當需要多個select或group by多列時。其實查詢出來是想要的結果,但在圖上未表現出來,即沒有聚合(一條線)
例如:本來應該寫成:
SELECT
$timeSeries+86400*7*1000 as t,
domain,
sum(hit) as hit_2
FROM $table
WHERE date = today() - 7
AND datetime >= toDateTime($timeFilter-toDateTime(86400*7))
GROUP BY t,domain
ORDER BY t,domain
最後需要寫成(顯示多條線):
SELECT t,groupArray((domain, diff)) as groupArr
FROM
(SELECT
$timeSeries+86400*7*1000 as t,
domain,
sum(hit) as hit_2
FROM $table
WHERE date = today() - 7
AND datetime >= toDateTime($timeFilter-toDateTime(86400*7))
GROUP BY t,domain
ORDER BY t,domain)
GROUP BY t ORDER BY t
3、表格
操作表格時,需要將Metrics下方的Format as選擇Time series改為Table。表格的group by多列可以直接寫SQL。
4、時間datetime/ts/time
在選擇資料庫時,檢查Metrics下方的date有沒有需要填寫的時間列。
5、pie/donut圖
pie/donut圖需要有一個額外的sum(1) as tp,
這樣圖形才能正常顯示 。
SELECT
sum(1) as tp,
sum(duration/60 <= 1) as le1min,
sum(duration/60 > 1 AND duration/60<=2) as in1_2min,
sum(duration/60 > 2) as gt2min
FROM $table
WHERE $timeFilter
6、圖例或者變數等中文顯示
圖例或者變數等中文顯示需要反引號就可以 。
SELECT
sum(1) as tp,
sum(duration/60 <= 1) as `小於1min`,
sum(duration/60 > 1 AND duration/60<=2) as `1-2min`,
sum(duration/60 > 2) as `大於2min`
FROM $table
WHERE $timeFilter