visualização
Ainda estamos trabalhando nesse recurso, mas adoraríamos que você experimentasse!
Atualmente, esse recurso é fornecido como parte de um programa de visualização de acordo com nossas políticas de pré-lançamento.
Quando os modelos não atendem às suas necessidades, a opção "Criar o seu próprio" permite que você construa um fluxo de trabalho personalizado. Utilize a interface de arrastar e soltar para encadear ações do catálogo de ações em automações que correspondam ao seu processo.
Como usar este guia
Este guia mostra como construir um fluxo de trabalho usando conceitos e um exemplo completo. Escolha seu caminho de aprendizado:
Aprenda primeiro os conceitos básicos → Leia Conceitos básicos e Padrões de fluxo de trabalho para entender os fundamentos e, em seguida, aplique-os.
Siga o exemplo → Acesse o passo a passo do exemplo para criar um fluxo de trabalho de redimensionamento automático do EC2 passo a passo.
Padrões de referência → Use a seção padrões de fluxo de trabalho como uma referência rápida ao construir seu próprio fluxo de trabalho
Dica
Novo no fluxo de trabalho? Comece pelos conceitos básicos e depois siga o exemplo. O fluxo de trabalho do EC2 demonstra todos os padrões principais em um cenário do mundo real.
Por que construir um fluxo de trabalho personalizado?
Crie seu próprio fluxo de trabalho para:
- Implemente uma lógica de negócios exclusiva que os modelos não suportam.
- Integre vários sistemas além dos modelos padrão.
- Lide com decisões complexas com ramificação condicional.
- Combine o processo de sua equipe para aprovações e notificações
Conceitos centrais
Entenda esses fundamentos antes de construir:
Conceito | O que ele faz | Exemplo |
|---|---|---|
Entradas e segredos | parâmetro para credenciais e configuração |
|
Catálogo de ações | Integração pré-construída (AWS, Slack, banco de dados, APIs) | Arraste |
Fluxo de dados | Transmita as saídas entre as etapas. |
|
Interruptores | Criar caminhos diferentes com base nas condições |
|
Laços | Listas de processos ou pesquisas para verificar a conclusão | Use |
Portões de aprovação | Pausa para decisões humanas | Reações lentas antes de operações destrutivas |
Tratamento de erros | Detectar falhas e executar a limpeza | Padrões try-catch com procedimentos de rollback |
Dica
Aprenda fazendo: Cada conceito é demonstrado no exemplo passo a passo abaixo. Você verá entradas, interruptores, loops e portões de aprovação funcionando juntos em um fluxo de trabalho real.
Para padrões detalhados de tratamento de erros, consulte práticas recomendadas.
Começo rápido
Crie seu primeiro fluxo de trabalho em cinco etapas:
- Acesse one.newrelic.com > All Capabilities > Workflow Automation e selecione Create Your Own.
- Defina parâmetros para credenciais (do secrets manager:
${{ :secrets:keyName }}), configuração (regiões, tipo de instância) e dados de tempo de execução (IDs de conta, IDs de alerta) - Arraste ações do catálogo e conecte-as com a sintaxe
${{ .steps.stepName.outputs.field }}para passar dados. - Insira interruptores para ramificação condicional, loops para processamento de listas ou polling, e portões de aprovação para decisões humanas.
- Execute o comando após cada seção para detectar erros precocemente e, em seguida, inicie ou agende seu fluxo de trabalho.
Dica
Comece com 3 etapas, teste minuciosamente e depois expanda. Um fluxo de trabalho funcional de 5 etapas é melhor do que um fluxo de trabalho falho de 20 etapas.
Padrões de fluxo de trabalho principais
Quatro padrões essenciais abrangem a maioria dos cenários de automação. Cada padrão é demonstrado no exemplo passo a passo abaixo.
Ramificação condicional com interruptores
Utilize os interruptores quando: Os resultados variam de acordo com os dados (verificações de limite, respostas da API, decisões do usuário)
Sintaxe da tecla:
- name: hasCompleted type: switch switch: - condition: "${{ .steps.waitForCompletion.outputs.automationExecutionStatus == 'Failed' }}" next: displayError - condition: "${{ .steps.waitForCompletion.outputs.automationExecutionStatus == 'Success' }}" next: displaySuccess next: displayUnexpected # Default path when no condition matchesVeja em ação: Gerencie a resposta da equipe e verifique e limpe as seções que mostram o roteamento de switches com base nas reações do Slack e no status do AWS SSM.
Loops para processar listas
Utilize loops quando: estiver processando vários itens ou repetindo ações.
Sintaxe da tecla:
# Send progress updates using range loop- name: progressLoop type: loop for: in: "${{ [range(1; 5)] }}" # Loop 5 times steps: - name: wait type: wait seconds: 10 - name: progressMessage type: action action: slack.chat.postMessage version: 1 inputs: channel: "${{ .workflowInputs.channel }}" text: "Resizing in progress..."Veja em ação: Execute a seção de redimensionamento que usa progressLoop para atualizações de status.
Portarias de aprovação e espera
Utilize portões de aprovação quando: for necessário julgamento humano antes de operações destrutivas ou quando for exigida a aprovação de conformidade.
Sintaxe da tecla:
- name: requestApproval type: action action: slack.chat.postMessage version: 1 inputs: channel: "#approvals" text: "Approve? React with :thumbsup: or :thumbsdown:"
- name: getReactions type: action action: slack.chat.getReactions version: 1 inputs: token: "${{ .workflowInputs.slackToken }}" channelID: "${{ .steps.requestApproval.outputs.channelID }}" threadTs: "${{ .steps.requestApproval.outputs.threadTs }}" timeout: 300 # Wait 5 minutes for reaction
- name: checkApproval type: switch switch: - condition: '${{ .steps.getReactions.outputs.reactions | any(.name == "+1") }}' next: handleApproval - condition: '${{ .steps.getReactions.outputs.reactions | any(.name == "-1") }}' next: handleRejectionPara atrasos simples:
- name: waitBeforeRetry type: wait seconds: 60 # Wait 60 seconds before continuingVeja na prática: a seção "Solicitar aprovação da equipe" implementa o fluxo de trabalho completo de aprovação do Slack.
Passando dados entre etapas
Utilize a passagem de dados quando: a saída de uma etapa se torna a entrada de outra (o fundamento de todo fluxo de trabalho).
Sintaxe da tecla:
# Reference previous step outputsawsRegion: "${{ .inputs.region }}"instanceId: "${{ .steps.getAlert.outputs.data.entity.instanceId }}"Veja na prática: Todas as seções demonstram a transferência de dados — cada etapa se baseia nos resultados anteriores.
Dica
Deseja exemplos completos dos padrões? Veja exemplos de fluxo de trabalho para padrões adicionais, incluindo tratamento de erros, novas tentativas e integração complexa.
Exemplo passo a passo: Redimensionamento automático de instâncias EC2 com aprovação
Este exemplo completo demonstra como construir um fluxo de trabalho que redimensiona automaticamente instâncias do EC2 quando há picos de uso da CPU — após obter a aprovação da equipe via Slack. Este vídeo demonstra a coleta de dados, a lógica condicional, a integração externa e o tratamento de erros em um cenário do mundo real.
Dica
Novo no fluxo de trabalho? Este exemplo utiliza AWS, Slack e lógica de aprovação. Se você está começando agora, tente enviar o relatório para o Slack primeiro.
Pré-requisitos
Antes de criar este fluxo de trabalho, certifique-se de ter:
- AWS: Credenciais com permissões do EC2 e do Systems Manager
- Slack: token de bot e canal para notificação
- New Relic: condição de alerta de monitoramento EC2 CPU
- Gerenciador de segredos: Configurado (consulte gerenciamento de segredos)
Visão geral do fluxo de trabalho
Fluxo de alto nível:
- Coletar dados: Obter detalhes de alertas e instâncias do New Relic
- Solicitar aprovação: Envie uma mensagem no Slack e aguarde a resposta da equipe.
- Executar redimensionamento: Use AWS Systems Manager para redimensionar instâncias do EC2.
- Verificar e limpar: Verificar resultados, notificar a equipe, remover recursos temporários.
Este exemplo demonstra padrões importantes que você usará em fluxos de trabalho personalizados: consultas a APIs, ramificação condicional, integração externa, loops de polling e tratamento de erros.
Entradas do fluxo de trabalho
Dica
Se você está lendo para entender os conceitos, pode pular esta parte. Esta tabela detalha os 12 parâmetros que esse fluxo de trabalho utiliza. Você pode usá-lo como referência durante a construção, mas não é essencial para entender o fluxo.
Este fluxo de trabalho requer credenciais, configuração e contexto de tempo de execução como entradas. Os valores sensíveis vêm do gerenciador de segredos usando a sintaxe ${{ :secrets:keyName }}.
Categorias de entrada:
- Autenticação: credenciais da AWS e do Slack obtidas no gerenciador de segredos.
- Contexto do alerta: ID da conta e ID do problema do New Relic
- Configuração: região, tipo de instância, fuso horário, canal Slack
Construa o fluxo de trabalho passo a passo.
Agora vamos construir cada parte do fluxo de trabalho. Cada etapa inclui as ações específicas a serem adicionadas e os padrões de fluxo de trabalho que elas demonstram.
Reunir o contexto do alerta
consulte APIs e banco de dados antes de agir. Isso garante que você tenha o contexto completo.
O fluxo de trabalho coleta informações de alertas e instâncias do EC2 por meio de três ações:
getAlertDetails: chama API NerdGraph ( API GraphQL da New Relic) para buscar metadados de alerta — horário de ativação, nome da condição e entidade afetada.activatedDateTime: Converte o timestamp para um formato legível, como "01-24-2025 14:30", para mensagens do Slack.impactedEC2Instance: consulta NRDB (New Relic banco de dados) para encontrar o ID das instâncias do EC2 e o tipo atual.
Por que isso é importante: Sem esses detalhes, você não consegue construir mensagens significativas no Slack ou definir as instâncias corretas do EC2.
Solicitar aprovação da equipe
Conecte-se a ferramentas de colaboração como Slack, PagerDuty ou ServiceNow para obter pontos de decisão humanos.
O fluxo de trabalho envia detalhes para o Slack e aguarda uma resposta:
IssueDetected: Envia detalhes do alerta, tipo de instância atual e redimensionamento proposto para o Slack. Solicita à equipe que reaja com:+1:(aprovar) ou:-1:(cancelar).GetUserReaction: Pausa por 5 minutos (300 segundos) aguardando uma reação.checkQuery(Interruptor): Rotas baseadas em reação::+1:→ Iniciar redimensionamento:-1:→ Interromper fluxo de trabalhoOutro → solicitar reação válida, retornar ao início

Dica
Problema comum: Use o ID do canal do Slack (
C01234ABCD), não o nome do canal. Encontre essa informação nos detalhes do canal do Slack. Consulte resolução de problemas para obter mais informações.
Gerenciar a resposta da equipe
Utilize parâmetros (ou interruptores) para criar caminhos diferentes com base em valores de dados ou entrada do usuário.
O fluxo de trabalho se ramifica com base na reação:
unexpectedReaction: Explica as reações válidas e retorna ao loop para esperar novamente.gotCancelReaction: Confirma o cancelamento, pula para a conclusão. Sem alterações na infraestrutura.gotYesReaction: Confirma a aprovação e prossegue com o redimensionamento.Dica
Padrão de portões de aprovação: Use interruptores como este quando precisar de avaliação humana antes de alterações arriscadas. O padrão funciona com reações do Slack, confirmações do PagerDuty, respostas por e-mail ou webhooks personalizados.
Execute o redimensionamento.
Utilize um token único para evitar operações duplicadas. Utilize loops para verificar o status de operações de longa duração.
O fluxo de trabalho redimensiona a instância por meio do AWS Systems Manager (SSM):
createSsmDocument: Cria um documento de Automação SSM que interrompe a instância, modifica o tipo e a reinicia.generateIdempotencyToken: Cria um UUID único. Impede redimensionamentos duplicados caso o fluxo de trabalho seja executado duas vezes.startResizing: Executa o documento SSM com ID da instância e novo tipo.progressLoop(Loop): Publica atualizações do Slack a cada 10 segundos (5 vezes no total).waitForCompletion: Consulta o status do SSM com um tempo limite de 2 minutos.Importante
Por que o SSM? O Systems Manager oferece tratamento de erros, verificação de estado e registros de auditoria do CloudTrail. Melhor que chamada de API direta do EC2.
Dica
Problema comum: Certifique-se de que as credenciais da AWS tenham permissões
ec2:StopInstances,ec2:ModifyInstanceAttribute,ec2:StartInstancesessm:*. A falta de permissões resulta em falhas silenciosas.
Verificar e limpar
Planeje para falhas e utilize recursos temporários, independentemente do resultado.
O fluxo de trabalho verifica os resultados e remove os recursos temporários:
hasCompleted(Alternar): Alterna com base no status do SSM (sucesso/falha/tempo limite excedido).displaySuccess: Registra o sucesso no New Relic.sendSuccessMessage: Confirma a conclusão no Slack.displayError: registra detalhes de erros para resolução de problemas.displayUnexpected: Registra estados incomuns (cancelamento manual, etc.).cleanupSsmDocument: Exclui o documento SSM temporário.sendSSMCleanMessage: Confirma a limpeza no Slack.workflowCompleted: Mensagem final de conclusão (executa com sucesso ou cancela).Dica
- Sempre limpe. Estrutura do fluxo de trabalho para que a limpeza seja executada mesmo quando as etapas anteriores falharem. Isso evita vazamentos de recursos e cobranças inesperadas da AWS.
- Problema comum: Se o SSM expirar, as instâncias do EC2 podem continuar em transição entre estados. Verifique AWS Console para confirmar o status atual da instância antes de executá-la novamente.
Próximos passos
Executar e gerenciar
- Iniciar e agendar fluxo de trabalho: Acionar manualmente ou agendar automaticamente.
- Gerenciando o fluxo de trabalho: edite, versione, clone ou desative o fluxo de trabalho.
Melhorar
- práticas recomendadas: Tratamento de erros, gerenciamento de segredos, desempenho, testes.
- Catálogo de ações: AWS, Azure, GCP, HTTP, transformações de dados.
- Exemplos de fluxo de trabalho: Mais cenários de automação do mundo real.
Escala
- fluxo de trabalho APIs de automação: implantar via API para infraestrutura como código.
- Limitações do fluxo de trabalho: tempos limite, limites de ações, restrições de carga útil.