你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
虚拟网络安全组流日志记录是 Azure 网络观察程序的一项功能,可用于记录有关流经 Azure 虚拟网络的 IP 流量的信息。 有关虚拟网络流日志记录的详细信息,请参阅虚拟网络流日志。
本教程帮助你使用 VNet 流日志记录流经虚拟网络的虚拟机网络流量。
              
               
              
              
            
本教程中,您将学习如何:
- 创建虚拟网络
- 创建虚拟机
- 注册 Microsoft.insights 提供者
- 使用网络观察程序流日志为虚拟网络启用流日志记录
- 下载记录的数据
- 查看记录的数据
先决条件
- 拥有有效订阅的 Azure 帐户。 如果没有帐户,请在开始之前创建 一个免费帐户 。
创建虚拟网络
在这部分,你要为虚拟机创建拥有一个子网的 myVNet 虚拟网络。
- 登录到 Azure 门户。 
- 在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。 
- 选择+ 新建。 在“创建虚拟网络”的“基本信息”选项卡中,输入或选择以下值: - 设置 - 价值 - 项目详细信息 - 订阅 - 选择 Azure 订阅。 - 资源组 - 选择“新建”。 
 在“名称”中输入“myResourceGroup”。
 选择“确定”。- 实例详细信息 - 名称 - 输入 myVNet。 - 区域 - 选择(US)美国东部。 
- 选择“查看 + 创建”。 
- 检查设置,然后选择创建。 
创建虚拟机
在本部分中,请创建“myVM”虚拟机。
- 在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。 
- 选择“+ 创建”,然后选择“虚拟机”。 
- 在“创建虚拟机”中,在“基本信息”选项卡中输入或选择以下值: - 设置 - 价值 - 项目详细信息 - 订阅 - 选择 Azure 订阅。 - 资源组 - 选择“myResourceGroup”。 - 实例详细信息 - 虚拟机名称 - 输入myVM。 - 区域 - 选择(US)美国东部。 - 可用性选项 - 选择“无需基础结构冗余”。 - 安全类型 - 选择“标准” 。 - 图像 - 选择你喜欢的映像。 本教程使用 Windows Server 2022 Datacenter: Azure Edition - x64 Gen2。 - 尺寸 - 选择 VM 大小或保留默认设置。 - 管理员帐户 - 用户名 - 输入用户名。 - 密码 - 输入密码。 - 确认密码 - 重新输入密码。 
- 选择网络选项卡,或选择下一步: 磁盘,然后选择下一步: 网络。 
- 在“网络”选项卡上,选择以下值: - 设置 - 价值 - 网络接口 - 虚拟网络 - 选择“myVNet”。 - 子网 - 选择“mySubnet”。 - 公网 IP - 选择 (new) myVM-ip。 - NIC 网络安全组 - 选择基本。 - 公共入站端口 - 选择“允许所选端口” 。 - 选择入站端口 - 选择“RDP (3389)”。 - 谨慎 - 建议仅在测试情况下将 RDP 端口设置为对 Internet 开放。 在生产环境下,建议仅限某个特定的 IP 地址或 IP 地址范围才能访问 RDP 端口。 此外,还可以阻止 Internet 访问 RDP 端口,并使用 Azure Bastion 从 Azure 门户安全地连接到虚拟机。 
- 选择“查看 + 创建”。 
- 检查设置,然后选择创建。 
- 部署完成后,选择“转到资源”以转到“myVM”的“概述”页面。 
- 依次选择“连接”、“RDP”。 
- 选择“下载 RDP 文件”,然后打开下载的文件。 
- 选择”连接“,然后输入在前面步骤中创建的用户名和密码。 如果出现提示,请接受证书。 
注册 Insights 提供程序
流日志记录要求使用 Microsoft.Insights 提供程序。 要检查其状态,请执行以下步骤:
- 在门户顶部的搜索框中,输入“订阅”。 从搜索结果中选择“订阅”。 
- 在“订阅”中,选择要为其启用提供程序的 Azure 订阅。 
- 在“设置”下,选择“资源提供程序”。 
- 在筛选器框中输入见解。 
- 确认显示的提供程序状态为“已注册”。 如果状态为“NotRegistered”,请选择“Microsoft.Insights”提供程序,然后选择“注册”。 
创建存储帐户
在本部分中,请创建一个用于存储流日志的存储帐户。
- 在门户顶部的搜索框中,输入“存储帐户”。 从搜索结果中选择“存储帐户”Storage accounts。 
- 选择+ 新建。 在“创建存储帐户”的“基本信息”选项卡中,输入或选择以下值: - 设置 - 价值 - 项目详细信息 - 订阅 - 选择 Azure 订阅。 - 资源组 - 选择“myResourceGroup”。 - 实例详细信息 - 存储帐户名称 - 输入唯一名称。 本教程使用 nwteststorageaccount。 - 区域 - 选择(US)美国东部。 存储帐户必须与虚拟机及其网络安全组位于同一区域。 - 主要服务 - 选择“Azure Blob 存储或 Azure Data Lake Storage Gen 2”。 - 性能 - 选择“标准” 。 流日志仅支持标准层存储帐户。 - 冗余 - 选择你喜欢的冗余。 本教程使用本地冗余存储 (LRS)。 
- 选择“查看”选项卡或选择底部的“查看”按钮。 
- 检查设置,然后选择创建。 
创建流日志
在本部分中,请创建一个虚拟网络流日志,该日志将保存到之前在本教程中创建的存储帐户中。
- 在门户顶部的搜索框中,输入网络监视工具。 在搜索结果中,选择“网络监视器”。 
- 在“日志”下,选择“流日志”。 
- 在“网络观察程序 | 流日志”,选择“+ 创建”或“创建流日志”蓝色按钮。 
- 在“创建流日志”中输入或选择以下值: - 设置 - 价值 - 项目详细信息 - 订阅 - 选择要记录的网络安全组的 Azure 订阅。 - 流日志类型 - 选择“虚拟网络”。 - 虚拟网络 - 选择“+ 选择目标资源”。 
 在“选择虚拟网络”中,选择“myVNet”。 然后,选择“确认选择”。- 流日志名称 - 保留默认值“myVNet-myresourcegroup-flowlog”。 - 实例详细信息 - 订阅 - 选择存储帐户的 Azure 订阅。 - 存储帐户 - 选择你在之前的步骤中创建的存储帐户。 - 保留期(天数) - 输入 10,以将流日志数据保留在存储帐户中 10 天。 要将流日志数据永久保存在存储帐户中(直到将其删除),请输入 0。 有关存储定价的详细信息,请参阅 Azure 存储定价。 - 注释 - Azure 门户在“NetworkWatcherRG”资源组中创建虚拟网络流日志。 
- 选择“查看 + 创建”。 
- 检查设置,然后选择创建。 
- 部署完成后,选择“转到资源”,确认流日志已创建并列在“流日志”页中。 
- 返回到与 myVM 虚拟机进行的 RDP 会话。 
- 打开 Microsoft Edge 并转到 - www.bing.com。
下载流日志
在本部分中,请转到之前选择的存储帐户,并下载在上一部分中创建的流日志。
- 在门户顶部的搜索框中,输入“存储帐户”。 从搜索结果中选择“存储帐户”Storage accounts。 
- 选择“nwteststorageaccount”或之前创建并选择用于存储日志的存储帐户。 
- 在“数据存储”下,选择“容器”。 
- 选择“insights-logs-flowlogflowevent”容器。 
- 在容器的文件夹层次结构中导航,直到找到要下载的 - PT1H.json文件。 虚拟网络流日志文件遵循以下路径:- https://{storageAccountName}.blob.core.windows.net/insights-logs-flowlogflowevent/flowLogResourceID=/{subscriptionID}_NETWORKWATCHERRG/NETWORKWATCHER_{Region}_{ResourceName}-{ResourceGroupName}-FLOWLOGS/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json
- 选择 PT1H.json 文件右侧的省略号“...”,然后选择“下载”。 
注释
可使用 Azure 存储资源管理器,从存储帐户访问和下载流日志。 有关详细信息,请参阅存储资源管理器入门。
查看流日志
使用所选文本编辑器打开下载的 PT1H.json 文件。 以下示例是从下载的 PT1H.json 文件中截取的一部分,展示了由规则 DefaultRule_AllowInternetOutBound 处理的流动。
{
    "time": "2025-08-06T20:39:33.3186341Z",
    "flowLogGUID": "00000000-0000-0000-0000-000000000000",
    "macAddress": "6045BDD6DD48",
    "category": "FlowLogFlowEvent",
    "resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e//RESOURCEGROUPS/NETWORKWATCHERRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKWATCHERS/NETWORKWATCHER_EASTUS/FLOWLOGS/MYVNET-MYRESOURCEGROUP-FLOWLOG",
	"flowLogVersion": 4,
    "operationName": "FlowLogFlowEvent",
    "flowRecords": {
        "flows": [
            {
				"aclID": "00000000-0000-0000-0000-000000000000",
				"flowGroups": [
					{
                        "rule": "DefaultRule_AllowInternetOutBound",
                        "flowTuples": [
                            "1754512773,10.0.0.4,13.107.21.200,49982,443,6,O,C,NX,7,1158,12,8143"                            
                        ]
                    }
                ]
            }
        ]
    }
}
flowTuples 的逗号分隔信息如下所示:
| 示例数据 | 数据代表的内容 | 说明 | 
|---|---|---|
| 1754512773 | 时间戳 | 表示流发生时间的时间戳,采用 UNIX EPOCH 格式。 在前面的示例中,转换后的日期为 2025 年 8 月 6 日晚上 08:39:33 (UTC/GMT)。 | 
| 10.0.0.4 | 源 IP 地址 | 充当流源的源 IP 地址。 10.0.0.4 是之前创建的 VM 的专用 IP 地址。 | 
| 13.107.21.200 | 目标 IP 地址 | 充当流目标的目标 IP 地址。13.107.21.200 是 www.bing.com的 IP 地址。 因为流量要发送到 Azure 之外,所以由安全规则 DefaultRule_AllowInternetOutBound 处理这个流程。 | 
| 49982 | 源端口 | 数据流起始的源端口。 | 
| 443 | 目标端口 | 流量的目标端口。 | 
| 6 | 协议 | 以 IANA 赋值表示的流的第 4 层协议:6:TCP。 | 
| O | 方向 | 流的方向。 O:出站。 | 
| C | 流状态 | 流的状态。 C:继续执行正在进行的流。 | 
| NX | 流加密 | 连接未加密。 | 
| 7 | 发送的数据包数 | 自上次更新以来,发送到目标的 TCP 数据包总数。 | 
| 1158 | 发送的字节数 | 自上次更新以来,从源发送到目标的 TCP 数据包字节总数。 数据包字节包括数据包标头和有效负载。 | 
| 12 | 已接收的数据包数 | 自上次更新以来,从目标接收到的 TCP 数据包总数。 | 
| 8143 | 接收的字节数 | 自上次更新以来,从目标接接收的 TCP 数据包字节总数。 数据包字节包括数据包标头和有效负载。 | 
清理资源
不再需要 myResourceGroup 资源组时,将其及其包含的所有资源删除:
- 在门户顶部的搜索框中输入 myResourceGroup。 从搜索结果中选择“myResourceGroup”。 
- 选择“删除资源组”。 
- 在“删除资源组”中,输入 myResourceGroup,然后选择“删除”。 
- 选择“删除”以确认删除资源组及其所有资源。 
注释
NetworkWatcher_eastus/myVNet-myresourcegroup-flowlog 资源位于 NetworkWatcherRG 资源组中,但将在删除 myVNet 虚拟网络(通过删除 myResourceGroup 资源组)后删除。
 
              
               
              
               
              
               
              
               
              
              