← Аналитика / analytics / analytics-engine
Запрос из Grafana
Workers Analytics Engine оптимизирован для аналитики временных рядов, которую можно визуализировать с помощью таких инструментов, как Grafana. Каждое событие, записанное из runtime, автоматически дополняется timestamp поле.
Настройка плагина Grafana
Рекомендуем использовать Altinity plugin for Clickhouse ↗ для запросов к Workers Analytics Engine из Grafana.
Настройте плагин следующим образом:
- URL:
https://api.cloudflare.com/client/v4/accounts/<account_id>/analytics_engine/sql. Замените<account_id>на свой 32-значный ID аккаунта (доступен в дашборде Cloudflare). - Оставьте все настройки аутентификации выключенными.
- Добавьте собственный заголовок с именем
Authorizationи значением, равнымBearer <token>. Замените<token>с подходящей строкой API-токена (см. Документация SQL API , где приведены дополнительные сведения об этом). - Больше никаких параметров настраивать не нужно.
Запрос данных временных рядов
Для использования в дашборде обычно нужно агрегировать метрику по временным интервалам. Это можно сделать, округлив значения и затем сгруппировав их по timestamp поле. Следующий запрос округляет и группирует данные таким образом, а затем вычисляет среднее значение для каждого временного интервала с учётом выборка.
SELECT
intDiv(toUInt32(timestamp), 60) * 60 AS t,
blob1 AS label,
SUM(_sample_interval * double1) / SUM(_sample_interval) AS average_metric
FROM dataset_name
WHERE
timestamp <= NOW()
AND timestamp > NOW() - INTERVAL '1' DAY
GROUP BY blob1, t
ORDER BY tПлагин Altinity предоставляет полезные макросы, которые упрощают написание запросов такого типа. Для этих макросов необходимо задать Column:DateTime к timestamp в конструкторе запросов, после чего их можно использовать так:
SELECT
$timeSeries AS t,
blob1 AS label,
SUM(_sample_interval * double1) / SUM(_sample_interval) AS average_metric
FROM dataset_name
WHERE $timeFilter
GROUP BY blob1, t
ORDER BY tЭтот запрос автоматически подбирает время округления в зависимости от уровня масштабирования и фильтрует данные по отображаемому в данный момент временному диапазону.