Lendo Api’s do Azure com Power BI – Logs do Logic Apps
Oi Pessoal!
Nesse post vou mostrar uma solução para monitorar a atividade do logic app. A motivação é centralizar a leitura e monitoramento dos dados, visto que podemos ter vários processos preparando arquivos de forma automatizada e se algo der errado, pode passar despercebido. Além disso quero mostrar a integração das api’s do azure e isso pode nos trazer outros insights.
Recursos
É necessário que você já tenha algum conhecimento prévio em API’s e Powerbi.
Logic app
Na página do logic app no portal do azure, podemos ver o histórico das execuções do logic app.
Nós vamos trazer esse histórico para o nosso painel.
Api Rest do Azure
Na documentação oficial da microsoft você encontra uma visão geral sobre as api’s .
E nesse post o autor mostrar como obter as credenciais para acessar as api’s do azure.
Execute os passo desse tutorial para obter as credenciais:
Os procedimentos a seguir vão depender dessa etapa.
Get AAD Token
Além da api do histórico de execuções também vamos precisar da api para obter o token de acesso.
Workflow Runs – Get
Clique aqui para acessar a documentação sobre a api que vamos consumir para obter o histórico de execuções do logic app.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}?api-version=2016-06-01
Power Bi
Vamos criar uma consulta em branco:
Parâmetros
Agora crie um parâmetro para cada propriedade das credencias do azure, que obtivemos nas etapas anteriores.
Depois de registrar todos os parâmetros o resultado será esse:
Token
Crie uma consulta nula como o nome de tokenRequest, onde vamos executar o método para armazenar o token.
Copie e cole o código abaixo na tela do editor avançado.
let authUrl = "https://login.microsoftonline.com/" & tenantId & "/oauth2/token",
body = "grant_type=client_credentials&
client_id=" & clientId & "&
client_secret=" & clientSecret & "&
resource=" & resource &"",
getToken = Json.Document(Web.Contents(authUrl, [Headers=[#"Content-Type"="application/x-www-form-urlencoded"], Content=Text.ToBinary(body)]))
in getToken[access_token]
Histórico de execuções do logic app
Crie uma consulta nula como o nome de historyRequest, onde vamos executar o método para obter o histórico de execuções do logic app.
Copie e cole o código abaixo na tela do editor avançado e não se esqueçam de renomear o
{resourceGroupName} e {workflowName} para os do seu aplicativo.
`
let
historyRequest = let
historyRequest = let
token = tokenRequest,
url = "https://management.azure.com/subscriptions/" & subscriptionId &"/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs?api-version=2016-06-01",
history = Json.Document(
Web.Contents(url,[
Headers = [#"Authorization"= "Bearer " & token]
])
)
in
history
in historyRequest[value],
#"Convertido para Tabela" = Table.FromList(historyRequest, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Column1 Expandido" = Table.ExpandRecordColumn(#"Convertido para Tabela", "Column1", {"properties", "id", "name", "type"}, {"properties", "id", "name", "type"}),
#"properties Expandido" = Table.ExpandRecordColumn(#"Column1 Expandido", "properties", {"waitEndTime", "startTime", "endTime", "status", "correlation", "workflow", "trigger", "outputs"}, {"waitEndTime", "startTime", "endTime", "status", "correlation", "workflow", "trigger", "outputs"})
in
#"properties Expandido"
Como estamos executando consultas encadeadas armazenadas em parâmetros diferentes recebemos essa mensagem por questões de segurança do power bi:
Para contornar esse problema, vamos configurar o nível de privacidade para ignorar essa mensagem.
Ao atualizar a tela, você já consegue ver o resultado da api.
Eu montei o painel abaixo como exemplo, e não vou detalhar essa etapa pois o foco aqui era as api do logic app do azure.
Esse é um pequeno exemplo do que podemos fazer com as apis do azure.
Espero que isso te ajude!