Traces & Logs
Learn how to ingest OTEL traces & logs with groundcover
groundcover fully supports the ingestion of traces and logs in the Open Telemetry format, displaying them natively in our UI.
Ingestion From Kubernetes Pods
OTLP Traces and Logs generated from Kubernetes pods can be ingested directly by our DaemonSet Alligator
. Ingestion is supported by changing the exporter endpoint to the Alligator Service Endpoint, which will also enrich the received spans and logs with Kubernetes metadata (see below).
groundcover collects all logs inside your k8s cluster out of the box without the need for any additional setup, so in most cases ingesting OTLP logs from inside your Kubernetes cluster is not recommended as it will cause log duplications. Not sure? Contact us on Slack!
Finding the groundcover Alligator Service Endpoint
Use the instructions here to locate the endpoint for the Alligator service, referenced below as {GROUNDCOVER_ALLIGATOR_ENDPOINT}
.
Setting Up The Required Environment Variables
Change your deployments environments variables to the endpoint found above. This will redirect all traces and logs generated by the service to groundcover.
Automatic Attribute Enrichment
groundcover will automatically enrich traces and logs ingested with Kubernetes metadata, in order to provide as much context as possible.
groundcover follows OpenTelemetry's Semantic Conventions when naming the attributes.
Pod Level attributes:
k8s.namespace.name
- the namespace of the podk8s.node.name
- the node the pod is scheduled onk8s.pod.name
- the name of the podk8s.pod.uid
- the UID of the podk8s.pod.ip
- the IP address of the pod at the time of the tracek8s.cluster.name
- the Kubernetes cluster name
Container level attributes:
If the container.id
tag is provided with the container ID provided by the Container Runtime, the following tags will also be enriched:
container.name
- the name of the containercontainer.image.name
- the name of the container imagecontainer.image.tag
- the tag of the container image
groundcover will replace the service.name
attribute indicating the name of the service with the name of the Kubernetes Deployment which is the owner of the pod. Keep this in mind when looking for your traces and logs in the system!
Forwarding traces from an existing OpenTelemetry collector
groundcover ships with an OpenTelemetry collector out of the box. If your services are configured to use an already existing OpenTelemetry collector, you can forward the traces and logs it collects to groundcover's collector using the OTLP exporter, specifying our collector as the endpoint.
Finding the groundcover OpenTelemetry Collector Endpoint
Use the instructions here to locate the endpoint for the Alligator service, referenced below as {GROUNDCOVER_OPENTELEMETRY_COLLECTOR_ENDPOINT}
.
For default installations, groundcover's OpenTelemetry Collector communicates with TLS turned off, which is why TLS is disabled in the below configuration. For more complex environments with ingestion of sources from outside the cluster, contact us on Slack!
Defining the OTLP exporter and pipelines
Start by adding the needed exporter:
For traces forwarding, add the following to your traces pipeline:
For logs forwarding, add the following to your logs pipeline. Keep in mind that groundcover collects your logs out of the box, so this is redundant in most setups.
Last updated