Crie fluxos de trabalho personalizados do zero quando os modelos não atenderem às suas necessidades. Use o construtor crie o seu próprio para arrastar e soltar ações do catálogo de ações em uma automação que corresponda 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 os conceitos principais primeiro: Leia Conceitos principais 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 referência rápida ao criar seus próprios fluxos de trabalho
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 | Propósito |
|---|---|
parâmetro para credenciais e configuração | |
Integração pré-construída (AWS, Slack, banco de dados, APIs) | |
Transmita as saídas entre as etapas. | |
Inicializar e atribuir valores a variáveis para uso em etapas subsequentes | |
Criar caminhos diferentes com base nas condições | |
Listas de processos ou pesquisas para verificar a conclusão | |
Faixa | Parâmetro obrigatório para funções de loop para definir a contagem de iterações. |
Suspende a execução do fluxo de trabalho por um período especificado ou até que uma condição seja satisfeita. | |
Parar | Encerrar a execução do fluxo de trabalho |
Dica
Aprenda na prática: Cada conceito é demonstrado no exemplo de passo a passo. Você verá entradas, switches, loops e gates de aprovação trabalhando juntos em um fluxo de trabalho real.
Exemplos de sintaxe
Use estes padrões ao criar fluxos de trabalho:
Padrão | Sintaxe | Quando usar |
|---|---|---|
Recuperar segredo |
| Acessar credenciais do gerenciador de segredos |
Referenciar entrada do fluxo de trabalho |
| Usar a configuração fornecida quando o fluxo de trabalho iniciar |
Usar a saída da etapa anterior |
| Passar dados entre etapas do fluxo de trabalho |
Arrastar ação do catálogo | Arraste | Adicionar integrações pré-criadas ao fluxo de trabalho |
Criar variável |
| Armazenar valores calculados ou intermediários |
Condição de verificação |
| Rota por |
Iterar sobre itens |
| Listas de processos ou pesquisas para verificar a conclusão |
Definir contagem de iterações |
| Parâmetro obrigatório para funções de loop |
Pausar execução |
| Pausa o fluxo de trabalho por uma duração especificada |
Encerrar fluxo de trabalho | Encerrar a execução do fluxo de trabalho | Encerra o fluxo de trabalho após falhas de validação ou cancelamentos. |
Para padrões detalhados de tratamento de erros, consulte Melhores práticas.
Importante
Para obter as melhores práticas e limitações de segurança e privacidade, incluindo a exclusão de dados, consulte melhores práticas de segurança.
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 gerenciador de segredos:
${{ :secrets:keyName }}), configuração (regiões, tipos de instância) e dados de tempo de execução (IDs de conta, IDs de alerta) - Arraste ações do catálogo, conecte-as com a sintaxe
${{ .steps.stepName.outputs.field }}para passar dados - Insira switches para ramificação condicional, loops para processamento de listas ou polling, gates de aprovação para decisões humanas
- Execute após cada seção para detectar erros antecipadamente, depois inicie ou agende seu fluxo de trabalho
Padrões de fluxo de trabalho principais
Quatro padrões essenciais lidam com a maioria dos cenários de automação. Cada padrão é demonstrado no passo a passo de exemplo 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 matchesExemplo: Tratar a resposta da equipe, Verificar e limpar
Loops para processar listas
Utilize loops quando: estiver processando vários itens ou repetindo ações.
Para obter informações detalhadas sobre a estrutura de loop, parâmetros e uso avançado (incluindo break/continue), consulte Estrutura de loop.
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..."Exemplo: Executar o redimensionamento
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 continuingExemplo: Solicitar aprovação da equipe
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 outputs awsRegion: "${{ .inputs.region }}" instanceId: "${{ .steps.getAlert.outputs.data.entity.instanceId }}"Exemplo: Todas as etapas do fluxo de trabalho
Atribuição de variável com assign
O tipo de etapa de atribuição permite que você inicialize e atribua valores a variáveis que podem ser usadas em etapas subsequentes do fluxo de trabalho. Esta etapa suporta vários tipos de dados, incluindo strings, inteiros, booleanos, mapas (objetos) e listas (arrays).
Estrutura básica:
- name: <step_name> type: assign inputs: <variable_name>: <value_or_expression>Exemplo:
- name: variableInitialization type: assign inputs: stringVar: "${{ .workflowInputs.initialValue }}" intVar: "${{ .workflowInputs.anotherValue }}" concatenationVar: "${{ .workflowInputs.initialValue }} - concatenated" booleanVar: true mapVar: key1: "value1" key2: "${{ .workflowInputs.initialValue }}" listVar: - "listItem1" - "${{ .workflowInputs.initialValue }}" - "${{ .workflowInputs.anotherValue }}" statusCode: ${{ .steps.runAction.outputs.statusCode }}Dica
Quer exemplos completos de padrões? Consulte Exemplos de fluxo de trabalho para obter padrões adicionais, incluindo tratamento de erros, novas tentativas e integrações complexas.
Exemplo passo a passo: Redimensionamento automático de instâncias EC2 com aprovação
Este exemplo cria um fluxo de trabalho que redimensiona instâncias EC2 quando há picos de CPU — após obter aprovação da equipe via Slack. Isso demonstra coleta de dados, lógica condicional, integrações externas e tratamento de erros.
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.
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.
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 gerenciador de segredos
Construa o fluxo de trabalho passo a passo.
Construa cada parte do fluxo de trabalho. Cada etapa inclui ações específicas e demonstra padrões de fluxo de trabalho.
Reunir o contexto do alerta
Consulte APIs e bancos de dados para reunir o contexto completo antes de tomar uma ação.
Três ações coletam informações de alertas e instâncias do EC2:
getAlertDetails: Chama a API NerdGraph para buscar metadados de alerta — hora de ativação, nome da condição e entidades afetadas.activatedDateTime: Converte o timestamp para um formato legível (por exemplo, 24-01-2025 14:30) para mensagens do Slack.impactedEC2Instance: Consulta o NRDB para encontrar o ID da instância 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 para pontos de decisão humana.
Enviar detalhes para o Slack e aguardar resposta:
IssueDetected: Publica detalhes do alerta, tipo de instância atual e redimensionamento proposto. Pede à equipe para reagir com:+1:(aprovar) ou:-1:(cancelar).GetUserReaction: Pausa por 5 minutos aguardando uma reação.checkQuery(Interruptor): Rotas baseadas em reação::+1:→ Iniciar redimensionamento:-1:→ Interromper fluxo de trabalho- Outro → solicitar reação válida, retornar ao início

Gerenciar a resposta da equipe
Crie caminhos diferentes com base em valores de dados ou na entrada do usuário.
Ramificar 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.
Previna operações duplicadas com tokens únicos. Verifique operações de longa duração com loops.
Redimensione a instância por meio do AWS Systems Manager (SSM):
createSsmDocument: Cria um documento de automação do SSM que interrompe a instância, modifica o tipo e a reinicia.generateIdempotencyToken: Cria um UUID exclusivo para evitar redimensionamentos duplicados.startResizing: Executa o documento SSM com o ID da instância e o novo tipo.progressLoop(Loop): Publica atualizações no Slack a cada 10 segundos (5 vezes).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.
Verificar e limpar
Limpe os recursos temporários independentemente do resultado.
Verifique os resultados e remova 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).
Referência completa de parâmetros
Este fluxo de trabalho requer credenciais, configuração e contexto de tempo de execução como entradas. 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
- 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
Nome do parâmetro | Tipo | Valor padrão | Descrição |
|---|---|---|---|
| Corda |
| ID da chave de acesso da AWS para autenticação com os serviços da AWS. |
| Corda |
| Chave de acesso secreta da AWS. Faz par com o ID da chave de acesso. |
| Corda |
| token de sessão para credenciais temporárias AWS (opcional, usado com funções do IAM). |
| Corda |
| token de bot para postar mensagens e ler reações no Slack. |
| Interno | Obrigatório | Seu ID de conta New Relic. Utilizado para consulta de detalhes de alertas e dados de entidade. |
| Corda | Obrigatório | O ID da ocorrência do alerta do New Relic que acionou este fluxo de trabalho. Fornecido automaticamente quando o fluxo de trabalho é executado a partir de um alerta. |
| Corda |
| Região AWS onde suas instâncias do EC2 são executadas (por exemplo, |
| Corda |
| destino EC2 tipo de instância para redimensionamento. Escolha com base nas suas necessidades de desempenho e orçamento. |
| Corda |
| Unidade de tempo para o timestamp do alerta. Normalmente |
| Corda |
| Fuso horário para exibir o horário de ativação do alerta nas mensagens do Slack (por exemplo, |
| Corda |
| Padrão de formato de data/hora para exibição do registro de data e hora. Utiliza padrões SimpleDateFormat do Java. |
| Corda | Obrigatório | ID do canal do Slack (não o nome) onde as notificações são postadas. Encontre isso nos detalhes do canal do Slack. |
Próximos passos
Após concluir este exemplo, explore estes recursos:
Configure as credenciais da AWS.
Configure funções do IAM para o EC2 e outras ações da AWS
Catálogo de ações
Explore todas as ações disponíveis para fluxos de trabalho
Exemplos de fluxo de trabalho
Veja exemplos de APIs HTTP, integrações com o Slack e mais
Práticas medidas
Aprenda tratamento de erros, lógica de repetição e padrões de segurança
Visão geral da entidade de fluxo de trabalho
Acione seu fluxo de trabalho manualmente, a partir de alertas ou em um agendamento
Gerenciar fluxos de trabalho
Editar, duplicar e monitorar a execução do fluxo de trabalho
Resolução de problemas
Problemas comuns e soluções para fluxos de trabalho personalizados