本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS FIS 的实验日志记录
您可以使用实验日志记录,以便在实验运行时捕获有关详细信息。
您需要根据与每种日志目的地类型关联的成本付费使用实验日志记录。有关更多信息,请参阅 Amazon CloudWatch 定价
权限
您必须授予 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
值,即目标的资源类型。 -
action-error
和target-resolution-detail
事件类型(添加了account_id
字段)。
-
-
初始版本为版本 1。
日志目的地
AWS FIS 支持将日志传输到以下目的地:
一个 Amazon S3 存储桶
Amazon CloudWatch 日志组
S3 日志传输
这些日志会传输到以下位置。
bucket-and-optional-prefix
/AWSLogs/account-id
/fis/region
/experiment-id
/YYYY
/MM
/DD
/account-id
_awsfislogs_region
_experiment-id
_YYYYMMDDHHMM
Z_hash
.log
日志会在几分钟后传输到存储桶。
CloudWatch 日志日志传输
这些日志会传输到 /aws/fis/experiment-id
日志流中。
日志会在一分钟以内传输到日志组。
日志记录示例
以下随机选取了在 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 秒,以便将日志配置为传输到此目的地。
使用控制台启用实验日志记录
您可以访问 https://console.aws.amazon.com/fis/
,打开 AWS FIS 控制台。 -
在导航窗格中,选择实验模板。
-
选择实验模板,然后依次选择操作和更新实验模板。
-
对于日志,配置目的地选项。要向 S3 存储桶发送日志,请选择发送到 Amazon S3 存储桶,然后输入存储桶名称和前缀。要将日志发送到 CloudWatch 日志,请选择发送到 CloudWatch 日志并输入日志组。
-
选择更新实验模板。
使用 AWS CLI 启用实验日志记录
使用update-experiment-template
禁用实验日志记录
如果不想再接收实验日志,则可以禁用实验日志记录。
使用控制台禁用实验日志记录
您可以访问 https://console.aws.amazon.com/fis/
,打开 AWS FIS 控制台。 -
在导航窗格中,选择实验模板。
-
选择实验模板,然后依次选择操作和更新实验模板。
-
对于日志,清除 “发送到 Amazon S3 存储桶” 和 “发送到 CloudWatch 日志”。
-
选择更新实验模板。
使用 AWS CLI 禁用实验日志记录
使用update-experiment-template