Keptn makes any Kubernetes deployment observable.
In other words, it creates a distributed, end-to-end trace
of what Kubernetes does in the context of a Deployment.
To do this,
Keptn introduces the concept of an
which is an abstraction that connects multiple
Workloads that logically belong together,
even if they use different deployment strategies.
This means that:
- You can readily see why a deployment takes so long or why it fails, even when using multiple deployment strategies.
- Keptn can capture DORA metrics and expose them as OpenTelemetry metrics
The observability data is an amalgamation of the following:
- DORA metrics are collected out of the box when Keptn is enabled
- OpenTelemetry runs traces that show everything that happens in the Kubernetes cluster
- Custom Keptn metrics that you can use to monitor information from all the data providers configured in your cluster
All this information can be displayed with dashboard tools such as Grafana.
For an introduction to using OpenTelemetry with Keptn metrics, see the Keptn Observability getting started guide.
Requirements for OpenTelemetry
To access OpenTelemetry metrics with Keptn, you must have the following on your cluster:
- An OpenTelemetry collector. See OpenTelemetry Collector for more information.
A Prometheus Operator. See Prometheus Operator Setup.
- The Prometheus Operator must have the required permissions
to watch resources of your Keptn namespace
keptn-system). See Setup for Monitoring other Namespaces.
- The Prometheus Operator must have the required permissions to watch resources of your Keptn namespace (default is
To install Prometheus into the
monitoringnamespace using the example configuration included with Keptn, use the following command sequence. You can modify these commands to define a different configuration:
Note You must clone the
cdinto the correct directory (
examples/support/observability) before running the following commands.
If you want a dashboard for reviewing metrics and traces:
Metrics can also be retrieved without a dashboard. See Accessing Metrics via the Kubernetes Custom Metrics API
Integrate OpenTelemetry into Keptn
To integrate OpenTelemetry into Keptn:
Deploymentresource(s) to integrate Keptn into your Kubernetes cluster.
- To expose OpenTelemetry metrics,
define a KeptnConfig resource
that has the
spec.OTelCollectorUrlfield populated with the URL of the OpenTelemetry collector.
is the OpenTelemetry manifest file for the PodtatoHead example,
located in the
To deploy and configure the OpenTelemetry collector
using this manifest, the command is:
Use the following command to confirm that the pod
otel-collector deployment is up and running:
If you want to extend the OTel Collector configuration
to send your telemetry data to other Observability platform,
you can edit the Collector
ConfigMap with the following command:
otel-collector pod is up and running,
keptn-scheduler (if installed) and
so they can pick up the new configuration:
Keptn begins to collect OpenTelemetry metrics
as soon as the
has the basic annotations to integrate Keptn in the cluster.
Access Keptn metrics as OpenTelemetry metrics
Keptn metrics can be exposed as OpenTelemetry (OTel) metrics
9999 of the Keptn metrics-operator.
To access the metrics, use the following command:
You can access the metrics from your browser at:
Advanced tracing configurations in Keptn: Linking traces
In Keptn you can connect multiple traces, for instance to connect deployments of the same application through different stages. To create connections between the traces of versions of your application, you can enrich the KeptnAppContext resource with OpenTelemetry span links. You can retrieve the span link from the JSON representation of the trace in Jaeger, where it has the following structure:
Use this value to populate the
to connect traces of different versions of the application.
Note The span link used above is just an example. You need to replace it with the traceID and spanID that you retrieve from the
KeptnAppVersionresource you want to link.
To store this new information in the traces, you need to increment the version
of your application and apply the
Keptn will re-deploy your application and Jaeger should show a link to the previous trace in the references section.