I’m pleased to share that the July 2022 release of AppDynamics Cloud adds tagging — one of our most highly requested features. Let’s explore how you can now use tags and filters to troubleshoot, organize and discover your data.
Modern cloud native infrastructures are inherently transitory, thanks to the growing popularity of container orchestration and immutable infrastructure deployment paradigms. Consequently, the signal-to-noise ratio in a cloud native environment can be really low, making it a real challenge to focus on genuine problems instead of the many red herrings. For instance, an SRE may not necessarily need to focus on setting monitoring alerts at the Kubernetes worker node or container level because they do not care if a particular instance fails, but they do care if the latency for a specific service, region or customer segment increases. Tags can help alleviate the low signal-to-noise ratio problems in a dynamic environment by enabling users to filter, group, search and analyze data across the most complex environments. That SRE team could now leverage tagging and filtering to easily monitor what matters most to them.
Tags add more context to an object in the form of key/value pairs, and this is especially helpful when the durability of MELT (metrics, events, logs and traces) data outlasts the applications or infrastructure that created them.
Tagging is the solution to the age-old problem of finding a needle in a haystack and reduces Mean Time To Detection (MTTD). Using tags in AppDynamics Cloud, DevOps and SRE teams can swiftly discover, aggregate and dynamically organize data across their entire observable stack.
The primary objective of the tagging feature in AppDynamics Cloud is to enable our customers to quickly analyze and troubleshoot the root cause of problems, and we are thrilled to announce that you can now ingest tags from cloud services (via Cloud Collector) and Kubernetes workloads (via Kubernetes Collector) in AppDynamics Cloud, and use these tags to filter, group and set health rule criteria.
Let me show you how.
Tagging your data
AppDynamics Cloud enriches MELT data with attributes (also known as metadata), for example AWS region, AWS account ID, Azure location, Azure resource groups, Azure subscription ID. To enable an efficient filtering experience, some essential attributes are automatically converted to tags in AppDynamics Cloud. The values of these tags can only be modified by the source.
AppDynamics Cloud optimizes a set of predefined tags to enable the correlation of MELT data across different entity types. These predefined tags are called global tags; they are agnostic of data sources, and you can use them to build a unified pane of glass by performing boundaryless operations (e.g., filtering, aggregation and search) across all data stores (i.e., topology, metrics, logs/events and trace data stores) in AppDynamics Cloud. For example, suppose a container is tagged with any of the reserved global tags (e.g., version:2); AppDynamics Cloud automatically propagates the same tag to the metrics, events, logs and traces generated from the tagged container. This allows customers to tag an entity and find or aggregate MELT data that originates from it.
Where feasible, we recommend you tag your data with one or more of the global tags. Additionally, a subset of the attributes that were promoted to tags are part of the global tags.
AppDynamics Cloud uses the following global tags:
|Global Tag||Converted from attribute to tag?||Description|
|env||No||Use this tag to distinguish between services/infra that are in different environments|
|service||No||OTel service name. This is similar to a tier name in AppDynamics Controller|
|namespace||No||Similar to your application name in AppDynamics Controller|
|version||No||This is critical for comparing releases|
|owner||No||Similar to org, dept, business units. Use this for license charge-back. This will be critical for creating RBAC|
|cluster||No||Used for the highest level of logical grouping|
|aws.region||YES||AWS region of the service or infrastructure|
|aws.account.id||YES||AWS account ID|
|azure.location||YES||The Azure region of the service or infrastructure|
|azure.resource_group||YES||Azure resource group of the service or infrastructure|
|azure.subsription.id||YES||Azure subscription ID|
As part of the cloud-connection creation process in AppDynamics Cloud, a configuration option allows the importation of first-class tags from cloud services. (See Fig.1)
If enabled, the cloud collector will automatically import tags that are associated with the cloud services. For example, if an EC2 instance is tagged with env: production, AppDynamics Cloud ingests the env:production and displays it in the inspector panel.
To enable importing tags and specify which tags to exclude, see Cloud connection configuration.
Labels from Kubernetes® workloads can be ingested as tags in AppDynamics Cloud. This feature is enabled by default, and you can regex to exclude certain labels from being imported in the Kubernetes Collector settings, as shown in Fig 2.0.
When you send your OpenTelemetry™ (OTel) spans to AppDynamics Collector, you may also affix resource attributes (see resource conventions) to the spans, such as service.name, service.namespace, service.version and so on.
Tags enable you to discover and dynamically organize data across your entire observable stack. You can use tags to:
- Filter and group entities and their corresponding MELT data.
- Limit the health rule evaluation scope.
- Quickly analyze and troubleshoot the root cause of issues.
- Filtering and grouping can be done via APIs.
Filtering and grouping can be done via APIs.
Filtering and grouping
On the Observe page (Fig. 3.0), you can group entities and create filters using global tags. Observe displays only global tags and does not display entity-specific tags.
Entity-centric page list view
On list views you can also filter based on tags; the tags available will depend on the list view you’re currently looking at. Tags are either:
- Global tags (as noted above).
- Ingested from cloud services (via the Cloud Connector).
- Labels from Kubernetes workloads.
AppDynamics Cloud will automatically list the available tags or the list view you’re currently viewing. As you type, it will automatically update/refine the list of available values. This is user-friendly and prevents user error.
On the entity-centric page list view, you can use tags to create filters.
Refer to the tagging documentation for further details.
Tag-aware health rules
AppDynamics Cloud enables SREs and DevOps engineers to restrict the evaluation scope of a health rule by filtering entities based on tags.
For example, an SRE can now create a health rule on Host entities tagged owner:product AND env:prod.
See the health rule filter documentation for further details.
We’ll continue to iterate on the tagging feature based on customer input from the feedback form in AppDynamics Cloud, and from conversations in our Community.