はじめてのCloudflare Tunnel その2 確立させたTunnelを監視する
はじめてのCloudflare Tunnel その1 Cloudflare Tunnelを試してみるでは、Cloudflare Tunnelの設定を行ってみました。
CloudflareのEdgeネットワークと対象サーバのcloudflared
デーモンの間にアウトバウンド型でTunnelが確立され、インバウンド通信の設定不要でSSHやHTTPSなどのプロトコルにオリジンを対応させることができます。
では、そのデーモンやTunnelの監視はどのように行えばいいのでしょうか。この記事ではその設定を試してみます。
オリジン側(デーモンの監視)
デーモン監視なので皆さんが普段利用している任意の方法で監視可能ですが、Cloudflareのドキュメントではsystemctl status cloudflared
を用いています。
[root@ip-172-31-14-42 ~]# systemctl status cloudflared
● cloudflared.service - cloudflared
Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-04-25 05:09:45 UTC; 2 days ago
Main PID: 22742 (cloudflared)
CGroup: /system.slice/cloudflared.service
└─22742 /usr/bin/cloudflared --no-autoupdate tunnel run --token eyJhIjoiNzA5ZTNkODQ1ZTEwYWFmZTUyYTg4YTgzMzYxNzgyMjAiLCJ0IjoiN2QwN2Fh...
Apr 25 05:09:44 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023/04/25 05:09:44 failed to sufficiently increase rec...ils.
Apr 25 05:09:45 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-25T05:09:45Z INF Registered tunnel connection c...quic
Apr 25 05:09:45 ip-172-31-14-42.ap-northeast-1.compute.internal systemd[1]: Started cloudflared.
Apr 25 05:09:46 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-25T05:09:46Z INF Registered tunnel connection c...quic
Apr 25 05:09:46 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-25T05:09:46Z INF Registered tunnel connection c...quic
Apr 25 05:09:48 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-25T05:09:48Z INF Registered tunnel connection c...quic
Apr 25 05:22:32 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-25T05:22:32Z INF Updated to new configuration c...on=1
Apr 25 05:41:13 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-25T05:41:13Z INF Updated to new configuration confi...
Hint: Some lines were ellipsized, use -l to show in full.
Cloudflare側の監視
以下のステータスがHEALTHY以外となった場合アラートを通知する機能が備わっています。
マネージメントコンソール左ペインからNotifications
をクリックします。
Add
を押します。
様々な通知可能項目が出てきますが、Tunnel Health Alert
のSelect
ボタンを押します。
以下のように適当な名前をつけAlert送付先メールアドレスを入力し、Next
を押します。
通知の種類を選択します。
Becomes either healthy, degraded, or down
を選んで作業を進めるためにCreate
を押します。
以上でAlert設定は完了です。
では意図的にTunnelをダウンさせてみます。Amazon EC2の場合、セキュリティグループのアウトバウンドを閉じます。しばらくしてアクセスを行うと以下のようにオリジンへのアクセスが行えないエラーとなります。
cloudflared
のステータスは以下のようになっています。
デーモンはアクティブですが、エラーが出力されています。
systemctl status cloudflared
● cloudflared.service - cloudflared
Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-04-25 05:09:45 UTC; 2 days ago
Main PID: 22742 (cloudflared)
CGroup: /system.slice/cloudflared.service
└─22742 /usr/bin/cloudflared --no-autoupdate tunnel run --token eyJhIjoiNzA5ZTNkODQ1ZTEwYWFmZTUyYTg4YTgzMzYxNzgyMjAiLCJ0IjoiN2QwN2Fh...
Apr 27 18:45:40 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-27T18:45:40Z ERR error="Unable to reach the origin...
Apr 27 18:45:40 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-27T18:45:40Z ERR Request failed error="Unable to re...
Apr 27 18:45:40 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-27T18:45:40Z ERR error="Unable to reach the origin...
Apr 27 18:45:40 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-27T18:45:40Z ERR Request failed error="Unable to re...
Apr 27 18:45:40 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-27T18:45:40Z ERR error="Unable to reach the origin...
Apr 27 18:45:40 ip-172-31-14-42.ap-northeast-1.compute.internal cloudflared[22742]: 2023-04-27T18:45:40Z ERR Request failed error="Unable to re...
Hint: Some lines were ellipsized, use -l to show in full.
一方Cloudflare側のコンソールでは以下の通りHEALTHYのままとなることに注意してください。
これは、Tunnel自体は存続しておりいつでもcloudflaredからの通信を受け入れ可能であることを示しています。つまり、Tunnel自体の正常性を監視しており、個別セッションが監視されていないことを意味します。追加の監視が必要な場合、例えばAmazon CloudWatch Synthetics等外形監視を使うことをお勧めします。(Cloudflare側にその機能があってもいいと思うのでこれは内部でリクエストを上げておきます)
(2023/05/29追記)
TunnelがDownした場合、以下のメールが届きます。
Discussion