CloudWatch に送信されるカスタムテレメトリに関連情報を追加する方法 - Amazon CloudWatch

CloudWatch に送信されるカスタムテレメトリに関連情報を追加する方法

独自のメトリクスおよびログを CloudWatch に公開するとき、関連するテレメトリに必要なエンティティ情報はデフォルトで存在しません。CloudWatch または ログを CloudWatch Logs に送信するとき (PutMetricData または PutLogEvents 操作で)、それらのログまたはメトリクスにエンティティ情報を追加できます。エンティティ情報はテレメトリに関連付けられて [関連情報の探索] 機能で使用され、同じエンティティに関連付けられている関連するテレメトリを検索します。

テレメトリで送信されるエンティティは、テレメトリが関連付けられているリソースまたはサービスを表します。例えば、サービスに関するメトリクス、あるいは AWS リソースから取得されるメトリクスなど。コードに関連付けられたエンティティを識別するには、エンティティの KeyAttributes とオプションの Attributes のセットを作成します。

注記

CloudWatch は、過去 3 時間以内にテレメトリが送信されたエンティティの関連リソースのみを検索できます。リソースのテレメトリ発信頻度が低い (3 時間に 1 回未満) 場合、追加のハートビートテレメトリを送信し、CloudWatch 内でエンティティをアクティブにしておくことができます。

エンティティ情報を追加する方法については、「EMF 形式のエンティティ情報」を参照してください。

CloudWatch がテレメトリに関連付けられたリソースおよびサービスを識別できるように、次のセクションでは KeyAttributes および Attributes を作成する方法について説明します。

エンティティオブジェクトの (CloudWatch 内 または CloudWatch ログ内) KeyAttributes プロパティは、CloudWatch のエンティティを一意に識別します。これはキーと値のペアのリストです。同じ KeyAttributes を持つエンティティは、同じエンティティとして見なされます。同じエンティティに関連付けられたテレメトリは関連性があると見なされ、[関連情報の探索] ペインで簡単に見つけることができます。

注記

CloudWatch API では、プロパティは KeyAttributes と呼ばれます。CloudWatch Logs API では、プロパティは keyAttributes と呼ばれます。ここでは、同じプロパティとして扱われます。

Entity が表すことができるオブジェクトには、5 つのタイプがあります。

  • AWS::Resource – エンティティは、DynamoDB テーブルや Amazon EC2 インスタンスなどの AWS リソースを表します。

  • AWS::Service – エンティティは Amazon S3 などの AWS サービスを表します。例えば、特定の Amazon S3 リソースに関連付けられていない ListBuckets オペレーションを呼び出すときに使用される場合があります。

  • サービス – エンティティは、アカウントで実行されているワークロードを表します。例えば、管理するアプリケーションまたはサービスなどです。

  • リソース – エンティティは、AWS によって管理されていないリソースを表します (例えば、プロセスやファイルボリュームなどのオペレーティングシステムリソースなど)。

  • RemoteService – エンティティは、リモート呼び出しの外部サービスを表します。例えば、データベース、外部キャッシュ、外部エンドポイントへのリモート呼び出しなど。

上記のタイプのうち、表しているタイプによっては、KeyAttributes に正しいキーと値のペアを指定する必要があります。次の内容は、各タイプについて説明します。

AWS::Resource

AWS リソースを指定するには、次の 3 つのキーと値のペアを含める必要があります。

  • "Type": "AWS::Resource" – このキーと値のペアは、エンティティを AWS リソースとして識別します。

  • "ResourceType": "<resource-type>"ResourceType の文字列値は AWS CloudFormation リソースタイプの文字列です。例えば、AWS::DynamoDB::Table

  • "Identifier": "<resource-id>" – リソースのプライマリ識別子。詳細については、「CloudFormation ユーザーガイドの拡張機能開発」の「primaryIdentifier」を参照してください。

AWS::Service

AWS サービスを指定するには、次の 2 つのキーと値のペアを含める必要があります。

  • "Type": "AWS::Service" – このキーと値のペアは、エンティティを AWS サービスとして識別します。

  • "Name": "<service-name>"Name の値は AWS CloudFormation サービス名の文字列です。例えば、AWS::DynamoDB

Service

AWS によって運用されていないサービスを指定するには、次の 3 つのキーと値のペアを含める必要があります。

  • "Type": "Service" – このキーと値のペアは、エンティティをサービスとして識別します。

  • "Name": "<service-name>" – メトリクスを送信しているサービスの名前を表します。例えば、my-service-frontendapi.myservice.com です。

  • "Environment": "<environment-name>" – この属性はサービスがホストされている場所、あるいはサービスが属する環境を指定します。例えば、us-west-2 または myservice.production など。

Resource

AWS によって提供されていないリソースを指定するには、次の 3 つのキーと値のペアを含める必要があります。

  • "Type": "Resource" – このキーと値のペアは、エンティティをリソースとして識別します。

  • "ResourceType": "<resource-type>" – リソースのタイプを指定する文字列。例えば、Kubernetes ポッドの K8s::Pod

  • "Identifier": "<resource-id>" - リソースの文字列識別子。複数の名前を含めて、パイプ文字で区切ることができます。例えば、Kubernetes ポッドは、クラスター名、名前空間、ポッド名 (MyCluster|MyNamespace|MyPod など) で表される場合があります。

RemoteService

リモートサービスを指定するには、次の 2 つのキーと値のペアを含める必要があります。

  • "Type": "RemoteService" – このキーと値のペアは、エンティティをリモートサービスとして識別します。

  • "Name": "<remote-service-name>" – リモート呼び出しでアプリケーションが外部サービスを参照する方法を指定します。例えば、api.test.myservice.com

テレメトリで提供する Entity に関する追加の詳細を指定できます。プラットフォーム、リソース、アプリケーション、テレメトリプロバイダの詳細を含めることができます。次の表には、これらの各タイプのデータに使用できるキーワードが示されています。

注記

CloudWatch API では、プロパティは Attributes と呼ばれます。CloudWatch Logs API では、プロパティは attributes と呼ばれます。ここでは、同じプロパティとして扱われます。

プラットフォームの詳細

キーワード 使用方法 値のドメイン

PlatformType

ホストされたプラットフォームを定義します。

AWS::EKS、AWS::ECS、AWS::EC2、AWS::Lambda、K8s、Generic

AWS::EC2

EKS.Cluster

Amazon EKS クラスターの名前。

基本的な区切り文字を含む英数字の文字列。

FlyingSquad

K8s.Cluster

セルフホスト型 Kubernetes クラスターの名前。

基本的な区切り文字を含む英数字の文字列。

minicube

K8s.Namespace

Amazon EKS または K8s クラスターの Kubernetes 名前空間の名前。

基本的な区切り文字を含む英数字の文字列。

default, pet-clinic

K8s.Workload

Amazon EKS および K8s クラスターの Kubernetes ワークロードの名前。

基本的な区切り文字を含む英数字の文字列。

frontend

K8s.Node

Amazon EKS および K8s クラスターの Kubernetes ノードの ID。

K8s ノード名 (例えば、Amazon EC2 インスタンスの DNS 名など)。

ip-11-22-33-44.ec2.internal

K8s.Pod

Amazon EKS および K8s クラスターの Kubernetes ポッドの ID。

K8s ポッド識別子。

frontend-1234abcd56-ef7890

EC2.AutoScalingGroup

Amazon EC2 AutoScaling グループの名前。

基本的な区切り文字を含む英数字の文字列。

my-asg-name-1

EC2.InstanceId

Amazon EC2 インスタンスの ID。

Amazon EC2 インスタンス識別子。

i-1234abcd5678ef90

ECS.Cluster

Amazon ECS クラスターの ID。

Amazon ECS クラスター名。

MyCluster

ECS.Service

Amazon ECS サービスの ID。

Amazon ECS サービス名。

MyService

ECS.Task

Amazon ECS タスクの ID。

Amazon ECS タスク ID。

task-123abc

Lambda.Function

Lambda 関数の ID。

Lambda 関数の名前。

MyFunction

Host

すべてのプラットフォームタイプにおけるホストの名前。

サブドメイン形式。

ip-111-22-33-44.example.com

リソースの詳細

キーワード 使用方法 値のドメイン

AWS.Resource.ARN

AWS リソースの ARN。

基本的な区切り文字を含む英数字の文字列。

arn:aws:dynamodb:us-east-1:123456789012:table/myDynamoDBTable

アプリケーションの詳細

キーワード 使用方法 値のドメイン

AWS.Application

AppRegistry のアプリケーションの名前。

基本的な区切り文字を含む英数字の文字列。

PetClinicApp

AWS.Application.ARN

AppRegistry のアプリケーションの ARN。

基本的な区切り文字を含む英数字の文字列。

arn:aws:servicecatalog:us-east-1:1234567890:/applications/...

テレメトリプロバイダーの詳細

キーワード 使用方法 値のドメイン

Telemetry.SDK

計測されたサービスの OTEL SDK バージョンのフィンガープリント。

基本的な区切り文字を含む英数字の文字列。

opentelemetry,1.32.0-aws-SNAPSHOT,java,Auto

Telemetry.Agent

テレメトリデータの収集および送信に使用されるエージェントのフィンガープリント。

基本的な区切り文字を含む英数字の文字列。

CWAgent/1.300026.3, ADOTCollector/1.x

Telemetry.Source

テレメトリが収集されたアプリケーションポイント、あるいはテレメトリデータのソースに使用されたものを指定します。

ServerSpan、ClientSpan、ProducerSpan、ConsumerSpan、LocalRoot Span、JMX、OS。

ClientSpan, JMX