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!