Azure Functions の通信を tcpdump する方法
はじめに
ネットワークレベルで何かしらの問題が発生しており、(入るリクエスト/出るリクエストを) パケットレベルで確認したいということはよくあると思います。
Azure Functions においてもこれは同様だと思います。
本記事では、Azure Functions Premium Plan - Linux でパケットをキャプチャする方法について紹介します。
Azure Functions のプラン
Azure Functions には 2023/12/14 時点では 3 つの基本的なホスティングプランが利用できます。
Linux / Windows で利用するにあたり、これらのホスティングプランが一般提供 (GA) されています。
本記事ではこれらのプランのうち Premium プラン (以下、EP Plan) で Linux を利用したパケットキャプチャを紹介します。
パケットキャプチャする手順
※Azure Functions EP Plan - Linux を作成していることを前提にご説明していきます。
1. tcpdump コマンドのインストール
<関数アプリ名>.scm.azurewebsites.net/newui/webssh
に遷移します。
遷移後、tcpdump コマンドをインストールします。
apt-get update
apt-get -y install tcpdump
2. パケットキャプチャ開始
Azure Functions では home
ディレクトリが、そのアプリ専用の Azure Storage 内のコンテンツ共有にマップされます。
home
配下は、Azure Functions アプリを動作させているインスタンスのローカルに保存されませんので、アプリの再起動後も保持されます。(逆に言うと、home
配下以外に置いたファイル等は再起動時に保持されません)
この説明については下記の公開ドキュメントに記載があります。
パケットキャプチャした内容を保持するためにも、まずは home
ディレクトリに移動します。
次に、以下のコマンドを実行してパケットキャプチャを開始し、適当に Azure Functions の関数などを実行後、キャプチャを停止します。
tcpdump -s 0 -i any -n -w output.pcap -tttt
File Manger を確認すると、output.pcap
ファイルが生成されていることがわかります。
3. キャプチャされているか確認
wireshark でパケットキャプチャした内容を見ると、対象の時間帯でリクエストした HTTP トリガーの関数 (/api/HttpTrigger2
) のログエントリが存在することがわかります。
あとは、解析したい内容を見ていくだけです!!!!
おわりに
本記事では、簡単にですが Azure Functions EP Plan - Linux におけるパケットキャプチャの方法をご紹介しました。
ネットワークレベルで何か問題が発生した際に、問題を切り分けるための 1 つの方法としてご利用することができると思いますので、是非ご活用ください~~😆
Discussion