New Relic observability is built around the concept of entities. This doc explains how we define entities, what you can do with them, and how you can create your own entities or groupings of entities.
Want an introductory tour of the New Relic platform? See Get to know the platform.
From a New Relic perspective, entity is purposefully a broad concept. An entity is anything that a) reports data to New Relic or that contains data that we have access to, and b) is something we've identified with a unique entity ID. For most entities, the ID is indicated by the attribute
An entity can be any fundamental data-reporting component, like an application, a host, or a database service, but it can also refer to larger groupings of those components. For example, to monitor a data center, you could aggregate those hosts in New Relic to be a workload (a custom grouping of entities). That workload is, itself, also an entity. We give you the ability to create your own entities.
Also very important is the relationships between entities. Our behind-the-scenes relationship-mapping helps us understand how entities are connected, how they affect each other. And this allows us to give you the power to configure how any data you're bringing in is related to existing entities, or how it's related to other entities.
Our focus on entities and their relationships is important because our goal is to give you practical information about your business-important entities, as opposed to giving you an unhelpfully huge stream of data from a huge list of monitored services and systems. With more insight at the entity level, you can better monitor and troubleshoot complex, modern systems.
one.newrelic.com: When you open New Relic, you land on the All entities page, which gives you an overview of your monitored entities. From this page, you can view metadata for an entity, or click an entity to see performance details.
The entity filter bar is available on many New Relic UI pages, including the main entity list view, APM, the browser monitoring UI, the infrastructure UI, and more. To learn how to use the filter bar to explore entities and save helpful filters, see Entity filter.
To find an entity's GUID and other metadata in the UI: from any list of entities, click an entity's icon, and click See metadata & tags.
Every entity has a New Relic-specific ID number, which is reported as the attribute
entityGuid. You can run NRQL queries of entities using their GUID.
Here are some options for understanding relationships between monitored entities:
- When viewing an entity in the UI, use the Related entities UI.
- Use service maps to see a visual representation of the connections.
- Use distributed tracing to see how entities call each other in transactions.
- Use our NerdGraph API to view relationship info.
Each entity contains several files that govern how it reports data. For example, the
golden_metrics file contains information about its most important metrics, which are usually highlighted in our UI experiences. Here's the
golden_metrics.yml file for APM-monitored entities.
definition file contains information like:
domain: for example,
type: for example,
- Default tags.
entityExpirationTime: for more on this, see Entity expiration.
Different entity types have different time-to-live periods, determined by the
entityExpirationTime set in the
definition file for each entity type. This expiration time governs how long the record for that entity exists in New Relic after the entity stops reporting data.
New Relic monitors a huge number of entities, and many of those entities are short-lived (for example, Kubernetes containers). For these reasons it's necessary to regularly delete entity records that have stopped reporting data.
This expiration time relates to the record of the entity itself and is not related to telemetry data. Put another way: the telemetry data reported by your monitored entities is findable in NRDB and available via NRQL, dependent on its data retention settings. But the record of the entity itself, once it expires, will no longer exist in New Relic.
The options for entity expiration time are:
MANUAL: this setting applies only for entities whose creation and deletion are manually controlled (for example, workloads and dashboards)
You can place entities into groups that reflect business-important relationships in your organization. For example, you might group all entities related to a specific team or department, or related to a specific service. Or you might group multiple hosts together to reflect their grouping in a data center.
To group your entities, see:
- Tag entities.
- Create workloads, which allow you to group business-important sets of entities.
- Create entities and customize entity data
If you have telemetry from any source that's not supported by New Relic out of the box, you can propose a mapping for it. Once approved, any telemetry received by New Relic that matches your definition file will be synthesized into an entity.
To learn more:
- For reserved attributes and how entity relationships are defined, keep reading this doc.
- For how to do the work of modifying existing entity types or creating new ones, see our GitHub repo on entity synthesis.
These attributes are meant to be synthesized from the telemetry we receive. Do not set them unless you're aware of the implications and consequences.
Generally, you should not set this attribute field on your telemetry data. New Relic may add this field to ingested data to store a unique identifier for the entity associated with the data point. If telemetry arrives with the
One use case for passing this attribute is to associate ingested telemetry with an entity that we already monitor. When the
This attribute shouldn't be put on ingested telemetry data unless you're trying to override the entity name that would have been selected by our entity identification system. While we won't change the value if it's already present on the data, we may add the attribute to your data. Therefore invalid or unexpected values may cause undefined behavior such as missing entities in the UI, or telemetry not associating with the expected entities.
If this field is present on ingested telemetry, its value will be used to name the entity associated with the data point. This name will be used instead of the name selected by our entity identification system (for example, entity synthesis definitions). Note that many entities use the name as part of their identification, so changing this field may result in the generation of a new entity.
This attribute shouldn't be put on ingested telemetry data except for certain legacy cases where it's required to distinguish entity types. Passing this field may interfere with entity detection, particularly if unrecognized values are sent in this field.
While New Relic won't change the value if already present on the data, the field is not guaranteed to provide unambiguous filtering of telemetry at query-time. Existing entity definitions already have overlapping values, and we recommend avoiding
This field is used by New Relic, meaning that invalid or unexpected values may cause undefined behavior such as missing entities in the UI, or telemetry not associating with the expected entities.
To learn how to do the work of modifying existing entity types or creating new ones, see our GitHub repo on entity synthesis.
Using your telemetry, we can detect entities that are not being instrumented right now but are used by your application. For example, one of your instrumented entities may be calling an Amazon RDS database which is not currently instrumented by New Relic, so we cannot provide any tooling like monitoring or alerting for it.
In that case, we create a so-called "uninstrumented entity" together with the relationship with the instrumented one. It is displayed in the service map for the instrumented entity. We provide clear instructions to instrument it, displayed with just clicking over the entity.
Connections between entities are automatically created by New Relic based on what we can infer from your telemetry. For example, when two services that communicate using HTTP are instrumented with New Relic, we infer a "calls/called-by" relationship between them.
When viewing an entity in the entity explorer, Navigator, and Lookout views, you can see its Related entities in the right pane. This gives a visualization of the various entities connected directly to the current entity. You can quickly view important metrics for these related entities and navigate from one entity to another, through all the connected parts of your stack.
Learn how to dig deeper into entity relationships with our NerdGraph API.
Entities can be related to each other in various ways. The collapser below lists the supported entity relationships. Once you understand the possible relationships, take a look at the list of automatically created relationships or consider whether you want to create custom entity relationships.
Automatic relationships are created based on the telemetry that's being reported by the entities. These relationships have a Time To Live (TTL). This means that they will be automatically deleted if the metrics used to create the relationship are not reported in a given period of time. The default TTL for a relationship is 75 minutes. The TTL can vary from 10 minutes up to 3 days depending on the relationship type.
These are the relationships between entities that we create automatically:
When relationships are not automatically detected, you can manually create them using our NerdGraph API, or you can do it in the New Relic UI with the Add/edit related entities link in Related entities. Currently, you can only manually create calls/called-by relationships between service entities.
To manage manual relationships, you need to have modify and delete capabilities on entity relationships. If you don’t see the edit relationships button, contact your account admin.