如何向发送到 CloudWatch 的自定义遥测添加相关信息
当您将自己的指标和日志发布到 CloudWatch 时,默认情况下,其中不存在相关遥测所需的实体信息。当您向 CloudWatch 发送指标或向 CloudWatch Logs 发送日志(使用 PutMetricData 或 PutLogEvents 操作)时,您可以向这些日志或指标添加实体信息。实体信息与遥测相关联,并在探索相关功能中用于查找与同一实体关联的相关遥测。
通过遥测发送的实体表示与遥测相关的资源或服务。例如关于服务的指标或来自 AWS 资源的指标。要识别代码中关联的实体,请创建该实体的一组 KeyAttributes
和可选 Attributes
。
注意
CloudWatch 只能找到在过去三个小时内发送了遥测的实体的相关资源。如果您的资源仅发出稀疏遥测(少于每 3 小时发出一次),则可能需要发送额外的心跳遥测,以使实体在 CloudWatch 中保持活动状态。
以下各节介绍如何创建 KeyAttributes
和 Attributes
,以便 CloudWatch 可以识别与遥测相关的资源和服务。
使用 KeyAttributes 对象标识实体
实体对象(在 CloudWatch 中或 CloudWatch 日志中)的 KeyAttributes
属性唯一标识了 CloudWatch 的实体。其值是一个键值对列表。具有相同 KeyAttributes
的实体被视为同一实体。与同一实体关联的遥测被视为相关,可以在探索相关窗格中轻松找到。
注意
在 CloudWatch API 中,该属性称为 KeyAttributes
。在 CloudWatch Logs API 中,该属性称为 keyAttributes
。在这里,它们被视为相同的属性。
Entity
可以表示的对象有五种可能的类型。
-
AWS::Resource:该实体代表 AWS 资源,例如 DynamoDB 表或 Amazon EC2 实例。
-
AWS::Service:该实体代表 AWS 服务,例如 Amazon S3。例如,在调用与特定的 Amazon S3 资源无关的
ListBuckets
操作时,可能会使用此方法。 -
Service:该实体代表在您的账户中运行的工作负载。例如您管理的应用程序或服务。
-
Resource:该实体表示不由 AWS 管理的资源,例如操作系统资源(例如进程或文件卷)。
-
RemoteService:该实体代表远程调用中的外部服务。例如,对数据库、外部缓存或外部端点的远程调用。
根据您要表示的上述类型的种类,您必须为 KeyAttributes
提供正确的键值对。以下介绍每种类型。
提供有关具有 Attributes 对象的实体的更多详细信息
您可以提供有关您在遥测中提供的 Entity
的更多详细信息。这可能包括有关平台、资源、应用程序或遥测提供商的详细信息。下表描述了可用于每种数据类型的关键词。
注意
在 CloudWatch API 中,该属性称为 Attributes
。在 CloudWatch Logs API 中,该属性称为 attributes
。在这里,它们被视为相同的属性。
平台详细信息
Keyword | 使用量 | 值的域 | 示例 |
---|---|---|---|
|
定义托管平台。 |
AWS::EKS、AWS::ECS、AWS::EC2、AWS::Lambda、K8s、Generic |
|
|
Amazon EKS 集群的名称。 |
带有基本分隔符的字母数字字符串。 |
|
|
自托管式 Kubernetes 集群的名称。 |
带有基本分隔符的字母数字字符串。 |
|
|
Amazon EKS 或 K8s 集群中 Kubernetes 命名空间的名称。 |
带有基本分隔符的字母数字字符串。 |
|
|
Amazon EKS 和 K8s 集群中的 Kubernetes 工作负载的名称。 |
带有基本分隔符的字母数字字符串。 |
|
|
Amazon EKS 和 K8s 集群中 Kubernetes 节点的身份。 |
K8s 节点名称(例如,Amazon EC2 实例 DNS 名称)。 |
|
|
Amazon EKS 和 K8s 集群中 Kubernetes 容器组(pod)的身份。 |
K8s 容器组(pod)标识符。 |
|
|
Amazon EC2 AutoScaling 组的名称。 |
带有基本分隔符的字母数字字符串。 |
|
|
Amazon EC2 实例的身份。 |
Amazon EC2 实例标识符。 |
|
|
Amazon ECS 集群的身份。 |
Amazon ECS 集群。 |
|
|
Amazon ECS 服务的身份。 |
Amazon ECS 服务。 |
|
|
Amazon ECS 任务的身份。 |
Amazon ECS 任务 ID。 |
|
|
Lambda 函数的身份。 |
Lambda 函数名称。 |
|
|
所有平台类型的主机名称。 |
子域格式。 |
|
资源详细信息
Keyword | 使用量 | 值的域 | 示例 |
---|---|---|---|
|
AWS 资源的 ARN。 |
带有基本分隔符的字母数字字符串。 |
|
应用程序详细信息
Keyword | 使用量 | 值的域 | 示例 |
---|---|---|---|
|
应用程序内部流的名称。 |
带有基本分隔符的字母数字字符串。 |
|
|
AppRegistry 中应用程序的 ARN。 |
带有基本分隔符的字母数字字符串。 |
|
遥测提供商详细信息
Keyword | 使用量 | 值的域 | 示例 |
---|---|---|---|
|
用于检测服务的 OTEL SDK 版本的指纹。 |
带有基本分隔符的字母数字字符串。 |
|
|
用于收集和发送遥测的代理的指纹。 |
带有基本分隔符的字母数字字符串。 |
|
|
指定收集遥测的应用程序点或用于遥测数据源的内容。 |
ServerSpan、ClientSpan、ProducerSpan、ConsumerSpan、LocalRoot Span、JMX、OS。 |
|