Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Grafana からのクエリ

最終更新 Markdown で表示Agent セットアップ

Workers Analytics Engine は、Grafana などのツールで可視化できる時系列分析向けに最適化されています。ランタイムから書き込まれた各イベントには、timestamp フィールドが自動で入ります。

Grafana プラグインのセットアップ

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 t

Altinity プラグインには、この種のクエリを簡潔に書けるマクロがあります。クエリビルダーで Column:DateTimetimestamp に設定すると、次のように使えます。

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

このクエリは、ズームレベルに応じて丸め間隔を自動調整し、現在表示中の正しい時間範囲でフィルタします。

役に立ちましたか?