🥅

Azure Functions の通信を tcpdump する方法

2023/12/14に公開

はじめに

ネットワークレベルで何かしらの問題が発生しており、(入るリクエスト/出るリクエストを) パケットレベルで確認したいということはよくあると思います。
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 に遷移します。
webssh

遷移後、tcpdump コマンドをインストールします。

apt-get update
apt-get -y install tcpdump

2. パケットキャプチャ開始

Azure Functions では home ディレクトリが、そのアプリ専用の Azure Storage 内のコンテンツ共有にマップされます。
home 配下は、Azure Functions アプリを動作させているインスタンスのローカルに保存されませんので、アプリの再起動後も保持されます。(逆に言うと、home 配下以外に置いたファイル等は再起動時に保持されません)
この説明については下記の公開ドキュメントに記載があります。

https://learn.microsoft.com/ja-jp/azure/app-service/operating-system-functionality#types-of-file-access-granted-to-an-app

パケットキャプチャした内容を保持するためにも、まずは home ディレクトリに移動します。

次に、以下のコマンドを実行してパケットキャプチャを開始し、適当に Azure Functions の関数などを実行後、キャプチャを停止します。

tcpdump -s 0 -i any -n -w output.pcap -tttt

File Manger を確認すると、output.pcap ファイルが生成されていることがわかります。
filemanager

3. キャプチャされているか確認

wireshark でパケットキャプチャした内容を見ると、対象の時間帯でリクエストした HTTP トリガーの関数 (/api/HttpTrigger2) のログエントリが存在することがわかります。
wireshark

あとは、解析したい内容を見ていくだけです!!!!

おわりに

本記事では、簡単にですが Azure Functions EP Plan - Linux におけるパケットキャプチャの方法をご紹介しました。
ネットワークレベルで何か問題が発生した際に、問題を切り分けるための 1 つの方法としてご利用することができると思いますので、是非ご活用ください~~😆

Discussion