Menu

This is documentation for the next version of Tempo. For the latest stable release, go to the latest version.

Open source

Quickstart

One page summary on how to start with Tempo Operator and TempoStack.

Requirements

The easiest way to start with the Tempo Operator is to use Kubernetes kind.

Deploy

To install the operator in an existing cluster, make sure you have cert-manager installed and run:

shell
kubectl apply -f https://github.com/grafana/tempo-operator/releases/latest/download/tempo-operator.yaml

Once you have the operator deployed you need to install a storage backend. For this quick start guide, we will install MinIO as follows:

shell
kubectl apply -f https://raw.githubusercontent.com/grafana/tempo-operator/main/minio.yaml

After minio was deployed, create a secret for MinIO in the namespace you are using:

yaml
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: minio-test
stringData:
  endpoint: http://minio.minio.svc:9000
  bucket: tempo
  access_key_id: tempo
  access_key_secret: supersecret
type: Opaque
EOF

Then create Tempo CR:

yaml
kubectl apply -f - <<EOF
apiVersion: tempo.grafana.com/v1alpha1
kind: TempoStack
metadata:
  name: simplest
spec:
  storage:
    secret:
      name: minio-test
      type: s3
  storageSize: 1Gi
  resources:
    total:
      limits:
        memory: 2Gi
        cpu: 2000m
  template:
    queryFrontend:
      jaegerQuery:
        enabled: true
EOF

After create the TempoStack CR, you should see a some pods on the namespace. Wait for the stack to stabilize.

The stack deployed above is configured to receive Jaeger, Zipkin, and OpenTelemetry (OTLP) protocols. Because the Jaeger Query is enabled, you can also use the Jaeger UI to inspect the data.

To do a quick test, deploy a Job that generates some traces.

yaml
kubectl apply -f - <<EOF
apiVersion: batch/v1
kind: Job
metadata:
  name: tracegen
spec:
  template:
    spec:
      containers:
        - name: tracegen
          image: ghcr.io/open-telemetry/opentelemetry-collector-contrib/tracegen:latest
          command:
            - "./tracegen"
          args:
            - -otlp-endpoint=tempo-simplest-distributor:4317
            - -otlp-insecure
            - -duration=30s
            - -workers=1
      restartPolicy: Never
  backoffLimit: 4
EOF

Forward the Jaeger Query port to see the traces:

kubectl port-forward svc/tempo-simplest-query-frontend 16686:16686

Visit http://localhost:16686 to view the results.