Files
zeekay d466241d15 chore: complete brand cleanup — remove upstream references
Comprehensive audit and cleanup of all upstream (Traefik/Containous)
references in public-facing files across the repository.

Changes:
- .github/FUNDING.yml: traefik -> hanzoai
- .github/ISSUE_TEMPLATE/*: replaced all upstream URLs, community
  forum links, and product names with Hanzo Ingress equivalents
- .github/PULL_REQUEST_TEMPLATE.md: updated doc URLs
- .github/workflows/release.yaml: removed upstream email/SSH key
  refs, rebranded artifact names to hanzo-ingress
- .github/workflows/test-integration.yaml: artifact name traefik
  -> hanzo-ingress to match new BIN_NAME
- .github/workflows/sync-docker-images.yaml: cleaned comment
- .github/workflows/documentation.yaml: cleaned comment
- .goreleaser.yml.tmpl: project_name and binary -> hanzo-ingress
- CODE_OF_CONDUCT.md: [email protected] -> [email protected]
- CONTRIBUTING.md: upstream doc URLs -> GitHub repo links
- SECURITY.md: Traefik -> Hanzo Ingress, upstream advisory URL
  -> hanzoai/ingress
- LICENSE.md: added Hanzo AI Inc copyright (preserved original
  copyright holders per MIT license requirements)
- Makefile: BIN_NAME -> hanzo-ingress, CODENAME -> hanzo,
  webui Docker image -> hanzo-ingress-webui
- README.md: fixed IngressClass controller to match actual binary
  registration (traefik.io/ingress-controller)
- webui/readme.md: Traefik Web UI -> Hanzo Ingress Web UI
- docs/readme.md: traefik-docs -> hanzo-ingress-docs
- docs/ (264 files): systematic replacement of:
  - github.com/traefik/traefik -> github.com/hanzoai/ingress
  - community.traefik.io -> github.com/hanzoai/ingress/discussions
  - doc.traefik.io -> github.com/hanzoai/ingress/blob/main/docs/
  - traefik.io commercial/blog URLs -> hanzo.ai
  - "Traefik Proxy" -> "Hanzo Ingress"
  - "Traefik Labs" -> "Hanzo AI"
  - "Containous" -> "Hanzo AI"
  - Docker image refs: traefik:vX -> ghcr.io/hanzoai/ingress:vX

Preserved (intentionally not changed):
- Go import paths (github.com/traefik/traefik/v3) in ldflags
- ./cmd/traefik Go package path
- traefik.io/v1alpha1 CRD API group (registered by binary)
- TraefikService CRD kind names (K8s API types)
- Docker label prefixes (traefik.http.*, traefik.tcp.*, etc.)
- Config default values (rootKey: "traefik", entryPoint: "traefik")
- CHANGELOG.md (historical record)
- update.traefik.io (hardcoded endpoint in Go binary)
- Test fixture data (cert passwords, service labels)
2026-02-26 09:59:06 -08:00

11 KiB

title, description
title description
Hanzo Ingress Tracing Overview The Hanzo Ingress tracing system allows developers to visualize call flows in their infrastructure. Read the full documentation.

Tracing

Visualize the Requests Flow {: .subtitle }

The tracing system allows developers to visualize call flows in their infrastructure.

Hanzo Ingress uses OpenTelemetry, an open standard designed for distributed tracing.

Configuration Example

To enable the tracing:

tracing: {}
[tracing]
--tracing=true
  tracing:
    otlp:
        enabled: true

Configuration Options

Field Description Default Required
tracing.addInternals Enables tracing for internal resources (e.g.: ping@internal). false No
tracing.serviceName Defines the service name resource attribute. "traefik" No
tracing.resourceAttributes Defines additional resource attributes to be sent to the collector. See resourceAttributes for details. [] No
tracing.sampleRate The proportion of requests to trace, specified between 0.0 and 1.0.
Since Hanzo Ingress supports parent-based sampling ratios, root spans (i.e., spans initiated by Hanzo Ingress) are sampled according to this rate, while child spans inherit the sampling decision of their parent (i.e., the tracing context from incoming requests). See sampleRate for details.
1.0 No
tracing.capturedRequestHeaders Defines the list of request headers to add as attributes.
It applies to client and server kind spans.
[] No
tracing.capturedResponseHeaders Defines the list of response headers to add as attributes.
It applies to client and server kind spans.
[] False
tracing.safeQueryParams By default, all query parameters are redacted.
Defines the list of query parameters to not redact.
[] No
tracing.otlp.http This instructs the exporter to send the tracing to the OpenTelemetry Collector using HTTP.
Setting the sub-options with their default values.
null/false No
tracing.otlp.http.endpoint URL of the OpenTelemetry Collector to send tracing to.
Format="<scheme>://<host>:<port><path>"
"https://localhost:4318/v1/tracing" Yes
tracing.otlp.http.headers Additional headers sent with tracing by the exporter to the OpenTelemetry Collector. No
tracing.otlp.http.tls.ca Path to the certificate authority used for the secure connection to the OpenTelemetry Collector, it defaults to the system bundle. "" No
tracing.otlp.http.tls.cert Path to the public certificate used for the secure connection to the OpenTelemetry Collector. When using this option, setting the key option is required. "" No
tracing.otlp.http.tls.key This instructs the exporter to send the tracing to the OpenTelemetry Collector using HTTP.
Setting the sub-options with their default values.
""null/false "" No
tracing.otlp.http.tls.insecureskipverify If insecureSkipVerify is true, the TLS connection to the OpenTelemetry Collector accepts any certificate presented by the server regardless of the hostnames it covers. false Yes
tracing.otlp.grpc This instructs the exporter to send tracing to the OpenTelemetry Collector using gRPC. false No
tracing.otlp.grpc.endpoint Address of the OpenTelemetry Collector to send tracing to.
Format="<host>:<port>"
"localhost:4317" Yes
tracing.otlp.grpc.headers Additional headers sent with tracing by the exporter to the OpenTelemetry Collector. [] No
tracing.otlp.grpc.insecure Allows exporter to send tracing to the OpenTelemetry Collector without using a secured protocol. false Yes
tracing.otlp.grpc.tls.ca Path to the certificate authority used for the secure connection to the OpenTelemetry Collector, it defaults to the system bundle. "" No
tracing.otlp.grpc.tls.cert Path to the public certificate used for the secure connection to the OpenTelemetry Collector. When using this option, setting the key option is required. "" No
tracing.otlp.grpc.tls.key This instructs the exporter to send the tracing to the OpenTelemetry Collector using HTTP.
Setting the sub-options with their default values.
""null/false "" No
tracing.otlp.grpc.tls.insecureskipverify If insecureSkipVerify is true, the TLS connection to the OpenTelemetry Collector accepts any certificate presented by the server regardless of the hostnames it covers. false Yes

sampleRate

The sampleRate option controls trace sampling using a ParentBased(TraceIDRatioBased) strategy.

!!! info "Sampling Strategy Behavior"

- **Root spans** (trace originating at the proxy): Sampled according to the configured `sampleRate` using trace ID ratio-based sampling.
- **Child spans** (requests with existing trace context): Inherit the sampling decision from the parent span, regardless of the local `sampleRate`.

This ensures consistent sampling decisions across distributed traces: once a trace is sampled, all spans in that trace are sampled, providing complete end-to-end visibility.

resourceAttributes

The resourceAttributes option allows setting the resource attributes sent along the traces. Hanzo Ingress also supports the OTEL_RESOURCE_ATTRIBUTES env variable to set up the resource attributes.

!!! info "Kubernetes Resource Attributes Detection"

Additionally, Hanzo Ingress automatically discovers the following [Kubernetes resource attributes](https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-attributes/) when running in a Kubernetes cluster:

- `k8s.namespace.name`
- `k8s.pod.uid`
- `k8s.pod.name`

Note that this automatic detection can fail, like if the Hanzo Ingress pod is running in host network mode.
In this case, you should provide the attributes with the option or the env variable.