本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Fargate 上任务的任务元数据端点版本 4
重要
如果您正在使用托管在 Amazon EC2 实例上的Amazon ECS任务,请参阅 Amazon Elastic Container Service 开发人员指南中的 Amazon ECS 任务元数据端点。
从 Fargate 平台版本 1.4.0
开始,名为 ECS_CONTAINER_METADATA_URI_V4
的环境变量被注入到任务中的每个容器中。在您查询任务元数据版本 4 端点时,将为任务提供各种任务元数据和 Docker 统计数据
任务元数据版本 4 端点的功能与版本 3 端点相似,但为容器和任务提供了额外的网络元数据。查询 /stats
终端节点时还可以使用其他网络指标。
注意
为避免将来需要创建新的任务元数据终端节点版本,可能会将其他元数据添加到版本 4 输出中。我们不会删除任何现有元数据或更改元数据字段名称。
启用任务元数据端点
默认情况下,对于使用平台版本 1.4.0
或更高版本在 Amazon Fargate 上运行的所有 Amazon ECS 任务,都会启用任务元数据端点。
Fargate 任务元数据端点版本 4 路径
以下任务元数据终端节点可用于容器:
${ECS_CONTAINER_METADATA_URI_V4}
-
此路径返回容器的元数据。
${ECS_CONTAINER_METADATA_URI_V4}/task
-
此路径返回任务的元数据,包括与任务相关的所有容器的 ID 和名称列表。有关此终端节点响应的更多信息,请参阅Fargate 上任务的任务元数据 JSON 响应。
${ECS_CONTAINER_METADATA_URI_V4}/stats
-
此路径返回 Docker 容器的 Docker 统计数据。有关每个返回的统计数据的更多信息,请参阅ContainerStats
在 Docker API 文档中。 注意
Amazon Fargate 上的 Amazon ECS 任务要求容器在返回容器统计数据之前运行约 1 秒。
${ECS_CONTAINER_METADATA_URI_V4}/task/stats
-
此路径返回与任务相关的所有容器的 Docker 统计数据 。有关每个返回的统计数据的更多信息,请参阅ContainerStats
在 Docker API 文档中。 注意
Amazon Fargate 上的 Amazon ECS 任务要求容器在返回容器统计数据之前运行约 1 秒。
Fargate 上任务的任务元数据 JSON 响应
以下元数据返回自任务元数据端点 (${ECS_CONTAINER_METADATA_URI_V4}/task
) JSON 响应。
Cluster
-
任务所属的 Amazon ECS 群集的 Amazon Resource Name (ARN) 或短名称。
VPCID
-
Amazon EC2 容器实例的 VPC ID。此字段仅针对 Amazon EC2 实例显示。
注意
仅在使用 Amazon ECS 容器代理版本
1.63.1
或更高版本时包含VPCID
元数据。 TaskARN
-
容器所属的任务的完整 Amazon Resource Name (ARN)。
Family
-
任务的 Amazon ECS 任务定义系列。
Revision
-
任务的 Amazon ECS 任务定义修订。
DesiredStatus
-
来自 Amazon ECS 的任务的所需状态。
KnownStatus
-
来自 Amazon ECS 的任务的已知状态。
Limits
-
在任务级别指定的资源限制,例如 CPU(以 vCPU 表示)和内存。如果未定义资源限制,则省略此参数。
PullStartedAt
-
开始提取第一个容器映像时的时间戳。
PullStoppedAt
-
完成提取最后一个容器映像时的时间戳。
AvailabilityZone
-
任务所在的可用区。
注意
可用区元数据仅适用于使用平台版本 1.4 或更高版本(Linux)或者 1.0.0(Windows)的 Fargate 任务。
LaunchType
-
任务使用的启动类型。使用集群容量提供程序时,这表明任务使用的是 Fargate 还是 EC2 基础设施。
注意
仅在使用 Amazon ECS Linux 容器代理版本
1.45.0
或更高版本(Linux)或者 1.0.0 或更高版本(Windows)时将该LaunchType
元数据包含在内。 EphemeralStorageMetrics
-
此任务短暂存储的预留大小和当前使用情况。
注意
Fargate 可保留磁盘空间。该磁盘空间仅由 Fargate 使用。您无需为此付费。它没有显示在这些指标中。但是,您可以在
df
等其他工具中看到这种额外的存储空间。Utilized
-
此任务的当前短暂存储使用量(MiB 为单位)。
Reserved
-
此任务的预留短暂存储(MiB 为单位)。无法在正在运行的任务中更改短暂存储大小。您可以在任务定义中指定的
ephermalStorage
对象以更改短暂存储量。以 GiB 而不是 MiB 为单位指定ephermalStorage
。ephermalStorage
和EphemeralStorageMetrics
仅适用于 Fargate Linux 平台 1.4.0 或更高版本上。
Containers
-
与任务关联的每个容器的容器元数据列表。
DockerId
-
容器的 Docker ID。
当您使用 Fargate 时,id 是一个 32 位十六进制,后面是 10 位数字。
Name
-
任务定义中所指定的容器的名称。
DockerName
-
提供给 Docker 的容器的名称。Amazon ECS 容器代理为容器生成一个唯一名称,以避免相同任务定义的多个副本在一个实例上运行时发生名称冲突。
Image
-
容器的映像。
ImageID
-
容器的 SHA-256 摘要。
Ports
-
对于容器公开的任何端口。如果没有公开的端口,则省略此参数。
Labels
-
应用到容器的任何标签。如果没有应用的标签,则省略此参数。
DesiredStatus
-
来自 Amazon ECS 的容器的所需状态。
KnownStatus
-
来自 Amazon ECS 的容器的已知状态。
ExitCode
-
容器的退出代码。如果没有容器退出,则省略此参数。
Limits
-
在容器级别指定的资源限制,例如 CPU(以 CPU 单位表示)和内存。如果未定义资源限制,则省略此参数。
CreatedAt
-
创建容器时的时间戳。如果尚未创建容器,则省略此参数。
StartedAt
-
容器启动时的时间戳。如果尚未启动容器,则省略此参数。
FinishedAt
-
容器停止时的时间戳。如果尚未停止容器,则省略此参数。
Type
-
容器的类型。在您的任务定义中指定的容器属于
NORMAL
类型。您可以省略其他被 Amazon ECS 容器代理用来进行内部任务资源预配置的容器类型。 LogDriver
-
容器使用的日志驱动程序。
注意
该
LogDriver
元数据仅在使用Amazon ECS Linux 容器代理版本时包含1.45.0
或更高版本。 LogOptions
-
为容器定义的日志驱动程序选项。
注意
该
LogOptions
元数据仅在使用Amazon ECS Linux 容器代理版本时包含1.45.0
或更高版本。 ContainerARN
-
容器的完整 Amazon Resource Name (ARN)。
注意
该
ContainerARN
元数据仅在使用Amazon ECS Linux 容器代理版本时包含1.45.0
或更高版本。 Networks
-
容器的网络信息,如网络模式和 IP 地址。如果未定义网络信息,则省略此参数。
Snapshotter
-
的snapshotter那是被使用的containerd下载此容器镜像。有效值为
overlayfs
,这是默认值,以及soci
,在延迟加载 SOCI 索引时使用。此参数仅适用于在 Linux 平台版本上运行的任务1.4.0
。
ClockDrift
-
有关参考时间和系统时间之间差异的信息。
ReferenceTime
-
时钟准确度的基础。Amazon ECS 通过 NTP 使用协调世界时(UTC)全球标准,例如
2021-09-07T16:57:44Z
。 ClockErrorBound
-
时钟误差的度量,定义为与 UTC 的偏移量。此错误是参考时间和系统时间之间的差异(以毫秒为单位)。
ClockSynchronizationStatus
-
指示系统时间和参考时间之间的最近一次同步尝试是否成功。
有效值为
SYNCHRONIZED
和NOT_SYNCHRONIZED
。
ExecutionStoppedAt
-
任务的
DesiredStatus
变为STOPPED
时的时间戳。这将发生在关键容器变成STOPPED
时。
Fargate 上的任务示例
以下示例显示了在上 Amazon Fargate 运行的 Amazon ECS 任务的任务元数据端点的输出示例。
通过容器,您可以在任务元数据端点后面使用 curl 来查询端点,例如 curl
${ECS_CONTAINER_METADATA_URI_V4}/task
。
容器元数据响应示例
查询 ${ECS_CONTAINER_METADATA_URI_V4}
终端节点时,仅返回有关容器本身的元数据。下面是一个示例输出。
{
"DockerId": "cd189a933e5849daa93386466019ab50-2495160603",
"Name": "curl",
"DockerName": "curl",
"Image": "111122223333.dkr.ecr.us-west-2.amazonaws.com/curltest:latest",
"ImageID": "sha256:25f3695bedfb454a50f12d127839a68ad3caf91e451c1da073db34c542c4d2cb",
"Labels": {
"com.amazonaws.ecs.cluster": "arn:aws:ecs:us-west-2:111122223333:cluster/default",
"com.amazonaws.ecs.container-name": "curl",
"com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-west-2:111122223333:task/default/cd189a933e5849daa93386466019ab50",
"com.amazonaws.ecs.task-definition-family": "curltest",
"com.amazonaws.ecs.task-definition-version": "2"
},
"DesiredStatus": "RUNNING",
"KnownStatus": "RUNNING",
"Limits": {
"CPU": 10,
"Memory": 128
},
"CreatedAt": "2020-10-08T20:09:11.44527186Z",
"StartedAt": "2020-10-08T20:09:11.44527186Z",
"Type": "NORMAL",
"Networks": [
{
"NetworkMode": "awsvpc",
"IPv4Addresses": [
"192.0.2.3"
],
"AttachmentIndex": 0,
"MACAddress": "0a:de:f6:10:51:e5",
"IPv4SubnetCIDRBlock": "192.0.2.0/24",
"DomainNameServers": [
"192.0.2.2"
],
"DomainNameSearchList": [
"us-west-2.compute.internal"
],
"PrivateDNSName": "ip-10-0-0-222.us-west-2.compute.internal",
"SubnetGatewayIpv4Address": "192.0.2.0/24"
}
],
"ContainerARN": "arn:aws:ecs:us-west-2:111122223333:container/05966557-f16c-49cb-9352-24b3a0dcd0e1",
"LogOptions": {
"awslogs-create-group": "true",
"awslogs-group": "/ecs/containerlogs",
"awslogs-region": "us-west-2",
"awslogs-stream": "ecs/curl/cd189a933e5849daa93386466019ab50"
},
"LogDriver": "awslogs",
"Snapshotter": "overlayfs"
}
Fargate 任务元数据响应示例
查询 ${ECS_CONTAINER_METADATA_URI_V4}/task
终端节点时,将返回有关容器所属的任务的元数据。下面是一个示例输出。
{
"Cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/clusterName",
"TaskARN": "arn:aws:ecs:us-east-1:123456789012:task/MyEmptyCluster/bfa2636268144d039771334145e490c5",
"Family": "sample-fargate",
"Revision": "5",
"DesiredStatus": "RUNNING",
"KnownStatus": "RUNNING",
"Limits": {
"CPU": 0.25,
"Memory": 512
},
"PullStartedAt": "2023-07-21T15:45:33.532811081Z",
"PullStoppedAt": "2023-07-21T15:45:38.541068435Z",
"AvailabilityZone": "us-east-1d",
"Containers": [
{
"DockerId": "bfa2636268144d039771334145e490c5-1117626119",
"Name": "curl-image",
"DockerName": "curl-image",
"Image": "curlimages/curl",
"ImageID": "sha256:daf3f46a2639c1613b25e85c9ee4193af8a1d538f92483d67f9a3d7f21721827",
"Labels": {
"com.amazonaws.ecs.cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/MyEmptyCluster",
"com.amazonaws.ecs.container-name": "curl-image",
"com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-east-1:123456789012:task/MyEmptyCluster/bfa2636268144d039771334145e490c5",
"com.amazonaws.ecs.task-definition-family": "sample-fargate",
"com.amazonaws.ecs.task-definition-version": "5"
},
"DesiredStatus": "RUNNING",
"KnownStatus": "RUNNING",
"Limits": { "CPU": 128 },
"CreatedAt": "2023-07-21T15:45:44.91368314Z",
"StartedAt": "2023-07-21T15:45:44.91368314Z",
"Type": "NORMAL",
"Networks": [
{
"NetworkMode": "awsvpc",
"IPv4Addresses": ["172.31.42.189"],
"AttachmentIndex": 0,
"MACAddress": "0e:98:9f:33:76:d3",
"IPv4SubnetCIDRBlock": "172.31.32.0/20",
"DomainNameServers": ["172.31.0.2"],
"DomainNameSearchList": ["ec2.internal"],
"PrivateDNSName": "ip-172-31-42-189.ec2.internal",
"SubnetGatewayIpv4Address": "172.31.32.1/20"
}
],
"ContainerARN": "arn:aws:ecs:us-east-1:123456789012:container/MyEmptyCluster/bfa2636268144d039771334145e490c5/da6cccf7-1178-400c-afdf-7536173ee209",
"Snapshotter": "overlayfs"
},
{
"DockerId": "bfa2636268144d039771334145e490c5-3681984407",
"Name": "fargate-app",
"DockerName": "fargate-app",
"Image": "public.ecr.aws/docker/library/httpd:latest",
"ImageID": "sha256:8059bdd0058510c03ae4c808de8c4fd2c1f3c1b6d9ea75487f1e5caa5ececa02",
"Labels": {
"com.amazonaws.ecs.cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/MyEmptyCluster",
"com.amazonaws.ecs.container-name": "fargate-app",
"com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-east-1:123456789012:task/MyEmptyCluster/bfa2636268144d039771334145e490c5",
"com.amazonaws.ecs.task-definition-family": "sample-fargate",
"com.amazonaws.ecs.task-definition-version": "5"
},
"DesiredStatus": "RUNNING",
"KnownStatus": "RUNNING",
"Limits": { "CPU": 2 },
"CreatedAt": "2023-07-21T15:45:44.954460255Z",
"StartedAt": "2023-07-21T15:45:44.954460255Z",
"Type": "NORMAL",
"Networks": [
{
"NetworkMode": "awsvpc",
"IPv4Addresses": ["172.31.42.189"],
"AttachmentIndex": 0,
"MACAddress": "0e:98:9f:33:76:d3",
"IPv4SubnetCIDRBlock": "172.31.32.0/20",
"DomainNameServers": ["172.31.0.2"],
"DomainNameSearchList": ["ec2.internal"],
"PrivateDNSName": "ip-172-31-42-189.ec2.internal",
"SubnetGatewayIpv4Address": "172.31.32.1/20"
}
],
"ContainerARN": "arn:aws:ecs:us-east-1:123456789012:container/MyEmptyCluster/bfa2636268144d039771334145e490c5/f65b461d-aa09-4acb-a579-9785c0530cbc",
"Snapshotter": "overlayfs"
}
],
"LaunchType": "FARGATE",
"ClockDrift": {
"ClockErrorBound": 0.446931,
"ReferenceTimestamp": "2023-07-21T16:09:17Z",
"ClockSynchronizationStatus": "SYNCHRONIZED"
},
"EphemeralStorageMetrics": {
"Utilized": 261,
"Reserved": 20496
}
}
示例任务统计信息响应
查询 ${ECS_CONTAINER_METADATA_URI_V4}/task/stats
终端节点时,将返回有关容器所属的任务的网络指标。下面是一个示例输出。
{
"3d1f891cded94dc795608466cce8ddcf-464223573": {
"read": "2020-10-08T21:24:44.938937019Z",
"preread": "2020-10-08T21:24:34.938633969Z",
"pids_stats": {},
"blkio_stats": {
"io_service_bytes_recursive": [
{
"major": 202,
"minor": 26368,
"op": "Read",
"value": 638976
},
{
"major": 202,
"minor": 26368,
"op": "Write",
"value": 0
},
{
"major": 202,
"minor": 26368,
"op": "Sync",
"value": 638976
},
{
"major": 202,
"minor": 26368,
"op": "Async",
"value": 0
},
{
"major": 202,
"minor": 26368,
"op": "Total",
"value": 638976
}
],
"io_serviced_recursive": [
{
"major": 202,
"minor": 26368,
"op": "Read",
"value": 12
},
{
"major": 202,
"minor": 26368,
"op": "Write",
"value": 0
},
{
"major": 202,
"minor": 26368,
"op": "Sync",
"value": 12
},
{
"major": 202,
"minor": 26368,
"op": "Async",
"value": 0
},
{
"major": 202,
"minor": 26368,
"op": "Total",
"value": 12
}
],
"io_queue_recursive": [],
"io_service_time_recursive": [],
"io_wait_time_recursive": [],
"io_merged_recursive": [],
"io_time_recursive": [],
"sectors_recursive": []
},
"num_procs": 0,
"storage_stats": {},
"cpu_stats": {
"cpu_usage": {
"total_usage": 1137691504,
"percpu_usage": [
696479228,
441212276,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"usage_in_kernelmode": 80000000,
"usage_in_usermode": 810000000
},
"system_cpu_usage": 9393210000000,
"online_cpus": 2,
"throttling_data": {
"periods": 0,
"throttled_periods": 0,
"throttled_time": 0
}
},
"precpu_stats": {
"cpu_usage": {
"total_usage": 1136624601,
"percpu_usage": [
695639662,
440984939,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"usage_in_kernelmode": 80000000,
"usage_in_usermode": 810000000
},
"system_cpu_usage": 9373330000000,
"online_cpus": 2,
"throttling_data": {
"periods": 0,
"throttled_periods": 0,
"throttled_time": 0
}
},
"memory_stats": {
"usage": 6504448,
"max_usage": 8458240,
"stats": {
"active_anon": 1675264,
"active_file": 557056,
"cache": 651264,
"dirty": 0,
"hierarchical_memory_limit": 536870912,
"hierarchical_memsw_limit": 9223372036854772000,
"inactive_anon": 0,
"inactive_file": 3088384,
"mapped_file": 430080,
"pgfault": 11034,
"pgmajfault": 5,
"pgpgin": 8436,
"pgpgout": 7137,
"rss": 4669440,
"rss_huge": 0,
"total_active_anon": 1675264,
"total_active_file": 557056,
"total_cache": 651264,
"total_dirty": 0,
"total_inactive_anon": 0,
"total_inactive_file": 3088384,
"total_mapped_file": 430080,
"total_pgfault": 11034,
"total_pgmajfault": 5,
"total_pgpgin": 8436,
"total_pgpgout": 7137,
"total_rss": 4669440,
"total_rss_huge": 0,
"total_unevictable": 0,
"total_writeback": 0,
"unevictable": 0,
"writeback": 0
},
"limit": 9223372036854772000
},
"name": "curltest",
"id": "3d1f891cded94dc795608466cce8ddcf-464223573",
"networks": {
"eth1": {
"rx_bytes": 2398415937,
"rx_packets": 1898631,
"rx_errors": 0,
"rx_dropped": 0,
"tx_bytes": 1259037719,
"tx_packets": 428002,
"tx_errors": 0,
"tx_dropped": 0
}
},
"network_rate_stats": {
"rx_bytes_per_sec": 43.298687872232854,
"tx_bytes_per_sec": 215.39347269466413
}
}
}