目次
・はじめに
・前提条件
・用意するもの
・デバイス一覧を集計するダッシュボード作り
・Cloudflaredのアクティブトラフィック量を監視するダッシュボード作り
・Grafanaでダッシュボード作成以外にもできること
・おわりに
はじめに
以前の記事では、Cloudflare API×Pythonを利用して、Cloudflareのダッシュボードでは実現できないような分析を簡単に行えるツールを作成しました。
一度ツールを作成してしまえば、誰でも手軽に利用できる一方で、自由度や柔軟性には限界があり、やりたいことが増えると、その分ツールも増えていってしまします。
そこで今回は、オープンソースの可視化プラットフォームである Grafanaを利用し、Cloudflare の各種設定情報やデバイス情報を集計・分析できるダッシュボードを作成してみようと思います!
Grafana を利用することで、以下のようなことが可能になります。
✅ Cloudflareダッシュボードでは難しい柔軟なフィルタリングやレイアウト
✅ ダッシュボードや一覧情報をCSVやPDF形式でエクスポート
✅ 複数アカウントの情報を横断した集計・分析
✅ Grafanaのアラート機能を利用した監視・通知
今回は検証として、下記の一覧情報を可視化できるダッシュボードを作成してみました。
・Cloudflare Zero Trustに登録されているデバイス一覧
・cloudflaredのアクティブセッション数、収容状況
前提条件
GrafanaでCloudflareと連携する方法は大きく3つあります。
①GrafanaデフォルトのCloudflareデータソース
デフォルトでCloudflare APIと連携し、トラフィック量やDNSクエリ数などCloudflareが提供する分析データを可視化できます。
一方で、デバイス一覧やTunnel一覧などの設定情報の取得には対応していません。
②Infinityデータソース × Cloudflare API
指定したCloudflare APIを直接呼び出し、デバイス一覧やTunnel一覧など任意の情報を取得・可視化できます。
API エンドポイント次第で柔軟なダッシュボードを作成できます。
③Prometheusによりメトリクスを取得する
cloudflaredが公開するPrometheusメトリクスを収集し、アクティブセッション数やエラー数などを可視化できます。
Cloudflare ダッシュボードでは確認できないコネクタの稼働状況や負荷状況を監視できる点が特徴です。
用意するもの
・Cloudflare APIトークン
取得方法
GrafanaはGETアクションのみが可能のため、読み取り権限のみ与えたユーザAPIトークンを発行します。 マイプロフィール → API トークンから、一番下の「すべてのリソースを読み取る」を選択してAPIトークンを作成します。・Grafana
・Prometheus
※③のように、Cloudflare ダッシュボード上の情報だけでなく、cloudflaredの稼働しているサーバからも情報を取得したい場合に必要
Cloudflare Tunnelのスループットやリソース使用量等をトンネルメトリクスとして収集し、監視できます。
利用可能なトンネルメトリクス一覧は下記リンクを参照
デバイス一覧を集計するダッシュボード作り
デバイス一覧をOSやメールドメイン、バージョン等で柔軟にフィルターし、可視化できるダッシュボードを作成しました。
最終的に完成したダッシュボードがこちらです。
完成形

✅画面上部でメールドメイン/OS/Clientバージョンでフィルター可能
✅総デバイス数(フィルター結果)を大きく表示
✅OSごとのデバイス数をグラフ化
✅メールドメインごとのデバイス数を集計して表示
Cloudflareダッシュボードではできない集計が可能になり、クライアントの展開状況が一目で分かるようになりました!
作り方
データソース作成
今回は②のInfinityデータソースでデバイス一覧のCloudflare APIを直接呼び出す方式を使います。
まず、GrafanaのConnections → Add new connectionから「Infinity」を検索し、Add new data sourceを押します。

次に、URL, Headers & Paramsタブで下記を入力し、画面下部のSave & Testを押して接続確認します。
{APIトークン} と {アカウントID} は Cloudflare ダッシュボードから取得します。
・Base URL
https://api.cloudflare.com/client/v4/accounts/{アカウントID}/devices/physical-devices
・Custom HTTP Header
Authorization / Bearer {APIトークン}
Content-Type / application/json
ダッシュボード作成
正常に接続確認できたら、保存したデータソースを開き、Build a dashboard → + Blankを選択します。

ここからが本番です。
Grafanaのパネル作成は手動だと少し大変ですが、GrafanaのAIがとても優秀なので、AIにお願いするのが最速でした。
画面右上のキラキラマークを押すと、AIチャットが開きます。

ここに「デバイス一覧をテーブル化したい」「OSごとに集計したい」といった要望を投げると、時間はかかりますがAIがほぼすべて自動でパネルを生成してくれます。
その結果できあがったのが、冒頭で紹介した完成形のダッシュボードです。
Cloudflareダッシュボードでは実現できない柔軟な集計が可能になり、展開状況の把握や端末管理が圧倒的に楽になりました。
今後はさらに見た目を整えたり、運用に役立つフィルター(同一ユーザの複数端末をまとめる、古い端末の抽出、etc...)を追加して強化していく予定です!
Cloudflaredのアクティブトラフィック量を監視するダッシュボード作り
Cloudflaredが中継するアクティブセッション数を可視化したダッシュボードを作成しました。
最終的に完成したダッシュボードがこちらです。(検証環境なので、トラフィックなし…)
完成形
✅現在アクティブなTCP/UDPセッション数
✅TCP/UDPのセッション数の推移
✅コネクタの収容率
✅コネクタ別のリクエスト数
どれもCloudflareのダッシュボード上からは確認できない情報を分かりやすく可視化することができました!
コネクタの通信状況や負荷を継続的に監視し、通信逼迫の早期対策に役立てることができます。
作り方
Prometheus導入
CloudflaredはデフォルトでPrometheus形式のメトリクスを公開するHTTPサーバを起動しています。
Prometheusはそのメトリクスを定期的に収集し、GrafanaはPrometheusに蓄積されたデータを可視化します。
まずは Cloudflaredのメトリクスを収集するために、Cloudflared稼働サーバへPrometheusを導入します。
下記コマンドを実行し、Prometheusをダウンロードして展開します。
mkdir prometheus
cd prometheus
wget https://github.com/prometheus/prometheus/releases/download/v3.14.0/prometheus-3.14.0.linux-amd64.tar.gz
tar -xzvf prometheus-3.14.0.linux-amd64.tar.gz
インストールが完了したら、設定ファイルを編集します。
cd ~/prometheus/prometheus-3.14.0.linux-amd64
vi prometheus.yml
prometheus.yml の末尾に以下の設定を追加します。
※Cloudflared のメトリクスサーバはデフォルトで 127.0.0.1:20241を使用しますが、環境によって異なる場合があるため、事前に確認しておくことをおすすめします。
確認コマンド:journalctl -u cloudflared | grep metrics
- job_name: "cloudflared"
static_configs:
- targets: ["127.0.0.1:20241"]
設定が完了したら、以下のコマンドでPrometheusを起動します。
./prometheus
起動後、ログに以下のメッセージが表示されれば正常に起動しています。
「Server is ready to receive web requests.」
また、ブラウザから以下へアクセスできれば、PrometheusのWeb UIが利用可能です。
http://<サーバIP>:9090
データソース作成
次に、GrafanaでPrometheusのデータソースを作成します。
この時、Grafanaをインストールする端末からPromethesuをインストールしたサーバに通信できる事が必須条件となります。
まず、Connectors → Data sourceからAdd new data sourceを押します。

Prometheusを検索し、選択します。

ConnectionにPrometheusのURL、待ち受けポートを入力します。

それ以外はデフォルトのまま、Save & testを押します。

ダッシュボード作成
正常に保存ができたら、Exploreからデータソースにprometheusを選択するとCloudflareのメトリクスが選択できるようになります。

ここでも自身で作りこみを行うのではなく、AIチャットで色々とお願いをして、作ってもらいました。
今回はただ収集した情報を載せるだけでなく、TCP/UDP のアクティブセッション数を基に、ポート利用率を算出するパネルまで作成してもらいました。

Grafanaでダッシュボード作成以外にもできること
ダッシュボードを作成するだけでなく、他にもいいなと思った機能を紹介します。
CSV/PDF形式でのエクスポート
Cloudflareのダッシュボードではできない、ダッシュボードや一覧情報をCSV/PDF形式で出力する事ができます。
ダッシュボード画面右側のExport → Export as PDFを押すと、PDF形式でダッシュボードをダウンロードできます。

報告資料の作成などに役立ちそうです!
アラートの通知
監視している数値がしきい値を超えた際に、アラートを通知する事ができます。
Alerts & IRMから、アラートルールを作成し、条件や通知先を設定することで、メールなどで通知を受け取ることが可能です。
アクティブセッション数やエラー数の急増をリアルタイムで検知できるため、障害の早期発見などに役立ちそうです!
終わりに
今回はCloudflare APIやcloudflared のメトリクスを活用し、Grafana上で各種情報を可視化してみました。
まだまだ改善の余地があると感じており、今後は他のCloudflare API エンドポイントも活用しながら、実務や運用に役立つダッシュボードの作成に挑戦していきたいと思います。






