Tenho uma webapi hospedada no Azure App Service, ela tem identidade gerenciada e há um Application Insights existente que deu permissão de leitor para essa API hospedada.
No AppInsights, uma nova função foi atribuída e uma permissão de leitor foi concedida à API. Agora quero que a API leia dados do AppInsights.
Quero adicionar um método C# como uma API REST que lê os últimos 10 rastreamentos?
// Use DefaultAzureCredential to authenticate with Managed Identity
var credential = new DefaultAzureCredential();
// Create a LogsQueryClient
var client = new LogsQueryClient(credential);
// Replace this with your Application Insights resource ID
string appInsightsResourceId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{applicationInsightsName}";
// KQL query to get the last 10 traces
string kqlQuery = "traces | order by timestamp desc | take 10";
// Execute the query
Response<LogsQueryResult> queryResponse = await client.QueryWorkspaceAsync(
appInsightsResourceId,
kqlQuery,
new QueryTimeRange(TimeSpan.FromHours(1))
);
Não funcionou, ele retorna com credenciais de token inválidas.
Também tentei usar DefaultAzureCredentials
o valor ManagedClientID, mas ainda não funcionou. Quero obter dados de logs/rastreamentos como um método http.
Meus códigos de teste
Eu obtenho o ID do espaço de trabalho clicando no espaço de trabalho exibido na instância do App Insights.
E meu resultado de teste como abaixo. Usar sua consulta obterá erro 400,
Failed to resolve table or column expression named 'traces'"
o que indica que não hátraces
tabela. Então eu seiQueryWorkspaceAsync
que pode não ser projetado para consultar tabelas do App Insights. Eu sigo o documento oficial e usei outra consulta ,QueryWorkspaceAsync
então consegui que funcionasse.Este método não está funcionando para consultar o Application Insights. Tentei os códigos abaixo e funcionou:
=========================
Habilitei a identidade gerenciada atribuída pelo sistema para minha instância do aplicativo Web do Azure.
Então vou para a instância do Application Insights da qual espero consultar o log e adiciono a permissão RBAC. As capturas de tela abaixo mostram as permissões que adicionei.
Para adicionar essas permissões, vá para a lâmina Access Control(IAM) -> clique no
Add
botão e escolha Add role assignment -> escolha a função na aba Roles -> escolha membros na aba Members (como a captura de tela abaixo) -> Review + assign. Observe que pode levar vários minutos para entrar em vigor, podemos esperar um pouco e talvez reiniciar o aplicativo da web do Azure para validar a aplicação da função.