All data from OpenTelemetry is associated with a resource. A resource is a representation of the entity producing telemetry as resource attributes. The resource attributes are used to adapt a resource to New Relic's notion of an entity.
Data received is associated with an entity through a process called entity synthesis whereby the resource attributes present are matched to rules which determine the type of entity the data will be associated with. For data sourced from OpenTelemetry, the entity synthesis rules are designed to respect the OpenTelemetry resource semantic conventions.
The resource semantic conventions define different bodies of conventions for describing different types of entities. For example, the service and host conventions define the resource attributes which describe a service or host instance, respectively.
Supported entity types
Described here are the New Relic entity types which are supported when using OpenTelemetry instrumentation. Included for each supported entity type are:
- The resource attributes required for entity synthesis.
- Recommended attributes that drive certain aspects of the New Relic UI.
- Attributes which become entity tags, when present.
Services
A service entity is synthesized by adhering to the OpenTelemetry resource semantic conventions describing a service instance.
Refer to our documentation and examples for monitoring service entities using OpenTelemetry.
Required attributes
service.name
: The service name you see in the UI comes from this value.
Recommended attributes
service.instance.id
: Enables faceting between multiple instances of the same service.telemetry.sdk.language
: When present, this value drives the display of any runtime-specific UI, such as the JVM runtime page for Java applications.
Entity tags
service.namespace
telemetry.sdk.language
(added as language tag)telemetry.sdk.version
k8s.cluster.name
k8s.namespace.name
k8s.deployment.name
Hosts
A host entity is synthesized by adhering to the OpenTelemetry resource semantic conventions describing a host.
Refer to the host monitoring example in collector for infrastructure monitoring for more details.
Required attributes
Entity tags
cloud.provider
cloud.account.id
cloud.region
cloud.availability_zone
cloud.platform
host.id
host.name
host.type
host.arch
host.image.name
host.image.id
host.image.version
Redis instances
A redis instance is synthesized using data emitted from the Collector Redis receiver. Unfortunately, there are currently no semantic conventions for Redis instances, or identifying attributes in the metrics the Redis receiver emits. Therefore, users are required to manually include the attributes described below.
Refer to the Redis example in collector for infrastructure monitoring for more details.
Required attributes
server.address
: The redis instance name you see in the UI comes from this value.server.port
Entity tags
redis.version
redis.role
host.type
cloud.provider
cloud.account.id
cloud.region
instrumenation.name
server.address
server.port
Supported entity relationships
New Relic supports relationships between entities sourced from OpenTelemetry instrumentation. These relationships are synthesized automatically when the appropriate relationship criteria is met. Below are the relationships that are currently supported and their required criteria.
Service to host
Relationships between a service and host entity require that the service
includes the host.id
resource attribute and that it matches the host.id
of
the host it is running on.
Adding custom tags to an entity
You can use tags to organize and filter your entities in the UI.
Tags
are key-value pairs, for example team: operations
, added to various sets of
data, like monitored apps and hosts. Certain important attributes are
automatically available as tags, such as account ID; you can also add your own
custom tags
directly in the UI,
or with one of the methods below.
Adding resource attributes prefixed with tags
will result in a tag on your
entity in New Relic. For example, adding the attribute tags.mytag=myvalue
will result in the entity tag mytag=myvalue
.