问题描述
通过APIM门户或者是Developer门户,我们可以通过Test功能测试某一个接口,通过Trace可以获取非常详细的Request,Response的信息,包含Header,X-Forward-To,及Respnse的信息。但是,当我们正式使用时,确无法得到这些信息。APIM门户及日志中都没有保存请求中携带的客户数据,这样在调查有些错误与请求携带的参数相关时候,则非常难以排查。
问题原因
对于APIM的请求中的Header,Body等信息,都是用户数据,平台针对此类敏感数据,为了规避合规风险,不会再日志中保留此类信息。
而通过APIM的Test功能,可以发现如下内容:
而如果想要再正式使用时,也把每一个请求的Header, Body保存下来,则需要借助另一个组件 --- 开启 Application Insights, 或者是Azure Monitor。
解决办法
再开启Application Insights后,就可以为需要Request的Header, Body等信息的API也配置Application Insights日志记录,详细可以参考文档 ---- 为 API 启用 Application Insights 日志记录
配置完成后,发送请求。则可以通过Application Insights查看请求中Header, Body信息。
补充:如果要通过Application Insights来记录请求的所有信息,就保持 Headers to Log中的内容为空。这样就会记录全部的body, header信息:https://docs.microsoft.com/en-us/answers/questions/418811/capture-header-parts-of-request-body-in-apim-log-a.html
参考文档
如何将 Azure API 管理与 Azure Application Insights 集成: https://docs.azure.cn/zh-cn/api-management/api-management-howto-app-insights