问题描述
我已经在Azure kubernetes上部署了我的应用程序,并且正在使用Azure Application网关公开服务。
我想跟踪传入的请求以了解完整的执行。例如:应用程序网关处理请求需要多长时间。
有什么方法可以在azure应用程序网关中跟踪单个请求?
解决方法
首先,您必须启用日志,请参见the docs
您可以在Azure中使用不同类型的日志来管理应用程序网关并进行故障排除。您可以通过门户网站访问其中一些日志。可以从Azure Blob存储中提取所有日志,并在不同的工具(例如Azure Monitor日志,Excel和Power BI)中查看。您可以从以下列表中了解有关不同类型日志的更多信息:
- 性能日志:您可以使用此日志来查看Application Gateway实例的性能。该日志捕获每个实例的性能信息,包括已服务的总请求数,以字节为单位的吞吐量,已服务的总请求数,失败的请求数以及正常和不正常的后端实例数。每60秒收集一次性能日志。性能日志仅适用于v1 SKU。对于v2 SKU,请使用指标作为性能数据。
- 访问日志:您可以使用此日志查看Application Gateway访问模式并分析重要信息。这包括呼叫者的IP,请求的URL,响应延迟,返回码以及字节进出。每60秒收集一次访问日志。该日志包含每个Application Gateway实例一个记录。应用程序网关实例由instanceId属性标识。
如果启用了将日志写入Azure Log Analytics Workspace的功能,则可以执行以下查询:
AzureDiagnostics
| where Category == "ApplicationGatewayAccessLog"
| project timeStamp_t,requestUri_s,httpMethod_s,httpStatus_d,receivedBytes_d,sentBytes_d,timeTaken_d
它将显示类似以下内容的