概要 Datadog は、インスツルメンテーションが実行されたサービスについて、データベース、キュー、サードパーティ API などの依存先のインスツルメンテーションが実行されていない場合でも、その依存関係を自動的に検出します。Datadog は、インスツルメンテーションが実行されたサービスからのアウトバウンドリクエストを分析して、これらの依存関係の存在を推測し、関連するパフォーマンスメトリクスを収集します。
データベース、キュー、サードパーティ API などのエンティティタイプでエントリを絞り込んで、Catalog 内の推測サービスを調べます。各サービス詳細画面 は、調査しているサービスの種類に合わせてカスタマイズされています。たとえば、データベースのサービス詳細画面には、データベース固有のインサイトが表示され、Database Monitoring を使用している場合は、データベースの監視データも含まれます。
推測サービスの設定 Datadog Agent バージョン 7.60.0 以降では、推測サービスを表示するために手動の構成は必要ありません。必要な構成である apm_config.compute_stats_by_span_kind および apm_config.peer_tags_aggregation は、デフォルトで有効になっています。
Datadog Agent バージョン 7.55.1 から 7.59.1 の場合は、以下の内容を datadog.yaml 構成ファイルに追加します。
Copy
apm_config :
compute_stats_by_span_kind : true
peer_tags_aggregation : true または、Datadog Agent 構成で、以下の環境変数を設定します。
Copy
DD_APM_COMPUTE_STATS_BY_SPAN_KIND=true
DD_APM_PEER_TAGS_AGGREGATION=true Helm を使用している場合は、これらの環境変数を values.yaml ファイル に追加します。
Datadog Agent バージョン 7.50.3 から 7.54.1 の場合は、以下の内容を datadog.yaml 構成ファイルに追加します。
Copy
apm_config :
compute_stats_by_span_kind : true
peer_tags_aggregation : true
peer_tags : [ "_dd.base_service" , "amqp.destination" , "amqp.exchange" , "amqp.queue" , "aws.queue.name" , "aws.s3.bucket" , "bucketname" , "cassandra.keyspace" , "db.cassandra.contact.points" , "db.couchbase.seed.nodes" , "db.hostname" , "db.instance" , "db.name" , "db.namespace" , "db.system" , "grpc.host" , "hostname" , "http.host" , "http.server_name" , "messaging.destination" , "messaging.destination.name" , "messaging.kafka.bootstrap.servers" , "messaging.rabbitmq.exchange" , "messaging.system" , "mongodb.db" , "msmq.queue.path" , "net.peer.name" , "network.destination.name" , "peer.hostname" , "peer.service" , "queuename" , "rpc.service" , "rpc.system" , "server.address" , "streamname" , "tablename" , "topicname" ] または、Datadog Agent 構成で、以下の環境変数を設定します。
Copy
DD_APM_COMPUTE_STATS_BY_SPAN_KIND=true
DD_APM_PEER_TAGS_AGGREGATION=true
DD_APM_PEER_TAGS='["_dd.base_service","amqp.destination","amqp.exchange","amqp.queue","aws.queue.name","aws.s3.bucket","bucketname","cassandra.keyspace","db.cassandra.contact.points","db.couchbase.seed.nodes","db.hostname","db.instance","db.name","db.namespace","db.system","grpc.host","hostname","http.host","http.server_name","messaging.destination","messaging.destination.name","messaging.kafka.bootstrap.servers","messaging.rabbitmq.exchange","messaging.system","mongodb.db","msmq.queue.path","net.peer.name","network.destination.name","peer.hostname","peer.service","queuename","rpc.service","rpc.system","server.address","streamname","tablename","topicname"]' Helm を使用している場合は、これらの環境変数を values.yaml ファイル に追加します。
OpenTelemetry コレクターの場合、推奨される最小バージョンは opentelemetry-collector-contrib v0.95.0 以降です。この場合、次の構成を更新します。
Copy
connectors :
datadog/connector :
traces :
compute_stats_by_span_kind : true
peer_tags_aggregation : true
peer_tags : [ "_dd.base_service" , "amqp.destination" , "amqp.exchange" , "amqp.queue" , "aws.queue.name" , "aws.s3.bucket" , "bucketname" , "db.cassandra.contact.points" , "db.couchbase.seed.nodes" , "db.hostname" , "db.instance" , "db.name" , "db.namespace" , "db.system" , "grpc.host" , "hostname" , "http.host" , "http.server_name" , "messaging.destination" , "messaging.destination.name" , "messaging.kafka.bootstrap.servers" , "messaging.rabbitmq.exchange" , "messaging.system" , "mongodb.db" , "msmq.queue.path" , "net.peer.name" , "network.destination.name" , "peer.hostname" , "peer.service" , "queuename" , "rpc.service" , "rpc.system" , "server.address" , "streamname" , "tablename" , "topicname" ] コレクターのバージョンが v0.95.0 未満の場合、次の構成を更新します。
Copy
exporters :
datadog :
traces :
compute_stats_by_span_kind : true
peer_tags_aggregation : true
peer_tags : [ "_dd.base_service" , "amqp.destination" , "amqp.exchange" , "amqp.queue" , "aws.queue.name" , "aws.s3.bucket" , "bucketname" , "db.cassandra.contact.points" , "db.couchbase.seed.nodes" , "db.hostname" , "db.instance" , "db.name" , "db.namespace" , "db.system" , "grpc.host" , "hostname" , "http.host" , "http.server_name" , "messaging.destination" , "messaging.destination.name" , "messaging.kafka.bootstrap.servers" , "messaging.rabbitmq.exchange" , "messaging.system" , "mongodb.db" , "msmq.queue.path" , "net.peer.name" , "network.destination.name" , "peer.hostname" , "peer.service" , "queuename" , "rpc.service" , "rpc.system" , "server.address" , "streamname" , "tablename" , "topicname" ] 例 : collector.yaml
推測エンティティの命名 Datadog では、推測されるサービス依存関係の名前とタイプを決定するために、標準のスパン属性を使用し、peer.* 属性にマッピングします。たとえば、推測された外部 API は、デフォルトの命名規則である net.peer.name を使用します (例: api.stripe.com、api.twilio.com、us6.api.mailchimp.com)。推測されたデータベースでは、デフォルトの命名規則である db.instance が使用されます。名前変更ルール を作成することで、推測されたエンティティの名前を変更できます。
ピアタグ ソース属性 peer.aws.dynamodb.tabletablenamepeer.aws.kinesis.streamstreamnamepeer.aws.s3.bucketbucketname、aws.s3.bucketpeer.aws.sqs.queuequeuenamepeer.cassandra.contact.pointsdb.cassandra.contact.pointspeer.couchbase.seed.nodesdb.couchbase.seed.nodespeer.db.namedb.name、mongodb.db、db.instance、cassandra.keyspace、db.namespacepeer.db.systemdb.systempeer.hostnamepeer.hostname、hostname、net.peer.name、db.hostname、network.destination.name、grpc.host、http.host、server.address、http.server_namepeer.kafka.bootstrap.serversmessaging.kafka.bootstrap.serverspeer.messaging.destinationtopicname、messaging.destination、messaging.destination.name、messaging.rabbitmq.exchange、amqp.destination、amqp.queue、amqp.exchange、msmq.queue.path、aws.queue.namepeer.messaging.systemmessaging.systempeer.rpc.servicerpc.servicepeer.rpc.systemrpc.systempeer.servicepeer.service
注 : IP アドレス形式に一致するピア属性値は、不要なノイズを防ぎ、値の多いディメンションでメトリクスがタグ付けされることを避けるために、blocked-ip-address に変更されます。その結果、インスツルメンテーション済みのサービスの下流の依存関係として、blocked-ip-address サービスが表示される場合があります。
エンティティが複数のタグの組み合わせで定義されている場合、Datadog はピアタグ間の優先順位を使用して、推測されたエンティティに名前を割り当てます。
エンティティタイプ 優先順位 データベース peer.db.name > peer.aws.s3.bucket (AWS S3) / peer.aws.dynamodb.table (AWS DynamoDB) / peer.cassandra.contact.points (Cassandra) / peer.couchbase.seed.nodes (Couchbase) > peer.hostname > peer.db.systemキュー peer.messaging.destination > peer.kafka.bootstrap.servers (Kafka) / peer.aws.sqs.queue (AWS SQS) / peer.aws.kinesis.stream (AWS Kinesis) > peer.messaging.system推測サービス peer.service > peer.rpc.service > peer.hostname
peer.db.name のような優先順位が最も高いタグがインスツルメンテーションでキャプチャされない場合、Datadog は 2 番目に優先度の高いタグ (peer.hostname など) を使用します。以降も同様です。
注 : Datadogは、推測されたデータベースとキューに peer.service を設定しません。peer.service は最も優先度の高いピア属性です。設定されている場合、他のすべての属性よりも優先されます。
グローバルなデフォルトサービス名への移行 推測サービスでは、既存のスパン属性からサービスの依存関係が自動的に検出されます。そのため、これらの依存関係を識別するために、(service タグを使用して) サービス名を変更する必要はありません。
DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED を有効にして、デフォルトのグローバルサービス名とは異なるサービス名が Datadog インテグレーションによって設定されないようにします。これにより、サポート対象のすべての SDK 言語とインテグレーションで、サービス間の関係と推測サービスがわかりやすく表示されるようにもなります。
このオプションを有効にすると、古いサービス名を参照する既存の APM メトリクス、カスタムスパンメトリクス、トレース分析、保持フィルター、機密データスキャン、モニター、ダッシュボード、ノートブックに影響する可能性があります。グローバルなデフォルトサービスタグ (service:<DD_SERVICE>) を使用するようにこれらのアセットを更新してください。
サービスオーバーライドを削除して、推測サービスに移行する方法については、サービスオーバーライドガイド を参照してください。
お客様のデータセンターでは、デフォルトで推測サービス機能を利用できません。アクセスをリクエストするには、この
フォーム に記入してください。
参考資料