在 ASP.NET 核心应用程序中获取 Azure Insights 遥测数据/搜索日志

Get Azure Insights Telemetry Data / Search Logs in ASP.NET Core app

在 C# 应用程序中是否有一种方法可以使用 Azure Nuget 包来搜索 Azure 遥测数据并返回某种 json 结果集?

我有一个 ASP.NET 核心 2.x 管理应用程序,我想查看最后一个 X Azure 成功的 Azure webjob 函数(见屏幕截图)。我似乎找不到任何关于如何在我的应用程序中 运行 此查询的信息。

我不知道封装此功能的 Nuget 程序包,但 App Insights 有一个 REST API 他们公开了他们有一个 API Quickstart guide

下面包含 C# 示例:

private const string URL =
        "https://api.applicationinsights.io/v1/apps/{0}/{1}/{2}?{3}";

public static string GetTelemetry(string appid, string apikey,
        string queryType, string queryPath, string parameterString)
{
    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Add("x-api-key", apikey);
    var req = string.Format(URL, appid, queryType, queryPath, parameterString);
    HttpResponseMessage response = client.GetAsync(req).Result;
    if (response.IsSuccessStatusCode)
    {
        return response.Content.ReadAsStringAsync().Result;
    }
    else
    {
        return response.ReasonPhrase;
    }
}

...

var json = GetTelemetry
    ("DEMO_APP",  "DEMO_KEY",
        "metrics", "requests/duration", "interval=PT1H");

底部的示例调用将 return 请求过去 24 小时内每小时汇总的持续时间(示例路由的默认时间范围)。

创建 API 密钥可以通过 API 访问菜单完成,在每个特定 Application Insights 实例的配置标题下: