如何使用C#从Azure应用程序洞察中获取记录?

332nm8kg  于 2023-06-24  发布在  C#
关注(0)|答案(1)|浏览(150)

我需要使用C#从Azure应用程序洞察中获取记录。
我尝试过使用下面的方法,但它需要在Azure中创建应用程序服务,我想避免它。
https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-azure-ad-api
我也遵循了这个答案,OP建议使用https://www.nuget.org/packages/Azure.Monitor.Query,但它看起来很旧,所以我想知道这是否仍然有效。
Alternative to https://www.nuget.org/packages/Microsoft.Azure.ApplicationInsights/
所以我很困惑,你能帮我正确的方法吗?我的要求是不要在Azure中创建任何额外的资源,并希望使用C#从应用程序中获取见解。

uqzxnwby

uqzxnwby1#

如果您已经配置了Application Insights,只要您configure a workspace就可以查询数据。
例如,一旦配置了工作空间,就可以使用下面的通用方法来查询WorkspaceId

private async Task<IReadOnlyList<T>> QueryAsync<T>(string query, TimeSpan timeSpan)
{
    var response = await _client.QueryWorkspaceAsync<T>(_options.WorkspaceId, query, new QueryTimeRange(timeSpan));

    return response.Value;
}

其中_client为:
Azure.Montitor.Query.LogsQueryClient _client;
示例查询可以是这样的:

public async Task<int> GetFailedViewCount()
{
    var query = $"AppEvents" +
        $"| extend Output = tostring(Properties[\"Output\"]) " +
        $"| where Output contains (\"Failed to execute internal view\")" +
        $"| summarize Count=count()";

    var response = await QueryAsync<int>(query, TimeSpan.FromHours(48));

    return response.FirstOrDefault();
}

其中我们有一个CustomEvent(在application insights中),它在Workspace中变成了一个AppEvent,它是从docker容器创建的。

相关问题