はじめに
最近、Cloudflare で Proxy しているオリジンサーバのスタッツをリモートから見たい状況がありました。
しばらく技術職から離れていたところ、cloudflared が GUI から展開できるようになってましたので、それを使ってみました。
やりたいことは
- Public のホスト名でアクセス
- Access で認証認可
- Tunnel (cloudflared) でオリジンサーバのローカルポートへ誘導(Apache の /server-status)
- Tunnel は GUI で設定する
というような構成です。
Access の設定
まず外からアクセスするホスト名を決めて、Access を設定します。
(Access の認証認可ポリシーや Proxy するための DNS などの設定はここでは省きます)
Tunnel の設定
次に Tunnel の設定を行います。
Tunnel の名前を指定
環境の選択と自動導入コマンドの表示
作成時のウィザードではどれでもいいです、あとで選んで使います。
Public Hostnames をトンネルに誘導
ブラウザからの接続: https://stats.example.com/server-status
オリジンサーバへの接続: http://localhost:80/server-status
追加設定は2項目を適用しています。
- Host ヘッダの変更
オリジンサーバへのリクエストで HTTP Host ヘッダを stats.example.com でなく localhost で渡したいのでオプションを変更
- Access と関連付け
Tunnel が開設され Active になったときの無防備な公開を回避するため、開設前に先に Access 保護をかけておきます。
Tunnel 開設
表示されるコマンドをオリジンサーバーにコピペすると、cloudflared が繋がります。
接続
Access の画面へリダイレクトされるので、IDP を選択し、認証します。
IDP 認証がうまくいき、Access の認可も通ると、オリジンサーバのスタッツが表示されます。
Cloudflare で Proxy しながら、オリジンサーバの情報を横目に見ることができました。
ついでに cloudflared の metrics
cloudflared トンネルのスタッツも cloudflared がアウトプットしてます。それも見てみます。
cloudflared.log をみると起動時に metrics という行を見ることができると思います。
ここに http でアクセスすると統計情報がとれます。
デフォルトでは起動ごとにポートが変わるので、リモートから取るには面倒です。
metrics サーバ Listen IP/Port の固定
起動時にリッスンする IP と Port を指定できるので、それを使って固定します。
CLI では設定ファイルでも指定できますが、今回は GUI 経由で設定していますので起動ファイルの引数で指定してみます。(metrics を上記のコピペにて設定されたデフォルト値から変更しています)
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/remote/remote-management/#linux
Tunnel の設定
ブラウザからの接続: https://stats.example.com/metrics
オリジンサーバへの接続: http://localhost:11111/metrics
(オプション設定については Apache status と同じ2項目を追加)
こちらも無事に情報を取れました。
ただ、文字の羅列なので、人には優しくないです。
これは、Grafana でいい感じに可視化することができそうです。
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/do-more-with-tunnels/grafana/
こちらについては今後ということで。