템플릿이 필요에 맞지 않을 경우 Create Your Own을 사용 하여 사용자 정의 폴리스우를 만들 수 있습니다. 드래그 앤 드롭 인터페이스를 사용하여 작업 카탈로그 에서 작업을 체인으로 연결하여 프로세스에 맞는 자동화를 구현하세요.
이 가이드를 사용하는 방법
이 가이드에서는 개념과 완전한 예를 사용하여 플레우스를 만드는 방법을 보여줍니다. 학습 경로를 선택하세요:
예시를 따르세요 → EC2 자동 크기 조정 스텔라우를 단계별로 빌드하는 예제 연습 으로 이동하세요
참고 패턴 → 에라스우 패턴 섹션을 에라스우를 직접 만들 때 빠른 참조로 활용하세요.
팁
워크플로우를 처음 사용하시나요? 핵심 개념부터 시작한 다음, 예를 따르세요. EC2 스카이레이크는 실제 시나리오의 모든 주요 패턴을 보여줍니다.
왜 커스텀 플로우를 구축하나요?
자신만의 워크플로우를 구축해 보세요:
- 템플릿이 지원하지 않는 고유한 비즈니스 로직을 구현합니다.
- 표준 템플릿을 넘어 여러 시스템을 통합합니다 .
- 조건 분기를 사용하여 복잡한 결정을 처리하세요
- 승인 및 공지를 위한 팀의 프로세스를 일치시키세요.
핵심 개념
빌드하기 전에 다음 기본 사항을 이해하세요.
개념 | 그것이 하는 일 | 예시 |
|---|---|---|
입력 및 비밀 | 사용자 인증 정보 및 설정에 대한 반응 |
|
액션(Play) | 사전 구축된 통합(AWS, Slack, 데이터베이스, API) |
|
데이터 흐름 | 단계 간 출력 전달 |
|
스위치 | 조건에 따라 다른 경로를 생성합니다. |
|
루프 | 완료를 위한 프로세스 목록 또는 투표 |
|
범위 | 반복 횟수를 정의하기 위한 루프 함수의 필수 필드 |
|
기다리다 | 지정된 기간 동안 또는 조건이 충족될 때까지 플레우 실행을 일시 중지합니다. |
|
멈추다 | 플로우 흐름 실행 종료 | 유효성 검사 실패 또는 취소 후 플레우 종료 |
팁
실천을 통해 배우기: 각 개념은 예제 연습 에서 설명됩니다. 실제 스텔라우에서 입력, 스위치, 루프 및 승인 게이트가 함께 작동하는 것을 볼 수 있습니다.
자세한 오류 처리 패턴은 모범 사례를 참조하세요.
빠른 시작
5단계로 첫 번째 폴리스우를 만들어 보세요.
- one.newrelic.com > All Capabilities > Workflow Automation 로 이동하여 Create Your Own [나만의 자동화 만들기를]선택하세요.
- 매개변수, 자격 증명(비밀 관리자에서:
${{ :secrets:keyName }}), 설정(지역, 제외) 및 런타임 데이터(계정 ID, 공지 ID)에 대해 정의합니다. - 카탈로그 에서 작업을 끌어서
${{ .steps.stepName.outputs.field }}구문으로 연결하여 데이터를 전달합니다. - 조건 분기를 위한 스위치, 목록 또는 폴링을 처리하기 위한 루프, 인간의 결정을 위한 승인 게이트를 삽입합니다.
- 각 섹션을 실행한 후 오류를 일찍 포착한 다음 폴리스우를 시작하거나 예약하세요.
팁
3단계로 시작하여 철저히 테스트한 다음 확장하세요. 제대로 작동하는 5단계 워크플로우가 깨진 20단계 워크플로우를 이깁니다.
주요 흐름 패턴
네 가지 필수 패턴으로 대부분의 자동화 시나리오를 처리할 수 있습니다. 각 패턴은 아래의 예제 연습 에서 설명됩니다.
스위치를 사용한 조건 분기
다음과 같은 경우에 스위치를 사용하십시오: 데이터에 따라 결과가 다양함(임계값, 릴레이 확인, API 응답, 사용자 결정)
주요 구문:
- 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 matches실제로 확인해 보세요. 팀 응답 처리 및 검증 및 정리 섹션에서는 Slack 반응과 AWS SSM 상태를 기반으로 스위치 라우팅을 보여줍니다.
목록 처리를 위한 루프
여러 항목을 처리하거나 작업을 반복할 때 루프를 사용합니다.
주요 구문:
# 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..."실제로 확인해 보세요. 크기 조정 섹션을 실행하면 상태 업데이트에 progressLoop 사용됩니다.
승인 게이트 및 대기
파괴적인 작업이나 규정 준수 승인이 필요하기 전에 인간의 판단이 필요한 경우 승인 게이트를 사용하세요.
주요 구문:
- 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: handleRejection간단한 지연의 경우:
- name: waitBeforeRetry type: wait seconds: 60 # Wait 60 seconds before continuing실제로 확인해 보세요: 요청 팀 승인 섹션은 Slack 승인을 전체적으로 구현합니다.
단계 간 데이터 전달
데이터 전달을 사용하는 경우: 한 단계의 출력이 다른 단계의 입력이 되는 경우(모든 스텔라우의 기초)
주요 구문:
# Reference previous step outputsawsRegion: "${{ .inputs.region }}"instanceId: "${{ .steps.getAlert.outputs.data.entity.instanceId }}"실제 작동 모습을 확인하세요. 모든 섹션에서 데이터 전달을 보여줍니다. 각 단계는 이전 결과를 기반으로 구성됩니다.
팁
완전한 패턴 예를 원하시나요? 오류 처리, 재시도, 복잡한 통합을 포함한 추가 패턴에 대한 워크플로우 예를 참조하세요.
예제 연습: 승인을 통해 EC2 크기 자동 조정
이 완전한 예제는 Slack을 통해 팀 승인을 받은 후 CPU가 급증할 때 EC2 인스턴스의 크기를 자동으로 조정하는 스텔라우를 빌드하는 방법을 보여줍니다. 실제 시나리오에서 데이터 수집, 조건 논리, 외부 통합 및 오류 처리를 보여줍니다.
팁
워크플로우를 처음 사용하시나요? 이 예제에서는 AWS, Slack 및 승인 논리를 사용합니다. 이제 막 시작했다면 먼저 Slack에 보고서 보내기 를 시도해 보세요.
전제 조건
이 폴리스우를 구축하기 전에 다음 사항이 있는지 확인하세요.
- AWS: EC2 및 Systems Manager 권한이 있는 자격 증명
- Slack: 공지를 위한 봇 및 채널
- 뉴렐릭: 공지사항 검토 EC2 CPU
- 비밀 관리자: 구성됨( 비밀 관리 참조)
흐름 흐름 개요
상위 수준 흐름:
- 데이터 수집: 뉴렐릭으로부터 공지 및 세부정보 가져오기
- 승인 요청: Slack 메시지 보내기, 팀 응답 대기
- 크기 조정 실행: AWS Systems Manager를 사용하여 EC2 인스턴스 크기 조정
- 확인 및 정리: 결과 확인, 팀에 알림, 임시 리소스 제거
이 예제에서는 사용자 지정 폴리스우에서 사용할 주요 패턴, 즉 API 쿼리, 조건 분기, 외부 통합, 폴링 루프 및 오류 처리를 보여줍니다.
흐름 흐름 입력
팁
개념에 대해 읽고 있다면 건너뛰세요. 이 표에서는 이 활동이 사용하는 12가지 활동에 대해 자세히 설명합니다. 빌드할 때 참조할 수는 있지만, 흐름을 이해하는 데 필수적인 것은 아닙니다.
이 워크플로우에는 자격 증명, 설정 및 런타임 컨텍스트가 입력으로 필요합니다. 민감한 값은 ${{ :secrets:keyName }} 구문을 사용하여 비밀 관리자에서 제공됩니다.
입력 카테고리:
- 인증: Secrets Manager의 AWS 및 Slack 자격 증명
- 공지 내용: 뉴렐릭의 계정 ID 및 문제 ID
- 설정: 지역,상태, 시간대, Slack 채널
단계별 워크플로우 구축
이제 스텔라우의 각 부분을 만들어 보겠습니다. 각 단계에는 추가할 구체적인 작업과 해당 작업이 보여주는 파라메트릭 패턴이 포함되어 있습니다.
공지 컨텍스트 수집
조치를 취하기 전에 API와 데이터베이스를 쿼리하세요. 이렇게 하면 완전한 맥락을 파악할 수 있습니다.
워크플로우는 세 가지 작업을 통해 공지 및 EC2 관련 정보를 수집합니다.
getAlertDetails: NerdGraph API (뉴렐릭의 GraphQL API)를 호출하여 공지사항 데이터(활성화 시간, 조건 이름, 영향을 받는 부분)를 가져옵니다.activatedDateTime: Slack 메시지의 타임스탬프를 "01-24-2025 14:30"과 같은 읽을 수 있는 형식으로 변환합니다.impactedEC2Instance: EC2연결 ID와 현재 유형을 찾기 위한 쿼리 NRDB(뉴렐릭 데이터베이스)입니다.
이것이 중요한 이유: 이러한 세부 정보가 없으면 의미 있는 Slack 메시지를 구성하거나 올바른 EC2 서버를 타겟팅할 수 없습니다.
팀 승인 요청
Slack, PagerDuty 또는 ServiceNow와 같은 협업 도구에 연결하여 인간의 의사결정 지점을 파악합니다.
팰리스우는 Slack에 세부 정보를 보내고 응답을 기다립니다.
IssueDetected: 공지 세부정보, 현재 변경사항 및 제안된 크기 조정을 Slack에 게시합니다. 팀에:+1:(승인) 또는:-1:(취소)로 반응하도록 요청합니다.GetUserReaction: 반응을 기다리며 5분(300초) 동안 멈춥니다.checkQuery(스위치): 반응 기반 경로:팁
일반적인 문제: 채널 이름이 아닌 Slack 채널 ID (
C01234ABCD)를 사용하세요. Slack 채널 세부정보에서 찾아보세요. 자세한 내용 은 문제 해결을 참조하세요.
팀 대응 처리
스위치를 사용하여 데이터 값이나 사용자 입력에 따라 다양한 경로를 만듭니다.
플루톤우 분기는 다음 반응에 따라 결정됩니다.
unexpectedReaction: 유효한 반응을 설명하고 다시 기다리기 위해 루프백합니다.gotCancelReaction: 취소를 확인하고 완료로 건너뜁니다. 인프라 변경 없음.gotYesReaction: 승인을 확인하고 크기 조정을 진행합니다.팁
승인 게이트 패턴: 위험한 변경 사항을 적용하기 전에 인간의 판단이 필요할 때 이와 같은 스위치를 사용하세요. 이 패턴은 Slack 반응, PagerDuty 확인, 이메일 응답 또는 사용자 정의 웹후크와 함께 작동합니다.
크기 조정을 실행하세요
중복 작업을 방지하려면 고유한 토큰을 사용하세요. 루프를 사용하여 장기 실행 작업의 상태를 확인합니다.
워크플로우는 AWS Systems Manager(SSM)를 통해 크기를 조정합니다.
createSsmDocument: 인스턴스를 중지하고, 유형을 수정하고, 다시 시작하는 SSM 자동화 문서를 만듭니다.generateIdempotencyToken: 고유한 UUID를 생성합니다. 스텔라우가 두 번 실행되는 경우 중복된 크기 조정을 방지합니다.startResizing: 인스턴스 ID와 새 유형으로 SSM 문서를 실행합니다.progressLoop(루프): 10초마다 Slack 업데이트를 게시합니다(총 5회).waitForCompletion: 2분 제한 시간으로 SSM 상태를 폴링합니다.중요
SSM을 선택해야 하는 이유는 무엇일까요? Systems Manager는 오류 처리, 상태 검증, CloudTrail 감사 로그를 제공합니다. 직접 EC2 API 호출보다 낫습니다.
팁
일반적인 문제: AWS 자격 증명에
ec2:StopInstances,ec2:ModifyInstanceAttribute,ec2:StartInstances및ssm:*권한이 있는지 확인하세요. 권한이 없으면 아무런 경고 없이 실패합니다.
확인 및 정리
결과에 관계없이 실패에 대비하고 임시 리소스를 정리하세요.
스텔라우에서는 결과를 확인하고 임시 리소스를 제거합니다.
hasCompleted(스위치): SSM 상태(성공/실패/시간 초과)의 분기.displaySuccess: 뉴렐릭에 대한 로그인 성공입니다.sendSuccessMessage: Slack에서 완료를 확인합니다.displayError: 문제 해결, 해결을 위한 오류 세부정보를 기록합니다.displayUnexpected: 비정상적인 상태(수동 취소 등)를 기록합니다.cleanupSsmDocument: 임시 SSM 문서를 삭제합니다.sendSSMCleanMessage: Slack에서 정리를 확인합니다.workflowCompleted: 최종 완료 메시지(성공 또는 취소 시 실행).팁
- 항상 청소하세요. 구조 에라스우 따라서 이전 단계가 실패하더라도 정리가 실행됩니다. 이를 통해 리소스 누출과 예상치 못한 AWS 요금을 방지할 수 있습니다.
- 일반적인 문제: SSM이 시간 초과되면 EC2 인스턴스가 여전히 상태 간에 전환 중일 수 있습니다. 다시 실행하기 전에 AWS Console 확인하여 실제 인스턴스 상태를 확인하세요.
다음 단계
실행하고 관리하세요
- 시작 및 일정 스텔라우: 수동으로 트리거하거나 자동으로 일정을 예약합니다.
- 워크플로우 관리: 워크플로우를 편집, 버전화, 복제, 비활성화합니다.
개선하다
규모
- 워크플로우 자동화 API: 구현하다, 코드형 API 용 배포를 통해 구현됩니다.
- 워크플로우 제한: 타임아웃, 액션 제한, 페이로드 제약.
