Tutorial: Log network traffic to and from a virtual machine using the Azure portal
Article
Important
On September 30, 2027, network security group (NSG) flow logs will be retired. As part of this retirement, you'll no longer be able to create new NSG flow logs starting June 30, 2025. We recommend migrating to virtual network flow logs, which overcome the limitations of NSG flow logs. After the retirement date, traffic analytics enabled with NSG flow logs will no longer be supported, and existing NSG flow logs resources in your subscriptions will be deleted. However, NSG flow logs records won't be deleted and will continue to follow their respective retention policies. For more information, see the official announcement.
Network security group flow logging is a feature of Azure Network Watcher that allows you to log information about IP traffic flowing through a network security group. For more information about network security group flow logging, see NSG flow logs overview.
This tutorial helps you use NSG flow logs to log a virtual machine's network traffic that flows through the network security group associated to its network interface.
In this tutorial, you learn how to:
Create a virtual network
Create a virtual machine with a network security group associated to its network interface
Register Microsoft.insights provider
Enable flow logging for a network security group using Network Watcher flow logs
Download logged data
View logged data
Prerequisites
An Azure account with an active subscription. If you don't have one, create a free account before you begin.
Create a virtual network
In this section, you create myVNet virtual network with one subnet for the virtual machine.
In the search box at the top of the portal, enter virtual networks. Select Virtual networks from the search results.
Select + Create. In Create virtual network, enter or select the following values in the Basics tab:
Setting
Value
Project details
Subscription
Select your Azure subscription.
Resource Group
Select Create new. Enter myResourceGroup in Name. Select OK.
Instance details
Name
Enter myVNet.
Region
Select (US) East US.
Select Review + create.
Review the settings, and then select Create.
Create a virtual machine
In this section, you create myVM virtual machine.
In the search box at the top of the portal, enter virtual machines. Select Virtual machines from the search results.
Select + Create and then select Azure virtual machine.
In Create a virtual machine, enter or select the following values in the Basics tab:
Setting
Value
Project Details
Subscription
Select your Azure subscription.
Resource Group
Select myResourceGroup.
Instance details
Virtual machine name
Enter myVM.
Region
Select (US) East US.
Availability Options
Select No infrastructure redundancy required.
Security type
Select Standard.
Image
Select Windows Server 2022 Datacenter: Azure Edition - x64 Gen2.
Size
Choose a size or leave the default setting.
Administrator account
Username
Enter a username.
Password
Enter a password.
Confirm password
Reenter password.
Select the Networking tab, or select Next: Disks, then Next: Networking.
In the Networking tab, select the following values:
Setting
Value
Network interface
Virtual network
Select myVNet.
Subnet
Select mySubnet.
Public IP
Select (new) myVM-ip.
NIC network security group
Select Basic. This setting creates a network security group named myVM-nsg and associates it with the network interface of myVM virtual machine.
Public inbound ports
Select Allow selected ports.
Select inbound ports
Select RDP (3389).
Caution
Leaving the RDP port open to the internet is only recommended for testing. For production environments, it's recommended to restrict access to the RDP port to a specific IP address or range of IP addresses. You can also block internet access to the RDP port and use Azure Bastion to securely connect to your virtual machine from the Azure portal.
Select Review + create.
Review the settings, and then select Create.
Once the deployment is complete, select Go to resource to go to the Overview page of myVM.
Select Connect then select RDP.
Select Download RDP File and open the downloaded file.
Select Connect and then enter the username and password that you created in the previous steps. Accept the certificate if prompted.
Register Insights provider
NSG flow logging requires the Microsoft.Insights provider. To check its status, follow these steps:
In the search box at the top of the portal, enter subscriptions. Select Subscriptions from the search results.
Select the Azure subscription that you want to enable the provider for in Subscriptions.
Select Resource providers under Settings of your subscription.
Enter insight in the filter box.
Confirm the status of the provider displayed is Registered. If the status is NotRegistered, select the Microsoft.Insights provider then select Register.
Create a storage account
In this section, you create a storage account to use it to store the flow logs.
In the search box at the top of the portal, enter storage accounts. Select Storage accounts from the search results.
Select + Create. In Create a storage account, enter or select the following values in the Basics tab:
Setting
Value
Project details
Subscription
Select your Azure subscription.
Resource Group
Select myResourceGroup.
Instance details
Storage account name
Enter a unique name. This tutorial uses mynwstorageaccount.
Region
Select (US) East US. The storage account must be in the same region as the virtual machine and its network security group.
Performance
Select Standard. NSG flow logs only support Standard-tier storage accounts.
Redundancy
Select Locally-redundant storage (LRS) or different replication strategy that matches your durability requirements.
Select the Review tab or select the Review button at the bottom.
Review the settings, and then select Create.
Create an NSG flow log
In this section, you create an NSG flow log that's saved into the storage account created previously in the tutorial.
In the search box at the top of the portal, enter network watcher. Select Network Watcher from the search results.
Under Logs, select Flow logs.
In Network Watcher | Flow logs, select + Create or Create flow log blue button.
Enter or select the following values in Create a flow log:
Setting
Value
Project details
Subscription
Select the Azure subscription of your network security group that you want to log.
Leave the default of myVM-nsg-myResourceGroup-flowlog.
Instance details
Subscription
Select the Azure subscription of your storage account.
Storage Accounts
Select the storage account you created in the previous steps. This tutorial uses mynwstorageaccount.
Retention (days)
Enter 0 to retain the flow logs data in the storage account forever (until you delete it from the storage account). To apply a retention policy, enter the retention time in days. For information about storage pricing, see Azure Storage pricing.
Note
The Azure portal creates NSG flow logs in the NetworkWatcherRG resource group.
Select Review + create.
Review the settings, and then select Create.
Once the deployment is complete, select Go to resource to confirm the flow log created and listed in the Flow logs page.
Go back to your RDP session with myVM virtual machine.
Open Microsoft Edge and go to www.bing.com.
Download the flow log
In this section, you go to the storage account you previously selected and download the NSG flow log created in the previous section.
In the search box at the top of the portal, enter storage accounts. Select Storage accounts from the search results.
Select mynwstorageaccount or the storage account you previously created and selected to store the logs.
Under Data storage, select Containers.
Select the insights-logs-networksecuritygroupflowevent container.
In the container, navigate the folder hierarchy until you get to the PT1H.json file. NSG log files are written to a folder hierarchy that follows the following naming convention:
Select the ellipsis ... to the right of the PT1H.json file, then select Download.
Note
You can use Azure Storage Explorer to access and download flow logs from your storage account. Fore more information, see Get started with Storage Explorer.
View the flow log
Open the downloaded PT1H.json file using a text editor of your choice. The following example is a section taken from the downloaded PT1H.json file, which shows a flow processed by the rule DefaultRule_AllowInternetOutBound.
The comma-separated information for flowTuples is as follows:
Example data
What data represents
Explanation
1677455097
Time stamp
The time stamp of when the flow occurred in UNIX EPOCH format. In the previous example, the date converts to February 26, 2023 11:44:57 PM UTC/GMT.
10.0.0.4
Source IP address
The source IP address that the flow originated from. 10.0.0.4 is the private IP address of the VM you previously created.
13.107.21.200
Destination IP address
The destination IP address that the flow was destined to. 13.107.21.200 is the IP address of www.bing.com. Since the traffic is destined outside Azure, the security rule DefaultRule_AllowInternetOutBound processed the flow.
49982
Source port
The source port that the flow originated from.
443
Destination port
The destination port that the flow was destined to.
T
Protocol
The protocol of the flow. T: TCP.
O
Direction
The direction of the flow. O: Outbound.
A
Decision
The decision made by the security rule. A: Allowed.
C
Flow State Version 2 only
The state of the flow. C: Continuing for an ongoing flow.
7
Packets sent Version 2 only
The total number of TCP packets sent to destination since the last update.
1158
Bytes sent Version 2 only
The total number of TCP packet bytes sent from source to destination since the last update. Packet bytes include the packet header and payload.
12
Packets received Version 2 only
The total number of TCP packets received from destination since the last update.
8143
Bytes received Version 2 only
The total number of TCP packet bytes received from destination since the last update. Packet bytes include packet header and payload.
Clean up resources
When no longer needed, delete myResourceGroup resource group and all of the resources it contains:
In the search box at the top of the portal, enter myResourceGroup. Select myResourceGroup from the search results.
Select Delete resource group.
In Delete a resource group, enter myResourceGroup, and then select Delete.
Select Delete to confirm the deletion of the resource group and all its resources.
Note
The myVM-nsg-myResourceGroup-flowlog flow log is in the NetworkWatcherRG resource group, but it'll be deleted after deleting the myVM-nsg network security group (by deleting the myResourceGroup resource group).
Learn to regulate network traffic to your Azure resources by configuring and applying network security groups in the Azure portal, improving your network's security posture.