Workers Analytics Engine は、Grafana などのツールで可視化できる時系列分析向けに最適化されています。ランタイムから書き込まれた各イベントには、timestamp フィールドが自動で入ります。
Grafana から Workers Analytics Engine をクエリするには、Altinity plugin for Clickhouse ↗ の利用を推奨します。
プラグインは次のように設定します。
- 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 tAltinity プラグインには、この種のクエリを簡潔に書けるマクロがあります。クエリビルダーで 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このクエリは、ズームレベルに応じて丸め間隔を自動調整し、現在表示中の正しい時間範囲でフィルタします。