

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

# AWS FIS에 대한 실험 로깅
<a name="monitoring-logging"></a>

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

각 로그 대상 유형과 관련된 비용을 기준으로 실험 로깅 요금이 부과됩니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)(**유료 티어**, **로그**, **벤딩 로그** 아래) 및 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

## 권한
<a name="permissions-experiment-logging"></a>

구성하는 각 로그 대상으로 로그를 전송할 수 있는 AWS FIS 권한을 부여해야 합니다. 자세한 내용은 *Amazon CloudWatch Logs 사용 설명서*의 다음 내용을 참조하세요.
+ [CloudWatch Logs로 전송된 로그](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-CWL)
+ [Amazon S3로 보낸 로그](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-S3)

## 로그 스키마
<a name="experiment-log-schema"></a>

다음은 실험 로깅에 사용되는 스키마입니다. 현재 스키마 버전은 2입니다. `details`의 필드는 `log_type`의 값에 따라 달라집니다. `resolved_targets`의 필드는 `target_type`의 값에 따라 달라집니다. 자세한 내용은 [로그 레코드 예](#example-log-records) 단원을 참조하십시오.

```
{
    "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` 객체의 유효한 필드는 대상의 [리소스 유형](targets.md#resource-types)인 `target_type`의 값에 따라 달라집니다.
  + `account_id` 필드를 추가하는 `action-error` 및 `target-resolution-detail` 이벤트 유형입니다.
+ 버전 1이 초기 릴리스입니다.

## 로그 대상
<a name="experiment-log-destinations"></a>

AWS FIS는 다음 대상으로 로그 전송을 지원합니다.
+ Amazon S3 버킷
+ Amazon CloudWatch Logs 로그 그룹

**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 Logs 로그 전달**  
로그는 /aws/fis/*experiment-id*라는 로그 스트림으로 전송됩니다.

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

## 로그 레코드 예
<a name="example-log-records"></a>

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

**레코드**
+ [experiment-start](#experiment-start)
+ [target-resolution-start](#target-resolution-start)
+ [target-resolution-detail](#target-resolution-detail)
+ [target-resolution-end](#target-resolution-end)
+ [action-start](#action-start)
+ [action-end](#action-end)
+ [action-error](#action-error)
+ [experiment-end](#experiment-end)<a name="experiment-start"></a>

**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"
    }
}
```<a name="target-resolution-start"></a>

**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"
    }
}
```<a name="target-resolution-detail"></a>

**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"

    }
}
```<a name="target-resolution-end"></a>

**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
    }
}
```<a name="action-start"></a>

**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"}
    }
}
```<a name="action-error"></a>

**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]:"
        }
    }
}
```<a name="action-end"></a>

**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."
        }
    }
}
```<a name="experiment-end"></a>

**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"
        }
    }
}
```

## 실험 로깅 활성화
<a name="enable-experiment-logging"></a>

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

**콘솔을 이용하여 실험 로그를 활성화하려면**

1. [https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) AWS FIS 콘솔을 엽니다.

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

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

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

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

**를 사용하여 실험 로깅을 활성화하려면 AWS CLI**  
[update-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/update-experiment-template.html) 명령을 사용하고 로그 구성을 지정합니다.

## 실험 로깅 비활성화
<a name="disable-experiment-logging"></a>

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

**콘솔을 이용하여 실험 로깅을 비활성화하려면**

1. [https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) AWS FIS 콘솔을 엽니다.

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

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

1. **로그**의 경우 **Amazon S3 버킷으로 전송** 및 **CloudWatch Logs로 전송** 선택을 취소하세요.

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

**를 사용하여 실험 로깅을 비활성화하려면 AWS CLI**  
[update-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/update-experiment-template.html) 명령을 사용하고 빈 로그 구성을 지정합니다.