Technology recommendations

Cloud Observability can ingest metrics, logs, and traces from a large number of tools, platforms, languages and frameworks that support sending data using standards like the OpenTelemetry Protocol (OTLP), statsd (Datadog), or the Elastic Bulk API.

However, using certain technologies helps you get the best out-of-the-box experience, as does following general guidelines for security, architecture, performance, and configuration.  The following is a list of platforms, integrations, and open-source components that help you work best with ServiceNow Cloud Observability.

Kubernetes

Distribution Versions Operating System
Official Current stable + previous two releases Linux (ARM, AMD64)
Amazon EKS Current stable + previous two releases Linux (ARM, AMD64)
Azure AKS Current stable + previous two releases Linux (ARM, AMD64)
Google Kubernetes Engine Current stable + previous two releases Linux (ARM, AMD64)

When you run applications in the above Kubernetes distributions, you should deploy the recent version of the otel-cloud-stack Helm chart. This chart automatically configures collectors following general guidelines for monitoring the health of your Kubernetes clusters. Follow our quick start to deploy the chart.

OpenTelemetry instrumentation

We recommend using only OpenTelemetry code instrumentation components that are marked as “Stable” on the official OpenTelemetry status page.

OpenTelemetry Collector

Distribution Versions Operating System
OpenTelemetry Collector Core Current stable + previous four releases Linux (ARM, AMD64)
OpenTelemetry Collector Contrib Current stable + previous four releases Linux (ARM, AMD64)
AWS ADOT Current stable release Linux (ARM, AMD64)

You must configure the Collectors to use components that properly collect and annotate telemetry from Kubernetes and other infrastructure. Our otel-cloud-stack configures these components for you by default. For your production telemetry pipelines, we recommend OpenTelemetry Collector Contrib components with at least stability “beta” or “stable.”

For details on recommended annotations, see OpenTelemetry Semantic Conventions.

Logging agents

Distribution Versions Operating System
OpenTelemetry Collector See above See above
Elastic Logstash Current stable Linux (ARM, AMD64)
Vector Current stable Linux (ARM, AMD64)

OpenTelemetry Operator

Cloud Observability supports the last three versions of the OpenTelemetry Operator.

Prometheus

You can scrape Prometheus metrics in OpenMetrics format (Cloud Observability doesn’t support directly reading metrics from a Prometheus database). Use one of the following methods:

All scraped targets must follow the OpenMetrics v1.0 specification.

ServiceNow

Cloud Observability integrates with the most current stable and previous two major releases of the ServiceNow platform.

Microsatellites

If you’re using microsatellites, always use the most recent version for the latest performance and security updates.

Metrics and logs integrations

For comprehensive information on integrations with Amazon Cloudwatch, Azure Insights, Google Cloud operations suite and third-party databases, service meshes, and other technologies, refer to our integration documentation.

OpenTelemetry Semantic Conventions

Customers should follow OpenTelemetery semantic conventions when labeling metrics, logs, or traces or integrating with third-party metric data sources.

At minimum, the following resource semantic conventions should exist (where applicable) on all metrics, logs, and span data. Resources describe entities (like a server, or Kubernetes Pod) that emit telemetry.

Customers that run applications in Kubernetes distributions should deploy the otel-cloud-stack Helm chart, which automatically enriches metrics, logs, and traces with the following resource attributes. A quick start for deploying the chart is available here.

Resource Type Resource Attributes Recommended Enrichment
Service Name service.name Manually set
Cloud Account cloud.provider, cloud.region, cloud.account.id Resource Detection Processor
Cloud Resource cloud.resource_id Varies
Host host.id, host.name OpenTelemetry SDKs and/or Resource Detection Processor
Kubernetes Cluster and Namespace k8s.cluster.name, k8s.cluster.uid, k8s.namespace.name k8sattributes Processor
Kubernetes Deployment k8s.deployment.name, k8s.deployment.uid k8sattributes Processor
Kubernetes Pod k8s.pod.uid, k8s.pod.name k8sattributes Processor
Kubernetes Node k8s.node.name, k8s.node.uid k8sattributes Processor

Updated Jan 6, 2023