21 de maio de 20264 min de leitura

Otimizando a infraestrutura: Como limpar Logic Apps inativos ou com falhas

Yanbo Deng

Azure

Banner - Otimizando a infraestrutura: Como limpar Logic Apps inativos ou com falhas

TL;DR: Como manter a higiene dos seus recursos Azure

Configurações legadas de Azure Logic Apps Consumption frequentemente resultam em workflows ociosos ou falhando continuamente, gerando alertas desnecessários e poluição no portal. O artigo apresenta o script 'LA-CleanUp', que automatiza a identificação e limpeza desses recursos de forma segura, utilizando uma abordagem baseada em relatórios CSV e confirmação individual, ideal para manter a higiene operacional em ambientes complexos de nuvem. A conclusão é que auditorias periódicas são essenciais para manter a eficiência e a operabilidade da plataforma.

Se você gerencia assinaturas Azure que acumularam workflows de Logic Apps Consumption ao longo dos anos, provavelmente já se deparou com o desafio: dezenas de instâncias com nomes como TestLA, webhook-test-2 ou poc-for-jira-FINAL poluindo o portal. Seja porque estão inativas ou porque continuam falhando ciclicamente contra conexões expiradas, esses recursos geram ruído operacional: triggers disparando em vão, alertas que disparam pagers desnecessários e objetos Microsoft.Web/connections retendo permissões inutilmente. Embora pareçam baratos individualmente, eles degradam a visibilidade e a eficiência do seu ambiente.

Fonte e documentação completa: GitHub - dengyanbo/LA-CleanUp

O que o script entrega na prática?

O LA-CleanUp é um script PowerShell de arquivo único (Invoke-LogicAppCleanup.ps1) projetado para o cenário de Governance e FinOps. Ele oferece:

  • Classificação clara: Tabelas codificadas por cor que separam Workflows em Idle (sem execuções no período definido) e AlwaysFailing (execuções realizadas, mas sem sucesso).
  • Relatórios para governança: Exportação opcional de CSV com timestamp, ideal para compartilhar em canais do Teams ou abrir um PR para que os responsáveis pelo recurso validem a exclusão.
  • Segurança operacional: Implementa um loop de deleção interativo (y/N/q), garantindo o controle total sobre o que é removido.
  • Performance: Utiliza filtros OData no servidor, o que permite escanear assinaturas com milhares de execuções com alta performance, sem exceder limites ou causar lentidão.

Um ponto de atenção crítico: isso não afeta Logic Apps Standard (onde o histórico é armazenado em Storage Tables) nem remove conexões de API, que geralmente são compartilhadas. O foco é estrito na limpeza do recurso de computação Consumption.

Como iniciar a limpeza?

Pré-requisitos:

  • PowerShell 5.1 ou superior.
  • Azure CLI instalado no PATH.
  • Autenticação via az login com permissões de Contributor ou Logic App Contributor.
git clone https://github.com/dengyanbo/LA-CleanUp.git
cd LA-CleanUp
.\Invoke-LogicAppCleanup.ps1

Como interpretar o fluxo de execução

O script foi desenhado para ser determinístico. Ao rodar o comando, ele informa a assinatura ativa, o usuário logado e os parâmetros de corte (por padrão, 90 dias).

[INFO]  Active subscription: Contoso-Integration  (1111-2222-...)
[INFO]  Idle cutoff        : runs older than 2026-02-20T03:08:00Z (>90 days)
[ OK ]  Scan complete. Idle: 9, AlwaysFailing: 1, Errors: 0
... 
Export the 10 candidate(s) to CSV? (y/N): y

Comandos úteis para o seu dia a dia

  1. Foco em um Resource Group específico: .\Invoke-LogicAppCleanup.ps1 -IdleDays 60 -ResourceGroup rg-integration
  2. Validar apenas o que está falhando: .\Invoke-LogicAppCleanup.ps1 -SkipIdle
  3. Realizar Dry-run (sem deletar): Responda 'N' ou 'q' nos prompts interativos após a geração do CSV.

Considerações técnicas sobre o design do script

O autor optou por não usar az rest para evitar problemas comuns de parse de caracteres especiais (&) em URLs OData no cmd.exe do Windows. Em vez disso, o script utiliza Invoke-RestMethod com tokens de acesso do Azure (az account get-access-token), o que garante uma execução muito mais robusta e rápida ao evitar sub-shells desnecessários para cada chamada API.

Além disso, o uso de $top=1 nas consultas OData garante que a verificação de status seja uma operação O(1) no servidor, mantendo a responsividade do script mesmo em assinaturas com um histórico extenso de runs.

Boas práticas no rollout

Se você não é o dono total da assinatura, não tente deletar tudo de uma vez. O workflow recomendado é:

  1. Execute com -SkipAlwaysFailing primeiro (os Idle são sempre o alvo mais seguro).
  2. Exporte o CSV e compartilhe com os times responsáveis.
  3. Após a limpeza dos inativos, execute um segundo passe para os AlwaysFailing, que geralmente exigem uma investigação de causa raiz antes da remoção definitiva.

Artigo originalmente publicado em Azure Updates - Latest from Azure Charts.

Gostou? Compartilhe:
Precisa de ajuda?Fale com nossos especialistas 👋
Avatar Walcew - Headset