AWS FIS에 대한 실험 로깅 - AWS 장애 주입 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS FIS에 대한 실험 로깅

실험 로깅을 사용하여 실행 중인 실험에 대한 세부 정보를 캡처할 수 있습니다.

각 로그 대상 유형과 관련된 비용을 기준으로 실험 로깅 요금이 부과됩니다. 자세한 내용은 Amazon CloudWatch 요금 (유료 티어, 로그, 벤드 로그 아래) 및 Amazon S3 요금을 참조하십시오.

권한

구성한 각 로그 대상으로 로그를 전송할 수 있는 권한을 AWS FIS에 부여해야 합니다. 자세한 내용은 Amazon CloudWatch Logs 사용 설명서의 다음을 참조하십시오.

로그 스키마

다음은 실험 로깅에 사용되는 스키마입니다. 현재 스키마 버전은 2입니다. details의 필드는 log_type의 값에 따라 달라집니다. resolved_targets의 필드는 target_type의 값에 따라 달라집니다. 자세한 설명은 로그 레코드 예 섹션을 참조하세요.

{ "id": "EXP123abc456def789", "log_type": "experiment-start | target-resolution-start | target-resolution-detail | target-resolution-end | action-start | action-error | action-end | experiment-end", "event_timestamp": "yyyy-mm-ddThh:mm:ssZ", "version": "2", "details": { "account_id":"123456789012", "action_end_time": "yyyy-mm-ddThh:mm:ssZ", "action_id": "String", "action_name": "String", "action_start_time": "yyyy-mm-ddThh:mm:ssZ", "action_state": { "status": "pending | initiating | running | completed | cancelled | stopping | stopped | failed", "reason": "String" }, "action_targets": "String to string map", "error_information": "String", "experiment_end_time": "yyyy-mm-ddThh:mm:ssZ", "experiment_state": { "status": "pending | initiating | running | completed | stopping | stopped | failed", "reason": "String" }, "experiment_start_time": "yyyy-mm-ddThh:mm:ssZ", "experiment_template_id": "String", "page": Number, "parameters": "String to string map", "resolved_targets": [ { "field": "value" } ], "resolved_targets_count": Number, "status": "failed | completed", "target_name": "String", "target_resolution_end_time": "yyyy-mm-ddThh:mm:ssZ", "target_resolution_start_time": "yyyy-mm-ddThh:mm:ssZ", "target_type": "String", "total_pages": Number, "total_resolved_targets_count": Number } }
릴리스 정보
  • 버전 2에서는 다음 사항이 도입됩니다.

    • target_type 필드를 변경하고 resolved_targets 필드를 ARN 목록에서 객체 목록으로 변경합니다. resolved_targets 객체의 유효한 필드는 대상의 리소스 유형target_type의 값에 따라 달라집니다.

    • account_id 필드를 추가하는 action-errortarget-resolution-detail 이벤트 유형입니다.

  • 버전 1이 초기 릴리스입니다.

로그 대상

AWS FIS는 다음 대상으로의 로그 전달을 지원합니다.

  • Amazon S3 버킷

  • 아마존 CloudWatch 로그 로그 그룹

S3 로그 전달

로그는 다음 위치로 전달됩니다.

bucket-and-optional-prefix/AWSLogs/account-id/fis/region/experiment-id/YYYY/MM/DD/account-id_awsfislogs_region_experiment-id_YYYYMMDDHHMMZ_hash.log

로그가 버킷으로 전달되려면 몇 분 정도 걸릴 수 있습니다.

CloudWatch 로그 로그 전달

로그는 /aws/fis/experiment-id라는 로그 스트림으로 전송됩니다.

로그는 1분 이내에 로그 그룹에 전달됩니다.

로그 레코드 예

다음은 무작위로 선택한 EC2 인스턴스에서 aws:ec2:reboot-instances 작업을 실행하는 실험의 예제 로그 기록입니다.

experiment-start

다음은 experiment-start 이벤트의 예시 레코드입니다.

{ "id": "EXPhjAXCGY78HV2a4A", "log_type": "experiment-start", "event_timestamp": "2023-05-31T18:50:45Z", "version": "2", "details": { "experiment_template_id": "EXTCDh1M8HHkhxoaQ", "experiment_start_time": "2023-05-31T18:50:43Z" } }
target-resolution-start

다음은 target-resolution-start 이벤트의 예시 레코드입니다.

{ "id": "EXPhjAXCGY78HV2a4A", "log_type": "target-resolution-start", "event_timestamp": "2023-05-31T18:50:45Z", "version": "2", "details": { "target_resolution_start_time": "2023-05-31T18:50:45Z", "target_name": "EC2InstancesToReboot" } }
target-resolution-detail

다음은 target-resolution-detail 이벤트의 예시 레코드입니다. 대상 확인에 실패할 경우 기록에는 error_information 필드도 포함됩니다.

{ "id": "EXPhjAXCGY78HV2a4A", "log_type": "target-resolution-detail", "event_timestamp": "2023-05-31T18:50:45Z", "version": "2", "details": { "target_resolution_end_time": "2023-05-31T18:50:45Z", "target_name": "EC2InstancesToReboot", "target_type": "aws:ec2:instance", "account_id": "123456789012", "resolved_targets_count": 2, "status": "completed" } }
target-resolution-end

대상 확인에 실패할 경우 기록에는 error_information 필드도 포함됩니다. total_pages이 1보다 크면 확인된된 대상 수가 한 레코드의 크기 제한을 초과했습니다. 나머지 확인된 대상이 포함된 추가 target-resolution-end 레코드가 있습니다.

다음은 EC2 작업에 대한 target-resolution-end 이벤트의 예시 레코드입니다.

{ "id": "EXPhjAXCGY78HV2a4A", "log_type": "target-resolution-end", "event_timestamp": "2023-05-31T18:50:45Z", "version": "2", "details": { "target_resolution_end_time": "2023-05-31T18:50:46Z", "target_name": "EC2InstanceToReboot", "target_type": "aws:ec2:instance", "resolved_targets": [ { "arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-0f7ee2abffc330de5" } ], "page": 1, "total_pages": 1 } }

다음은 EKS 작업에 대한 target-resolution-end 이벤트의 예시 레코드입니다.

{ "id": "EXP24YfiucfyVPJpEJn", "log_type": "target-resolution-end", "event_timestamp": "2023-05-31T18:50:45Z", "version": "2", "details": { "target_resolution_end_time": "2023-05-31T18:50:46Z", "target_name": "myPods", "target_type": "aws:eks:pod", "resolved_targets": [ { "pod_name": "example-696fb6498b-sxhw5", "namespace": "default", "cluster_arn": "arn:aws:eks:us-east-1:123456789012:cluster/fis-demo-cluster", "target_container_name": "example" } ], "page": 1, "total_pages": 1 } }
action-start

다음은 action-start 이벤트의 예시 레코드입니다. 실험 템플릿에 작업 파라미터가 지정되어 있는 경우 레코드에는 parameters 필드도 포함됩니다.

{ "id": "EXPhjAXCGY78HV2a4A", "log_type": "action-start", "event_timestamp": "2023-05-31T18:50:56Z", "version": "2", "details": { "action_name": "Reboot", "action_id": "aws:ec2:reboot-instances", "action_start_time": "2023-05-31T18:50:56Z", "action_targets": {"Instances":"EC2InstancesToReboot"} } }
action-error

다음은 action-error 이벤트의 예시 레코드입니다. 작업이 실패할 때만 반환되는 이벤트입니다. 작업이 실패한 각 계정에 대해 반환됩니다.

{ "id": "EXPhjAXCGY78HV2a4A", "log_type": "action-error", "event_timestamp": "2023-05-31T18:50:56Z", "version": "2", "details": { "action_name": "pause-io", "action_id": "aws:ebs:pause-volume-io", "account_id": "123456789012", "action_state": { "status": "failed", "reason":"Unable to start Pause Volume IO. Target volumes must be attached to an instance type based on the Nitro system. VolumeId(s): [vol-1234567890abcdef0]:" } } }
action-end

다음은 action-end 이벤트의 예시 레코드입니다.

{ "id": "EXPhjAXCGY78HV2a4A", "log_type": "action-end", "event_timestamp": "2023-05-31T18:50:56Z", "version": "2", "details": { "action_name": "Reboot", "action_id": "aws:ec2:reboot-instances", "action_end_time": "2023-05-31T18:50:56Z", "action_state": { "status": "completed", "reason": "Action was completed." } } }
experiment-end

다음은 experiment-end 이벤트의 예시 레코드입니다.

{ "id": "EXPhjAXCGY78HV2a4A", "log_type": "experiment-end", "event_timestamp": "2023-05-31T18:50:57Z", "version": "2", "details": { "experiment_end_time": "2023-05-31T18:50:57Z", "experiment_state": { "status": "completed", "reason": "Experiment completed" } } }

실험 로깅 활성화

실험 로깅은 기본적으로 비활성화되어 있습니다. 실험에 대한 실험 로그를 받으려면 로깅이 활성화된 실험 템플릿에서 실험을 생성해야 합니다. 이전에 로깅에 사용하지 않은 대상을 사용하도록 구성된 실험을 처음 실행하면 이 대상으로의 로그 전달을 구성하기 위해 실험이 지연되며, 약 15초가 소요됩니다.

콘솔을 이용하여 실험 로그를 활성화하려면
  1. https://console.aws.amazon.com/fis/에서 AWS FIS 콘솔을 엽니다.

  2. 탐색 창에서 실험 템플릿을 선택합니다.

  3. 실험 템플릿을 선택하고 작업, 실험 템플릿 업데이트를 선택합니다.

  4. 로그의 경우 대상 옵션을 구성합니다. S3 버킷으로 로그를 보내려면 Amazon S3 버킷으로 전송을 선택하고 버킷 이름과 접두사를 입력합니다. 로그를 Logs로 CloudWatch 보내려면 Send to CloudWatch Logs를 선택하고 로그 그룹을 입력합니다.

  5. 실험 템플릿 업데이트를 선택합니다.

AWS CLI를 사용하여 실험 로깅을 활성화하려면

update-experiment-template명령을 사용하고 로그 구성을 지정합니다.

실험 로깅 비활성화

실험에 대한 로그를 더 이상 받지 않으려면 실험 로깅을 비활성화할 수 있습니다.

콘솔을 이용하여 실험 로깅을 비활성화하려면
  1. https://console.aws.amazon.com/fis/에서 AWS FIS 콘솔을 엽니다.

  2. 탐색 창에서 실험 템플릿을 선택합니다.

  3. 실험 템플릿을 선택하고 작업, 실험 템플릿 업데이트를 선택합니다.

  4. 로그의 경우 Amazon S3 버킷으로 보내기 및 CloudWatch 로그로 보내기의 선택을 취소하십시오.

  5. 실험 템플릿 업데이트를 선택합니다.

AWS CLI를 이용하여 실험 로깅을 비활성화하려면

update-experiment-template명령을 사용하여 빈 로그 구성을 지정합니다.