如何在 Application Insights 中扩展对传出 http 请求的依赖项跟踪

2024-01-12

我有一个 .NET core API,它执行与其他 API 的 HTTP 连接。我可以在 Application Insights 中的“依赖项事件类型”下可视化传出 HTTP 请求,但它只有基本信息。我正在研究如何添加有关传出 HTTP 调用的更多信息(例如 HTTP 标头)。

我调查过https://learn.microsoft.com/en-us/azure/azure-monitor/app/api-custom-events-metrics#trackdependency https://learn.microsoft.com/en-us/azure/azure-monitor/app/api-custom-events-metrics#trackdependency但我没有找到任何具体的方法来做到这一点。


正如前面所说,IvanYang 提出的解决方案是使用接收到的请求而不是依赖请求。 我为此构建了这个 ITelemetryInstance:

public void Initialize(ITelemetry telemetry)
{
    var dependecyTelemetry = telemetry as DependencyTelemetry;
    if (dependecyTelemetry == null) return;

    if (dependecyTelemetry.TryGetOperationDetail("HttpRequest", out object request)
        && request is HttpRequestMessage httpRequest)
    {
        foreach (var item in httpRequest.Headers)
        {
            if (!dependecyTelemetry.Properties.ContainsKey(item.Key))
                dependecyTelemetry.Properties.Add(item.Key, string.Join(Environment.NewLine, item.Value));
        }
    }
    if (dependecyTelemetry.TryGetOperationDetail("HttpResponse", out object response)
        && response is HttpResponseMessage httpResponse)
    {
        var responseBody = httpResponse.Content.ReadAsStringAsync().GetAwaiter().GetResult();
        if (!string.IsNullOrEmpty(responseBody))
            dependecyTelemetry.Properties.Add("ResponseBody", responseBody);
    }
}

这将记录发送到依赖项的所有标头以及收到的响应

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Application Insights 中扩展对传出 http 请求的依赖项跟踪 的相关文章

随机推荐