【应用服务 App Service】App Service中抓取网络日志

简介: 【应用服务 App Service】App Service中抓取网络日志

问题描述

众所周知,Azure App Service是一种PaaS服务,也就是说,IaaS层面的所有内容都由平台维护,所以使用App Service的我们根本无法触碰到远行程序的虚拟机(VM), 所以当遇见一些实例级的问题时,可谓一点办法也没有。 这时,一些Azure提供的排查工具就非常有用,如在App Service for Windows的情况下,我们可以通过Kudu工具进行文件管理,如下载日志,修改web.config配置,运行抓取DUMP的命令(或查看进行直接抓取DUMP,详见:(【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core)))。

但是,当我们发现通过App Service调用其他的请求时,需要调查网络丢包请求没有响应,或是需要查看请求的Header时,则需要在实例中抓取网络包(当问题正在发生时抓取)-- 在PowerShell中通过ArmClient向App Service发送抓包请求,然后通过Kudu链接到logfiles\networktrace目录下下载网络包

准备条件

  • PowerShell使用管理员方式打开
  • 登录App Service Kudu管理页面 (Azure App Service --> Advanced Tools --> Go)
  • 准备号App Service的资源ID (Azure App Service --> Properties --> Resource ID)

执行步骤

一:安装 ArmClient 工具

  1. 打开 PowerShell (管理员权限)
  2. 安装 chocolatey, 命令为: iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  3. 安装 armclient 工具,命令为: choco install armclient

二:使用 Azure 账号登陆 ARMClient

armclient.exe login Mooncake


注:当使用中国区的Azure时候,才需要加入Mooncake参数。

三:抓取网络日志

armclient.exe POST "/subscriptions/<sub>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<site>/networkTrace/start?duration=<seconds>&api-version=2015-06-01"


使用App Serivce中Resource ID中的Sub,RG,Site等替换后,直接再PowerShell中运行以上命令。

注:duration(最大设置为 300,目前只允许抓取最长 5 分钟的网络包)

:当第一次Post请求没有完成前,如果你再次发送请求则会返回Error Message, BadRequest.

当抓取成功后,可以再Kudu站点的\home\logfiles\networktrace 下载网络包

分析网络举例

从App Service Kudu中 \home\logfiles\networktrace 下载网络压缩包解压后。使用Wireshark分析,如下图中我们可以查看的信息有(如使用HTTPS加密传输,则需要解密才可查看)

  • 请求的URL
  • 请求的类型,如GET, POST等
  • 请求中所携带的Header键值
  • Response的状态等
  • 还有也可以分析TCP级的ACK,FIN等

 

参考资料

如何在 Web 应用实例上住抓取网络日志: https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-web-apps-howto-crawl-log

快速获取DUMP文件: https://www.cnblogs.com/lulight/p/13574331.html

相关文章
|
20天前
|
Linux Shell 网络安全
【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?
【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?
|
20天前
|
安全 Java 应用服务中间件
【Azure 应用服务】App Service 默认页面暴露Tomcat版本信息,存在安全风险
【Azure 应用服务】App Service 默认页面暴露Tomcat版本信息,存在安全风险
|
20天前
|
JSON API 开发工具
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
|
20天前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
20天前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
20天前
【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限
【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限
|
20天前
|
Docker 容器
【Azure 应用服务】App Service for Container 无法拉取Docker Hub中的镜像替代方案
【Azure 应用服务】App Service for Container 无法拉取Docker Hub中的镜像替代方案
|
20天前
|
API C++
【Azure 应用服务】Azure Function App在部署时候遇见 503 ServiceUnavailable
【Azure 应用服务】Azure Function App在部署时候遇见 503 ServiceUnavailable
|
20天前
|
网络协议
【Azure 应用服务】Azure Data Factory中调用Function App遇见403 - Forbidden
【Azure 应用服务】Azure Data Factory中调用Function App遇见403 - Forbidden
|
20天前
|
API
【Azure 应用服务】当在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢?
【Azure 应用服务】当在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢?