Grafana ↗ は、ほかのデータベースに保存されたデータを可視化するダッシュボードツールです。Grafana を使い、トンネルのメトリクス を実用的なインサイトに変換できます。
cloudflared から Grafana へメトリクスを直接プッシュすることはできません。代わりに、cloudflared は Prometheus ↗ のメトリクスエンドポイントを公開し、Prometheus サーバーが定期的にスクレイプします。Grafana は Prometheus をデータソースとして使い、管理者にメトリクスを表示します。
flowchart LR subgraph 192.168.1.1 A[cloudflared]-->B[メトリクスエンドポイント] end B--->C subgraph 192.168.1.2 C[Prometheus サーバー]-->D[Grafana ダッシュボード] end
このチュートリアルでは、メトリクスエンドポイントの作成、Prometheus サーバーのセットアップ、Grafana でのデータ表示までを扱います。
- Cloudflare Tunnel が必要です。トンネルの作成は、スタートガイド を参照してください。
トンネルを CLI で作成した場合は、cloudflared サーバー(192.168.1.1)で次のコマンドを実行します。
cloudflared tunnel --metrics 192.168.1.1:60123 run my-tunnelトンネルをダッシュボードで作成した場合は、cloudflared のシステムサービス設定に --metrics フラグを追加する必要があります。手順は トンネルの run パラメーターを追加する を参照してください。
Prometheus と Grafana のサーバー(192.168.1.2)で次を行います。
-
Prometheus を ダウンロード ↗ します。
-
Prometheus を展開します。
tar xvfz prometheus-*.tar.gz cd prometheus-* -
テキストエディターで
prometheus.ymlを開き、ファイル末尾にcloudflaredジョブを追加します。# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["localhost:9090"] ## Address of Prometheus dashboard - job_name: "cloudflared" static_configs: - targets: ["198.168.1.1:60123"] ## cloudflared server IP and the --metrics port configured for the tunnel -
Prometheus を起動します。
./prometheus --config.file="prometheus.yml"マシン再起動時に手動起動しなくて済むよう、Prometheus をサービスとして動かすこともできます。
-
ブラウザーで
http://localhost:9090/を開きます。Prometheus ダッシュボードにアクセスできるはずです。 -
Prometheus がトンネルメトリクスを取得していることを確認するには、expression console に
cloudflared_tunnel_total_requestsを入力し、Execute を選択します。
利用可能なほかのメトリクスは、利用可能なメトリクス を参照してください。
-
Grafana を ダウンロード ↗ してインストールします。
-
Grafana をシステムサービスとして起動します。
sudo systemctl daemon-reload sudo systemctl start grafana-server -
Grafana が動いていることを確認します。
sudo systemctl status grafana-server -
ブラウザーで
http://localhost:3000/を開きます。Grafana が待ち受けるデフォルトの HTTP ポートは3000です。別のポートを設定している場合を除きます。 -
サインインページで Grafana の認証情報を入力します。
アカウントなしで試す場合は、ユーザー名とパスワードの両方に
adminを入力し、パスワード変更の手順をスキップできます。 -
Grafana で Connections > Data sources を開きます。
-
Add a new data source を選択し、Prometheus を選びます。
-
Prometheus server URL フィールドに、Prometheus ダッシュボードの IP アドレスとポート(
http://localhost:9090)を入力します。 -
Save & test を選択します。
- Grafana で Dashboards > New > New dashboard を開きます。
- Add visualization を選択します。
- Prometheus を選択します。
- メトリクスフィールドに
cloudflared_tunnel_total_requestsを入力し、Run queries を選択します。リクエスト数を時間の関数として示したグラフが表示されます。
クエリに演算を追加して、表示内容を変えられます。たとえば、メトリクスの記録開始以降のすべてのトンネルリクエストではなく、直近 1 日など、最近の期間のトンネルリクエストだけを表示できます。