이 페이지에서는 펠릭스우 Automation을 사용하여 구축할 수 있는 일반적인 자동화 시나리오를 보여줍니다. 이러한 예를 자신만의 워크플로우의 시작점으로 사용하거나 준비된 구현하다, 배포하다 솔루션에 대한 템플릿을 탐색하세요.
인시던트 대응 및 교정
API 게이트웨이 롤백
API 게이트웨이 구성을 이전 상태로 되돌려 오류와 잘못된 구성을 수정할 수 있습니다.
이 흐름이 하는 일은:
- 뉴렐릭 변경 추적을 이용하여 이슈와 관련된 최근 형태, 배포를 탐지합니다.
- 승인 버튼(:+1: 또는 :-1:)을 사용하여 Slack에 공지를 보냅니다.
- 승인 후 롤백을 자동화하기 위해 AWS Systems Manager 문서를 생성합니다.
- API Gateway 통합을 이전 Lambda 버전으로 롤백합니다.
- 롤백을 적용하기 위한 새로운 구현, 배포를 생성합니다.
- Slack에 성공 또는 실패 알림을 보냅니다.
- 완료 후 SSM 문서를 정리합니다.
요구 사항:
- API Gateway 및 Systems Manager에 대한 권한이 있는 AWS 자격 증명
- 공지 및 승인을 받기 위한 구성된 Slack 앱
- 변경 추적을 통한 뉴렐릭 모니터링
주요 작업: newrelic.nerdgraph.execute, slack.chat.postMessage, slack.chat.getReactions, aws.systemsManager.writeDocument, aws.systemsManager.startAutomation, aws.systemsManager.waitForAutomationStatus, aws.systemsManager.deleteDocument
EC2 인스턴스 관리
최적의 성능과 비용을 위해 EC2 인스턴스의 프로비저닝, 확장 및 종료를 자동화합니다.
이 흐름이 하는 일은:
- 뉴렐릭으로부터 높은 CPU 사용률 알림을 받았습니다.
- 알려진 세부 정보를 검색하고 영향을 받은 EC2 제외를 식별합니다.
- 인스턴스 세부 정보와 함께 Slack 공지를 보내고 크기 조정에 대한 승인을 requests .
- 승인 후 인스턴스 크기 조정을 자동화하기 위한 SSM 문서를 생성합니다.
- 인스턴스를 중지하고 인스턴스 유형을 수정한 후 다시 시작합니다.
- 크기 조정 프로세스 중에 Slack으로 진행 상황 업데이트를 보냅니다.
- 완료를 기다리고 성공 또는 실패 상태를 보냅니다.
- SSM 문서를 정리하고 최종 확인을 보냅니다.
요구 사항:
- EC2 및 Systems Manager에 대한 권한이 있는 AWS 자격 증명
- EC2 지표에 대한 활성 뉴클릭 공지 용어
- 공지 및 승인을 받기 위한 구성된 Slack 앱
주요 작업: newrelic.nerdgraph.execute, newrelic.nrdb.query, slack.chat.postMessage, slack.chat.getReactions, aws.systemsManager.writeDocument, aws.systemsManager.startAutomation, aws.systemsManager.waitForAutomationStatus, aws.systemsManager.deleteDocument, utils.datetime.fromEpoch, utils.uuid.generate
구현, 배포 롤백
롤백 구현, 부분이 비정상이 되는 경우 배포하고 AWS SQS 또는 HTTP로 알립니다.
이 흐름이 하는 일은:
- 지정된 기간 동안 패널의 공지 심각도를 모니터링합니다(기본값 30분).
- 매분 엔티티 상태를 확인합니다.
- 조각이 CRITICAL 또는 WARNING이 되면 비정상 상태를 기록합니다.
- AWS SQS를 통해 롤백 알림을 보냅니다(구성된 경우). 자세한 내용 포함
- HTTP 웹후크를 통해 롤백 공지를 보냅니다(구성된 경우)
- 전체 기간 동안 정상 상태를 유지하면 로그인 성공
- 엔티티가 발견되지 않으면 모니터링을 중지합니다.
요구 사항:
- 공지 심각도 검토를 통한 뉴렐릭
- (선택사항) 롤백을 수신할 AWS SQS 대기열 및 역할 공지
- (선택) 롤백을 받기 위한 HTTP 엔드포인트 공지
주요 작업: newrelic.nerdgraph.execute, newrelic.ingest.sendLogs, aws.execute.api (sqs.send_message), http.post
데이터 처리 및 보고
Slack에 보고서 보내기
NRQL 쿼리 출력을 CSV 파일로 Slack에 보냅니다.
이 흐름이 하는 일은:
- 지정된 뉴렐릭 계정에 대해 NRQL 쿼리를 실행합니다.
- 쿼리 결과에서 CSV 파일을 생성합니다.
- 메시지와 함께 지정된 Slack 채널에 CSV 파일을 게시합니다.
요구 사항:
- 뉴렐릭 자격 증명 및 기능적인 NRQL 쿼리
- 의의와 댓, 목표 채널로 구성된 Slack 앱
주요 작업: newrelic.nrdb.query, utils.transform.toCSV, slack.chat.postMessage
JSON 파싱
뉴렐릭 공개 상태 API JSON(HTTP)을 구문 분석하고 선택적으로 운영 및 비운영 구성 요소를 차단합니다.
이 흐름이 하는 일은:
- 뉴렐릭 상태 API에서 JSON 데이터를 가져옵니다.
- 구성 요소를 작동 상태에 따라 추출하고 분류합니다.
- 조건부로 운영 구성 요소를 테스트합니다(활성화된 경우)
- 비작동 구성 요소를 조건부로 로그합니다(활성화된 경우)
- HTTP 오류를 처리하고 로그인을 했습니다.
요구 사항:
- 뉴렐릭 상태 API (summary.json)에 대한 액세스
- newrelic.ingest.sendLogs를 통해 로그를 보낼 수 있는 권한
주요 작업: http.get, newrelic.ingest.sendLogs
사용 가능한 템플릿 흐름
위에 나열된 템플릿은 뉴렐릭 파라다이스 자동화 UI 에서 직접 사용할 수 있습니다. 접근 방법:
- one.newrelic.com > All Capabilities > Workflow Automation로 이동
- Create workflow [워크플로 만들기]를 클릭하세요.
- Use a template [템플릿 사용을]선택하세요
- 템플릿을 찾아보고 사용 사례에 맞는 활동 흐름을 선택하세요.
각 템플릿에는 다음이 포함됩니다.
- 사전 구성된 워크플로우 단계 및 로직
- 예제 입력 매개변수,
- 필수 자격 증명 및 통합
- 예상 결과 문서화
템플릿을 그대로 사용하거나 특정 요구 사항에 맞게 사용자 정의할 수 있습니다.
단계 간 데이터 전달
모든 에라스우는 템플릿 구문을 사용하여 이전 단계의 출력을 참조할 수 있습니다. 이를 통해 여러 작업을 연결하고 복잡한 자동화 논리를 구축할 수 있습니다.
기본 데이터 전달
steps: - name: getAlert action: newrelic.nerdgraph.execute inputs: query: | { actor { account(id: 123456) { alerts { violation(id: 789) { condition entity { name guid } } } } } }
- name: sendToSlack action: slack.chat.postMessage inputs: channel: "#incidents" text: "Alert: ${{ .steps.getAlert.outputs.data.actor.account.alerts.violation.condition }}"루프에서 데이터 사용
steps: - name: listInstances type: action action: aws.ec2.describeInstances version: 1 inputs: filters: - name: "tag:Environment" values: ["production"]
- name: checkEachInstance type: loop for: in: "${{ .steps.listInstances.outputs.reservations }}" steps: - name: getInstanceMetrics type: action action: newrelic.nerdgraph.execute version: 1 inputs: query: "SELECT average(cpuPercent) FROM SystemSample WHERE instanceId = '${{ .steps.checkEachInstance.loop.element.instanceId }}'"데이터를 사용한 조건 논리
steps: - name: checkCPU type: action action: newrelic.nerdgraph.execute version: 1 # ... query configuration
- name: decideAction type: switch switch: - condition: "${{ .steps.checkCPU.outputs.data.actor.account.nrql.results[0].average > 90 }}" next: resizeInstance - condition: "${{ .steps.checkCPU.outputs.data.actor.account.nrql.results[0].average > 70 }}" next: sendWarning next: normalOperation
- name: resizeInstance type: action action: aws.ec2.modifyInstanceAttribute version: 1 # ... resize configuration
- name: sendWarning type: action action: slack.chat.postMessage version: 1 # ... warning message
- name: normalOperation type: action action: newrelic.ingest.sendLogs version: 1 # ... log normal status다음 단계
- 나만의 워크플로우 만들기 - 빌드 워크플로우 단계별 안내
- 작업 카탈로그 - 사용 가능한 모든 작업 찾아보기
- 템플릿 사용 - 구현하다, 배포하다 사전 구축된 흐름
- AWS 자격 증명 설정 - AWS 인증 구성