#mysql #grafana
#mysql #grafana
Вопрос:
У меня есть несколько серверов, сообщающих значение (показатель температуры или надежности). Я хочу построить их в одном и том же временном ряду. значение с течением времени для каждой метрики.
таблица выглядит следующим образом
Total Reliability
Time | value | metric
2021-12-07 08:24:20 | 0.994 | 2787
2021-12-07 08:25:18 | 0.996 | 3129
2021-12-07 08:25:34 | 0.994 | 2787
2021-12-07 08:26:31 | 0.996 | 3129
2021-12-07 08:26:48 | 0.994 | 2787
2021-12-07 08:27:44 | 0.996 | 3129
Я прочитал несколько похожих вопросов, но по какой-то причине их решение не работает
SELECT
time AS “time”,
reliability as value,
machine_id as metric
FROM machine
WHERE
$__unixEpochFilter(time)
GROUP BY machine_id,time
ORDER BY time asc
если я удалю группировку для построения двух столбцов
с использованием Grafana v8.2.5 (b57a137acd) и MySQL Server 8.0.27
Комментарии:
1. Я могу сделать это с помощью запроса для каждой системы, но поскольку я не знаю, сколько будет серверов или какие будут machine_IDs, мне нужно найти способ для tot сгруппировать его
Ответ №1:
Метрика должна быть строковой. В вашем случае это выглядит как целое число, так что взломайте machine_id as metric
:
CONCAT(machine_id , '') AS metric
Используйте макросы Grafana MySQL для объединения времени. Затем окончательный SQL-запрос Grafana с агрегацией 5m avg должен быть:
SELECT
$__timeGroup(time,'5m'),
AVG(reliability) AS value,
CONCAT(machine_id, '') AS metric
FROM machine
WHERE $__unixEpochFilter(time)
GROUP BY machine_id, time
ORDER BY time ASC
Все еще может потребоваться небольшая корректировка.
Ответ №2:
Я использую это.
SELECT
time AS "time",
reliability AS value,
CONCAT(machine_id, '') AS metric
FROM machine
WHERE
$__unixEpochFilter(time)
ORDER BY time
Комментарии:
1. При этом выбираются необработанные данные — при выборе более длительного временного диапазона (например, 1 месяц) может быть возвращено много данных, и у вашего браузера могут возникнуть проблемы с обработкой этих данных (большой объем памяти, загрузка процессора). Настоятельно рекомендуется агрегирование времени.