diff --git a/docs/entities/synthesis.md b/docs/entities/synthesis.md index adaedf354..38723475d 100644 --- a/docs/entities/synthesis.md +++ b/docs/entities/synthesis.md @@ -181,6 +181,18 @@ synthesis: You can also change the name of the tag to another value, rather than using the name in the attribute. In general, we suggest not to use this configuration unless you are trying to use more standard namings, since sometimes it's difficult for the user to see the difference between entity tags and telemetry attributes, and changing the names could cause even more confusion. +This is the relevant syntax: +```yaml +synthesis: + rules: + - identifier: someIdAttribute + name: someNameAttribute + tags: + originalAttributeName: + entityTagNames: [desiredTagName1, desiredTagName2] +``` +The above example will result in an entity having two tags, `desiredTagName1` and `desiredTagName2`, with the value present in the `originalAttributeName` attribute from the processed data point. + A good use case for this feature is `CONTAINER`: A container has different sources (docker, kubernetes, etc.), and we rename the tags to use a standard naming and a "per source" name. ```yaml diff --git a/entity-types/apm-application/golden_metrics.yml b/entity-types/apm-application/golden_metrics.yml index 60f1dd4e8..28d1fb7e1 100644 --- a/entity-types/apm-application/golden_metrics.yml +++ b/entity-types/apm-application/golden_metrics.yml @@ -1,5 +1,5 @@ responseTimeMs: - title: Response time (ms) + title: Response time unit: MS query: select: average(apm.service.transaction.duration) * 1000 AS 'Response time (ms)' diff --git a/entity-types/autoflows-workflow/definition.yml b/entity-types/autoflows-workflow/definition.yml new file mode 100644 index 000000000..2a7b078fc --- /dev/null +++ b/entity-types/autoflows-workflow/definition.yml @@ -0,0 +1,6 @@ +domain: AUTOFLOWS +type: WORKFLOW + +configuration: + entityExpirationTime: MANUAL + alertable: true \ No newline at end of file diff --git a/entity-types/ext-nvidia_jetson/definition.yml b/entity-types/ext-nvidia_jetson/definition.yml index ad6753591..77ceef9b0 100644 --- a/entity-types/ext-nvidia_jetson/definition.yml +++ b/entity-types/ext-nvidia_jetson/definition.yml @@ -8,8 +8,6 @@ synthesis: conditions: - attribute: eventType value: jetsonTegrastats - - attribute: metricName - value: "ram_used" tags: agentVersion: entityTagName: newrelic.agentVersion diff --git a/entity-types/ext-service/golden_metrics.yml b/entity-types/ext-service/golden_metrics.yml index 56139736f..5e2d15739 100644 --- a/entity-types/ext-service/golden_metrics.yml +++ b/entity-types/ext-service/golden_metrics.yml @@ -1,5 +1,5 @@ throughput: - title: Throughput (rpm) + title: Throughput unit: REQUESTS_PER_MINUTE queries: opentelemetry: @@ -19,7 +19,7 @@ throughput: select: rate(count(http.server.duration), 1 minute) from: Metric errorRate: - title: Error rate (%) + title: Error rate unit: PERCENTAGE queries: opentelemetry: @@ -39,7 +39,7 @@ errorRate: select: (filter(count(http.server.duration), where numeric(http.status_code) >= 400 AND numeric(http.status_code) != 404) * 100) / count(http.server.duration) from: Metric responseTimeMs: - title: Response time (ms) + title: Response time unit: MS queries: opentelemetry: diff --git a/entity-types/infra-awsalb/definition.yml b/entity-types/infra-awsalb/definition.yml index f08a6bbd8..c5d0c1282 100644 --- a/entity-types/infra-awsalb/definition.yml +++ b/entity-types/infra-awsalb/definition.yml @@ -17,3 +17,32 @@ goldenTags: configuration: entityExpirationTime: DAILY alertable: true + +synthesis: + rules: + # Legacy API Polling entities not using the ARN to compute the entity.guid, but directly providing the entityId + - identifier: entityId + name: aws.alb.loadBalancer + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: entityId + present: true + tags: + aws.Arn: + # Metrics Streams and API Polling entities using the ARN to compute the entity.guid + - identifier: aws.Arn + name: aws.alb.loadBalancer + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: entityId + present: false + tags: + aws.Arn: \ No newline at end of file diff --git a/entity-types/infra-awscloudfrontdistribution/definition.yml b/entity-types/infra-awscloudfrontdistribution/definition.yml index a28434188..7c4698538 100644 --- a/entity-types/infra-awscloudfrontdistribution/definition.yml +++ b/entity-types/infra-awscloudfrontdistribution/definition.yml @@ -8,3 +8,38 @@ goldenTags: configuration: entityExpirationTime: DAILY alertable: true + +synthesis: + rules: + # Legacy API Polling entities not using the ARN to compute the entity.guid, but directly providing the entityId + - identifier: entityId + name: aws.cloudfront.DistributionId + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.cloudfront.DistributionId + present: true + - attribute: entityId + present: true + tags: + aws.Arn: + aws.cloudfront.DistributionId: + # Metrics Streams and API Polling entities using the ARN to compute the entity.guid + - identifier: aws.Arn + name: aws.cloudfront.DistributionId + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.cloudfront.DistributionId + present: true + - attribute: entityId + present: false + tags: + aws.Arn: + aws.cloudfront.DistributionId: \ No newline at end of file diff --git a/entity-types/infra-awselb/definition.yml b/entity-types/infra-awselb/definition.yml index fb056adba..f33df6c6d 100644 --- a/entity-types/infra-awselb/definition.yml +++ b/entity-types/infra-awselb/definition.yml @@ -9,3 +9,36 @@ goldenTags: configuration: entityExpirationTime: DAILY alertable: true + +synthesis: + rules: + # Legacy API Polling entities not using the ARN to compute the entity.guid, but directly providing the entityId + - identifier: entityId + name: aws.elb.loadBalancer + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: entityId + present: true + tags: + aws.Arn: + aws.elb.loadBalancer: + entityTagNames: [ aws.elb.LoadBalancerName ] + # Metrics Streams and API Polling entities using the ARN to compute the entity.guid + - identifier: aws.Arn + name: aws.elb.loadBalancer + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: entityId + present: false + tags: + aws.Arn: + aws.elb.loadBalancer: + entityTagNames: [ aws.elb.LoadBalancerName ] \ No newline at end of file diff --git a/entity-types/infra-awslambdafunction/definition.yml b/entity-types/infra-awslambdafunction/definition.yml index c57670f11..2d2795c3c 100644 --- a/entity-types/infra-awslambdafunction/definition.yml +++ b/entity-types/infra-awslambdafunction/definition.yml @@ -16,3 +16,40 @@ goldenTags: configuration: entityExpirationTime: DAILY alertable: true + +synthesis: + rules: + # Legacy API Polling entities not using the ARN to compute the entity.guid, but directly providing the entityId + - identifier: entityId + name: aws.lambda.FunctionName + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.lambda.FunctionName + present: true + - attribute: entityId + present: true + tags: + aws.Arn: + # Used in AWSLAMBDAFUNCTION.yml for entity relationship candidates + aws.lambda.FunctionName: + # Metrics Streams and API Polling entities using the ARN to compute the entity.guid + - identifier: aws.Arn + name: aws.lambda.FunctionName + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.lambda.FunctionName + present: true + - attribute: entityId + present: false + tags: + aws.Arn: + # Used in AWSLAMBDAFUNCTION.yml for entity relationship candidates + aws.lambda.FunctionName: \ No newline at end of file diff --git a/entity-types/infra-awsmemorydbcluster/golden_metrics.yml b/entity-types/infra-awsmemorydbcluster/golden_metrics.yml index 88cb54c62..9f9bea43e 100644 --- a/entity-types/infra-awsmemorydbcluster/golden_metrics.yml +++ b/entity-types/infra-awsmemorydbcluster/golden_metrics.yml @@ -3,7 +3,7 @@ bytesUsedForMemoryDb: unit: BYTES queries: aws: - select: latest(aws.memorydb.BytesUsedForMemoryDB) + select: average(aws.memorydb.BytesUsedForMemoryDB) from: Metric eventId: entity.guid eventName: entity.name @@ -12,7 +12,7 @@ networkPacketsPerSecondAllowanceExceeded: unit: COUNT queries: aws: - select: latest(aws.memorydb.NetworkPacketsPerSecondAllowanceExceeded) + select: average(aws.memorydb.NetworkPacketsPerSecondAllowanceExceeded) from: Metric eventId: entity.guid eventName: entity.name @@ -21,7 +21,7 @@ networkBandwidthOutAllowanceExceeded: unit: COUNT queries: aws: - select: latest(aws.memorydb.NetworkBandwidthOutAllowanceExceeded) + select: average(aws.memorydb.NetworkBandwidthOutAllowanceExceeded) from: Metric eventId: entity.guid eventName: entity.name @@ -30,7 +30,7 @@ engineCpuUtilization: unit: PERCENTAGE queries: aws: - select: latest(aws.memorydb.EngineCPUUtilization) + select: average(aws.memorydb.EngineCPUUtilization) from: Metric eventId: entity.guid eventName: entity.name @@ -39,7 +39,7 @@ replicationBytes: unit: BYTES queries: aws: - select: latest(aws.memorydb.ReplicationBytes) + select: average(aws.memorydb.ReplicationBytes) from: Metric eventId: entity.guid eventName: entity.name @@ -48,7 +48,7 @@ networkConntrackAllowanceExceeded: unit: COUNT queries: aws: - select: latest(aws.memorydb.NetworkConntrackAllowanceExceeded) + select: average(aws.memorydb.NetworkConntrackAllowanceExceeded) from: Metric eventId: entity.guid eventName: entity.name @@ -57,7 +57,7 @@ replicationLag: unit: SECONDS queries: aws: - select: latest(aws.memorydb.ReplicationLag) + select: average(aws.memorydb.ReplicationLag) from: Metric eventId: entity.guid eventName: entity.name @@ -66,7 +66,7 @@ networkBytesIn: unit: BYTES queries: aws: - select: latest(aws.memorydb.NetworkBytesIn) + select: average(aws.memorydb.NetworkBytesIn) from: Metric eventId: entity.guid eventName: entity.name @@ -75,7 +75,7 @@ replicationDelayedWriteCommands: unit: COUNT queries: aws: - select: latest(aws.memorydb.ReplicationDelayedWriteCommands) + select: average(aws.memorydb.ReplicationDelayedWriteCommands) from: Metric eventId: entity.guid eventName: entity.name @@ -84,7 +84,7 @@ databaseMemoryUsagePercentage: unit: PERCENTAGE queries: aws: - select: latest(aws.memorydb.DatabaseMemoryUsagePercentage) + select: average(aws.memorydb.DatabaseMemoryUsagePercentage) from: Metric eventId: entity.guid eventName: entity.name diff --git a/entity-types/infra-awsnlb/definition.yml b/entity-types/infra-awsnlb/definition.yml index a380dbf30..790876e86 100644 --- a/entity-types/infra-awsnlb/definition.yml +++ b/entity-types/infra-awsnlb/definition.yml @@ -16,3 +16,32 @@ goldenTags: configuration: entityExpirationTime: DAILY alertable: true + +synthesis: + rules: + # Legacy API Polling entities not using the ARN to compute the entity.guid, but directly providing the entityId + - identifier: entityId + name: aws.nlb.loadBalancer + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: entityId + present: true + tags: + aws.Arn: + # Metrics Streams and API Polling entities using the ARN to compute the entity.guid + - identifier: aws.Arn + name: aws.nlb.loadBalancer + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: entityId + present: false + tags: + aws.Arn: \ No newline at end of file diff --git a/entity-types/infra-awsrdsdbinstance/definition.yml b/entity-types/infra-awsrdsdbinstance/definition.yml index a40306796..7a050c2e0 100644 --- a/entity-types/infra-awsrdsdbinstance/definition.yml +++ b/entity-types/infra-awsrdsdbinstance/definition.yml @@ -6,3 +6,38 @@ goldenTags: configuration: entityExpirationTime: DAILY alertable: true + +synthesis: + rules: + # Legacy API Polling entities not using the ARN to compute the entity.guid, but directly providing the entityId + - identifier: entityId + name: aws.rds.DBInstanceIdentifier + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.rds.DBInstanceIdentifier + present: true + - attribute: aws.Arn + present: true + - attribute: entityId + present: true + tags: + aws.Arn: + aws.rds.DBInstanceIdentifier: + # Metrics Streams and API Polling entities using the ARN to compute the entity.guid + - identifier: aws.Arn + name: aws.rds.DBInstanceIdentifier + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.rds.DBInstanceIdentifier + present: true + - attribute: entityId + present: false + tags: + aws.Arn: + aws.rds.DBInstanceIdentifier: \ No newline at end of file diff --git a/entity-types/infra-awss3bucket/definition.yml b/entity-types/infra-awss3bucket/definition.yml index aaf936b79..34fdd9741 100644 --- a/entity-types/infra-awss3bucket/definition.yml +++ b/entity-types/infra-awss3bucket/definition.yml @@ -13,3 +13,42 @@ dashboardTemplates: configuration: entityExpirationTime: DAILY alertable: true + +synthesis: + rules: + # Legacy API Polling entities not using the ARN to compute the entity.guid, but directly providing the entityId + - identifier: entityId + name: aws.s3.BucketName + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.s3.BucketName + present: true + - attribute: entityId + present: true + tags: + # Used in AWSS3BUCKET.yml for entity relationship candidates + aws.Arn: + # Used in AWSS3BUCKET.yml for entity relationship candidates + aws.s3.BucketName: + # Metrics Streams and API Polling entities using the ARN to compute the entity.guid + - identifier: aws.Arn + name: aws.s3.BucketName + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.s3.BucketName + present: true + - attribute: entityId + present: false + tags: + # Used in AWSS3BUCKET.yml for entity relationship candidates + aws.Arn: + # Used in AWSS3BUCKET.yml for entity relationship candidates + aws.s3.BucketName: \ No newline at end of file diff --git a/entity-types/infra-awssqsqueue/definition.yml b/entity-types/infra-awssqsqueue/definition.yml index 9ae7dc18d..bd8e05609 100644 --- a/entity-types/infra-awssqsqueue/definition.yml +++ b/entity-types/infra-awssqsqueue/definition.yml @@ -8,3 +8,54 @@ goldenTags: configuration: entityExpirationTime: DAILY alertable: true + +synthesis: + rules: + # Legacy API Polling entities not using the ARN to compute the entity.guid, but directly providing the entityId + - identifier: entityId + name: aws.sqs.QueueName + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.sqs.QueueName + present: true + - attribute: entityId + present: true + tags: + aws.Arn: + aws.sqs.queueUrl: + # Used in AWSSQSQUEUE.yml for entity relationship candidates + aws.sqs.QueueName: + # Used in AWSSQSQUEUE.yml for entity relationship candidates + recipientAccountId: + entityTagNames: [ aws.accountId ] + # Used in AWSSQSQUEUE.yml for entity relationship candidates + awsRegion: + entityTagNames: [ aws.region ] + # Metrics Streams and API Polling entities using the ARN to compute the entity.guid + - identifier: aws.Arn + name: aws.sqs.QueueName + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.sqs.QueueName + present: true + - attribute: entityId + present: false + tags: + aws.Arn: + aws.sqs.queueUrl: + # Used in AWSSQSQUEUE.yml for entity relationship candidates + aws.sqs.QueueName: + # Used in AWSSQSQUEUE.yml for entity relationship candidates + recipientAccountId: + entityTagNames: [ aws.accountId ] + # Used in AWSSQSQUEUE.yml for entity relationship candidates + awsRegion: + entityTagNames: [ aws.region ] \ No newline at end of file diff --git a/entity-types/infra-host/definition.yml b/entity-types/infra-host/definition.yml index 7876bd3cc..2983b86f3 100644 --- a/entity-types/infra-host/definition.yml +++ b/entity-types/infra-host/definition.yml @@ -22,12 +22,14 @@ goldenTags: synthesis: rules: # opentelemetry host data from k8s-otel-collector - - identifier: host.id - name: host.name + - identifier: k8s.node.name + name: k8s.node.name legacyFeatures: overrideGuidType: true encodeIdentifierInGUID: true conditions: + - attribute: k8s.node.name + present: true - attribute: eventType value: Metric - attribute: metricName @@ -47,8 +49,6 @@ synthesis: cloud.region: cloud.availability_zone: cloud.platform: - host.id: - host.name: host.type: host.arch: host.image.name: @@ -291,6 +291,42 @@ synthesis: nodename: entityTagNames: [hostname] instrumentation.provider: + # AWS EC2 host synthesized via ElasticBeanstalk logs + # Legacy API Polling entities not using the ARN to compute the entity.guid, but directly providing the entityId + - identifier: entityId + name: aws.ec2.InstanceId + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.ec2.InstanceId + present: true + - attribute: entityId + present: true + tags: + aws.Arn: + # Used in AWSEC2.yml for entity relationship candidates + aws.ec2.InstanceId: + # AWS EC2 host synthesized via ElasticBeanstalk logs + # Metrics Streams and API Polling entities using the ARN to compute the entity.guid + - identifier: aws.Arn + name: aws.ec2.InstanceId + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + prefix: Log + - attribute: aws.Arn + present: true + - attribute: aws.ec2.InstanceId + present: true + - attribute: entityId + present: false + tags: + aws.Arn: + # Used in AWSEC2.yml for entity relationship candidates + aws.ec2.InstanceId: configuration: entityExpirationTime: EIGHT_DAYS alertable: true diff --git a/entity-types/infra-host/tests/Metric.json b/entity-types/infra-host/tests/Metric.json index 56bbc9756..7fd16c582 100644 --- a/entity-types/infra-host/tests/Metric.json +++ b/entity-types/infra-host/tests/Metric.json @@ -42,5 +42,12 @@ "newrelic.source": "api.metrics.otlp", "container.id": "abc123def4567890abc123def4567890abc123def4567890abc123def4567890", "newrelic.entity.type": "host" + }, + { + "host.id": "nr-k8s-otel-collector-daemonset-wq4pn", + "host.name": "nr-k8s-otel-collector-daemonset-wq4pn", + "metricName": "system.cpu.utilization", + "newrelic.source": "api.metrics.otlp", + "k8s.node.name": "gke-cs-test-incident-default-pool-46b18d3c-4ftd" } ] diff --git a/entity-types/media_streaming-video/definition.yml b/entity-types/media_streaming-video/definition.yml new file mode 100644 index 000000000..124ef6ba4 --- /dev/null +++ b/entity-types/media_streaming-video/definition.yml @@ -0,0 +1,28 @@ +domain: MEDIA_STREAMING +type: VIDEO +synthesis: + rules: + # telemetry with Video* eventType + - identifier: appName + name: appName + encodeIdentifierInGUID: false + conditions: + - attribute: eventType + prefix: Video + tags: + playerName: + playerVersion: + deviceType: + deviceGroup: + deviceManufacturer: + deviceModel: +goldenTags: + - playerName + - playerVersion + - deviceType + - deviceGroup + - deviceManufacturer + - deviceModel +configuration: + alertable: true + entityExpirationTime: EIGHT_DAYS diff --git a/entity-types/ngep-application_settings/definition.yml b/entity-types/ngep-application_settings/definition.yml new file mode 100644 index 000000000..0e04bd3b2 --- /dev/null +++ b/entity-types/ngep-application_settings/definition.yml @@ -0,0 +1,8 @@ +# APM Configuration Settings Entity Definition + +domain: NGEP +type: APPLICATION_SETTINGS + +configuration: + entityExpirationTime: MANUAL + alertable: true \ No newline at end of file diff --git a/entity-types/ngep-collection/definition.yml b/entity-types/ngep-collection/definition.yml new file mode 100644 index 000000000..dca99c073 --- /dev/null +++ b/entity-types/ngep-collection/definition.yml @@ -0,0 +1,6 @@ +domain: NGEP +type: COLLECTION + +configuration: + entityExpirationTime: MANUAL + alertable: false diff --git a/entity-types/ngep-scorecard/definition.yml b/entity-types/ngep-scorecard/definition.yml new file mode 100644 index 000000000..ab22a4e22 --- /dev/null +++ b/entity-types/ngep-scorecard/definition.yml @@ -0,0 +1,6 @@ +domain: NGEP +type: SCORECARD + +configuration: + entityExpirationTime: MANUAL + alertable: false diff --git a/entity-types/ngep-scorecard_rule/definition.yml b/entity-types/ngep-scorecard_rule/definition.yml new file mode 100644 index 000000000..4ec286f5c --- /dev/null +++ b/entity-types/ngep-scorecard_rule/definition.yml @@ -0,0 +1,6 @@ +domain: NGEP +type: SCORECARD_RULE + +configuration: + entityExpirationTime: MANUAL + alertable: false diff --git a/relationships/candidates/AWSKINESISDELIVERYSTREAM.yml b/relationships/candidates/AWSKINESISDELIVERYSTREAM.yml new file mode 100644 index 000000000..e88d0fc34 --- /dev/null +++ b/relationships/candidates/AWSKINESISDELIVERYSTREAM.yml @@ -0,0 +1,16 @@ +category: AWSKINESISDELIVERYSTREAM +lookups: + - entityTypes: + - domain: INFRA + type: AWSKINESISDELIVERYSTREAM + tags: + matchingMode: ALL + predicates: + - tagKeys: ["aws.Arn", "aws.arn"] + field: cloudResourceId + onMatch: + onMultipleMatches: RELATE_ALL + onMiss: + action: CREATE_UNINSTRUMENTED + uninstrumented: + type: AWSKINESISDELIVERYSTREAM \ No newline at end of file diff --git a/relationships/candidates/AWSKINESISSTREAM.yml b/relationships/candidates/AWSKINESISSTREAM.yml new file mode 100644 index 000000000..dce5463c9 --- /dev/null +++ b/relationships/candidates/AWSKINESISSTREAM.yml @@ -0,0 +1,16 @@ +category: AWSKINESISSTREAM +lookups: + - entityTypes: + - domain: INFRA + type: AWSKINESISSTREAM + tags: + matchingMode: ALL + predicates: + - tagKeys: ["aws.Arn"] + field: cloudResourceId + onMatch: + onMultipleMatches: RELATE_ALL + onMiss: + action: CREATE_UNINSTRUMENTED + uninstrumented: + type: AWSKINESISSTREAM \ No newline at end of file diff --git a/relationships/candidates/CONTAINER.yml b/relationships/candidates/CONTAINER.yml index b3ec1f6ea..b26192951 100644 --- a/relationships/candidates/CONTAINER.yml +++ b/relationships/candidates/CONTAINER.yml @@ -14,23 +14,3 @@ lookups: action: CREATE_UNINSTRUMENTED uninstrumented: type: CONTAINER - - entityTypes: - - domain: INFRA - type: CONTAINER - tags: - matchingMode: ALL - predicates: - - tagKeys: [ "k8s.clusterName" ] - field: k8sClusterName - - tagKeys: [ "k8s.namespaceName" ] - field: k8sNamespaceName - - tagKeys: [ "k8s.podName" ] - field: k8sPodName - - tagKeys: [ "k8s.containerName" ] - field: k8sContainerName - onMatch: - onMultipleMatches: RELATE_ALL - onMiss: - action: CREATE_UNINSTRUMENTED - uninstrumented: - type: CONTAINER diff --git a/relationships/synthesis/APM-APPLICATION-to-INFRA-AWSELASTICSEARCHCLUSTER.yml b/relationships/synthesis/APM-APPLICATION-to-INFRA-AWSELASTICSEARCHCLUSTER.yml index 0ebddaebe..4f326b6d5 100644 --- a/relationships/synthesis/APM-APPLICATION-to-INFRA-AWSELASTICSEARCHCLUSTER.yml +++ b/relationships/synthesis/APM-APPLICATION-to-INFRA-AWSELASTICSEARCHCLUSTER.yml @@ -19,4 +19,4 @@ relationships: candidateCategory: AWSELASTICSEARCHCLUSTER fields: - field: endpoint - attribute: server.address \ No newline at end of file + attribute: server.address diff --git a/relationships/synthesis/APM-APPLICATION-to-INFRA-KINESISSTREAM.yml b/relationships/synthesis/APM-APPLICATION-to-INFRA-KINESISSTREAM.yml new file mode 100644 index 000000000..a7e291d4e --- /dev/null +++ b/relationships/synthesis/APM-APPLICATION-to-INFRA-KINESISSTREAM.yml @@ -0,0 +1,24 @@ +relationships: + - name: apmServiceCallsInfraKinesisStream + version: "1" + origins: + - Distributed Tracing + conditions: + - attribute: eventType + anyOf: [ "Span" ] + - attribute: cloud.platform + anyOf: [ "aws_kinesis_data_streams"] + - attribute: cloud.resource_id + regex: "^arn:aws:kinesis:([^:]*):([^:]*):stream\/([^:]*)" + relationship: + expires: P75M + relationshipType: CALLS + source: + extractGuid: + attribute: entity.guid + target: + lookupGuid: + candidateCategory: AWSKINESISSTREAM + fields: + - field: cloudResourceId + attribute: cloud.resource_id \ No newline at end of file diff --git a/relationships/synthesis/APM-APPLICATION-to-INFRA-MQBROKER.yml b/relationships/synthesis/APM-APPLICATION-to-INFRA-MQBROKER.yml index 8158cfefe..a59b3c05c 100644 --- a/relationships/synthesis/APM-APPLICATION-to-INFRA-MQBROKER.yml +++ b/relationships/synthesis/APM-APPLICATION-to-INFRA-MQBROKER.yml @@ -21,7 +21,7 @@ relationships: - field: endpoint attribute: server.address - - name: apmConsumesAwsMqTopic + - name: apmConsumesAwsMqBroker version: "1" origins: - Distributed Tracing @@ -41,4 +41,26 @@ relationships: candidateCategory: AWSMQBROKER fields: - field: endpoint - attribute: server.address \ No newline at end of file + attribute: server.address + + - name: apmCallsAwsMqBroker + version: "1" + origins: + - Distributed Tracing + conditions: + - attribute: eventType + anyOf: [ "Span" ] + - attribute: name + regex: "OtherTransaction/Message/[^/]*/[^/]*" + relationship: + expires: P75M + relationshipType: CALLS + source: + extractGuid: + attribute: entity.guid + target: + lookupGuid: + candidateCategory: AWSMQBROKER + fields: + - field: endpoint + attribute: server.address \ No newline at end of file diff --git a/relationships/synthesis/EXT-SERVICE-to-INFRA-AWSELASTICSEARCHCLUSTER.yml b/relationships/synthesis/EXT-SERVICE-to-INFRA-AWSELASTICSEARCHCLUSTER.yml index f840d7e52..bf0ef7b87 100644 --- a/relationships/synthesis/EXT-SERVICE-to-INFRA-AWSELASTICSEARCHCLUSTER.yml +++ b/relationships/synthesis/EXT-SERVICE-to-INFRA-AWSELASTICSEARCHCLUSTER.yml @@ -19,4 +19,4 @@ relationships: candidateCategory: AWSELASTICSEARCHCLUSTER fields: - field: endpoint - attribute: server.address \ No newline at end of file + attribute: server.address diff --git a/relationships/synthesis/EXT-SERVICE-to-INFRA-KINESISDELIVERYSTREAM.yml b/relationships/synthesis/EXT-SERVICE-to-INFRA-KINESISDELIVERYSTREAM.yml new file mode 100644 index 000000000..8bbfae7c2 --- /dev/null +++ b/relationships/synthesis/EXT-SERVICE-to-INFRA-KINESISDELIVERYSTREAM.yml @@ -0,0 +1,24 @@ +relationships: + - name: extServiceCallsInfraKinesisDeliveryStream + version: "1" + origins: + - Distributed Tracing + conditions: + - attribute: eventType + anyOf: [ "Span" ] + - attribute: instrumentation.provider + anyOf: [ "opentelemetry" ] + - attribute: rpc.service + anyOf: [ "Firehose" ] + relationship: + expires: P75M + relationshipType: CALLS + source: + extractGuid: + attribute: entity.guid + target: + lookupGuid: + candidateCategory: AWSKINESISDELIVERYSTREAM + fields: + - field: cloudResourceId + attribute: cloud.resource_id \ No newline at end of file diff --git a/relationships/synthesis/EXT-SERVICE-to-INFRA-KINESISSTREAM.yml b/relationships/synthesis/EXT-SERVICE-to-INFRA-KINESISSTREAM.yml new file mode 100644 index 000000000..2cb74e9c2 --- /dev/null +++ b/relationships/synthesis/EXT-SERVICE-to-INFRA-KINESISSTREAM.yml @@ -0,0 +1,24 @@ +relationships: + - name: extServiceCallsInfraKinesisStream + version: "1" + origins: + - Distributed Tracing + conditions: + - attribute: eventType + anyOf: [ "Span" ] + - attribute: instrumentation.provider + anyOf: [ "opentelemetry" ] + - attribute: rpc.service + anyOf: [ "kinesis" ] + relationship: + expires: P75M + relationshipType: CALLS + source: + extractGuid: + attribute: entity.guid + target: + lookupGuid: + candidateCategory: AWSKINESISSTREAM + fields: + - field: cloudResourceId + attribute: cloud.resource_id \ No newline at end of file