All Integrations
StandardsZipkin v2 HTTP reporter

Zipkin Integration

Ingest Zipkin spans with zero SDK changes. Correlate traces with infrastructure metrics and logs, derive RED metrics automatically, and get AI-powered latency anomaly detection.

Setup

How It Works

01

Point Your Reporter to TigerOps

Configure your Zipkin reporter (Java, Go, Python, or JS) to send spans to the TigerOps Zipkin-compatible HTTP endpoint. No code changes beyond the reporter URL.

02

Enable B3 Header Propagation

TigerOps accepts both single-header (B3) and multi-header B3 propagation formats. Existing Zipkin instrumentation works without any modification.

03

View Service Dependency Maps

TigerOps builds service dependency graphs from Zipkin parent-child span relationships. Identify bottlenecks and high-fan-out services from the first trace.

04

Correlate with Metrics and Logs

TigerOps links trace IDs in log lines to Zipkin spans and overlays span timelines on metric charts. Full incident context without switching tools.

Capabilities

What You Get Out of the Box

Zipkin HTTP Endpoint Compatibility

TigerOps exposes a Zipkin v2 JSON API endpoint. Point any Zipkin reporter at https://zipkin.ingest.atatus.net/api/v2/spans and spans begin flowing immediately.

B3 Single and Multi-Header Support

Accept both X-B3-TraceId/SpanId multi-header format and the single-header B3 format. Mixed deployments with both formats are handled transparently.

RED Metrics Derivation

Compute Rate, Errors, and Duration metrics per service and operation from Zipkin span data. Use them for SLO dashboards without adding Prometheus instrumentation.

Trace Search & Filtering

Search traces by service name, span name, tag value, duration range, and time window. Drill from a service error alert directly into the offending traces.

Span Annotation Timeline

Zipkin annotations (cs, cr, ss, sr and custom annotations) are rendered on a timeline view alongside infrastructure metrics for precise root cause identification.

AI Latency Baselining

TigerOps learns P99 latency baselines per Zipkin operation. Deviations fire alerts with the specific spans contributing to the latency regression highlighted.

Configuration

Zipkin Reporter Pointing to TigerOps

Configure your Zipkin reporter in Java, Go, or Node.js to send spans to TigerOps.

zipkin-reporter-config
# Java (Brave / Spring Cloud Sleuth)
# application.properties:
spring.zipkin.base-url=https://zipkin.ingest.atatus.net
spring.zipkin.enabled=true
spring.sleuth.sampler.probability=1.0
# Add API key header:
spring.zipkin.extra-headers.Authorization=Bearer ${TIGEROPS_API_KEY}

# Go (openzipkin/zipkin-go)
import (
    zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
)
reporter := zipkinhttp.NewReporter(
    "https://zipkin.ingest.atatus.net/api/v2/spans",
    zipkinhttp.Header("Authorization", "Bearer "+os.Getenv("TIGEROPS_API_KEY")),
)

# Node.js (zipkin-transport-http)
const { Tracer, ExplicitContext } = require('zipkin')
const { HttpLogger } = require('zipkin-transport-http')
const tracer = new Tracer({
  ctxImpl: new ExplicitContext(),
  recorder: new BatchRecorder({
    logger: new HttpLogger({
      endpoint: 'https://zipkin.ingest.atatus.net/api/v2/spans',
      headers: { 'Authorization': `Bearer ${process.env.TIGEROPS_API_KEY}` }
    })
  }),
  localServiceName: 'my-service'
})

# Python (py-zipkin)
from py_zipkin.transport import BaseTransportHandler
import requests

class TigerOpsTransport(BaseTransportHandler):
    def send(self, encoded_span):
        requests.post(
            'https://zipkin.ingest.atatus.net/api/v2/spans',
            data=encoded_span,
            headers={'Authorization': f'Bearer {TIGEROPS_API_KEY}'}
        )
FAQ

Common Questions

Does TigerOps support Zipkin v1 (Thrift) spans?

TigerOps natively supports Zipkin v2 JSON format. For Zipkin v1 Thrift spans, use the OpenTelemetry Collector with a zipkin receiver (which handles both v1 and v2) and export to TigerOps via OTLP.

Can I use TigerOps as a Zipkin storage backend?

Yes. TigerOps implements the Zipkin HTTP API, including /api/v2/spans for ingestion and /api/v2/services, /api/v2/spans (GET), and /api/v2/trace/:traceId for the Zipkin UI queries. The Zipkin UI can be pointed at TigerOps directly.

How do I migrate from a self-hosted Zipkin server to TigerOps?

Change the reporter endpoint URL from your Zipkin server address to https://zipkin.ingest.atatus.net. No SDK changes are required. Run both endpoints in parallel during your evaluation period by using a reporter that supports multiple endpoints.

Does TigerOps support Brave (Java Zipkin library) and OpenZipkin SDKs?

Yes. Any SDK that supports the Zipkin v2 HTTP reporter works with TigerOps. This includes Brave (Java), zipkin-go, zipkin-js, py-zipkin, and the OpenZipkin C++ library.

Can TigerOps handle 100% trace sampling from a high-traffic service?

Yes, but we recommend tail-based sampling for high-traffic services. TigerOps supports configurable per-service sampling policies — keep 100% of error traces, 100% of high-latency traces, and a user-defined percentage of normal traces.

Get Started

Upgrade Your Zipkin Traces to Full Observability

Cross-signal correlation, RED metrics, and AI anomaly detection from your existing Zipkin instrumentation.