Zipkin 配置参数详解

Zipkin 3.6.1 配置参数详解,覆盖环境变量驱动模型、配置加载优先级、存储(内存/Elasticsearch/Cassandra/MySQL)、采集端(HTTP/gRPC/Kafka/RabbitMQ/ActiveMQ/Pulsar)、查询与 UI、自追踪等全部配置分组,含实测回显与默认值表

ZipkinZipkin链路追踪2026/10/09

Zipkin 配置参数详解

目标:详解 Zipkin 3.6.1 的全部配置参数——配置加载方式与优先级、存储后端(内存/Elasticsearch/Cassandra/MySQL)、采集端(HTTP/gRPC/Kafka/RabbitMQ/ActiveMQ/Pulsar/Scribe)、查询与 UI、自追踪等分组的环境变量清单与默认值,全部配置项经 /actuator/env 实测采集。本文档已在 Ubuntu 22.04 服务器实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04 LTS
  • Zipkin 版本:3.6.1(commit b2b0c98)
  • 配置载体:环境变量(${VAR:default} 占位符模型)
  • 默认配置来源:jar 内 BOOT-INF/classes/zipkin-server-shared.yml(153 个配置键)与 zipkin-server.yml
  • 生效值查询接口:http://<服务器IP>:9411/actuator/env
  • 默认监听端口:9411

二、配置方式总览

Zipkin 是单体 Java 服务,配置全部通过环境变量注入(与 Jaeger v2 的 YAML 配置驱动不同,也不同于 Netdata 的 conf 文件):启动进程前设置环境变量,进程启动时读取 zipkin-server-shared.yml 中的 ${VAR:default} 占位符展开生效。

三种设置方式(以 ES 存储为例):

① 命令行前缀(前台/脚本启动):

STORAGE_TYPE=elasticsearch ES_HOSTS=http://10.0.0.10:9200 \
  nohup java -Xms256m -Xmx512m -jar /opt/data/zipkin/zipkin.jar > /var/log/zipkin.log 2>&1 &

② systemd 托管: Environment= 每行一个变量(见《Ubuntu 22.04 安装 Zipkin 指南》)。

③ Docker Compose / 官方镜像: environment: 段注入(镜像入口脚本读取 JAVA_OPTS 并展开全部环境变量)。

实测生效值查询(actuator/env):

执行命令:

curl -s http://localhost:9411/actuator/env | python3 -m json.tool | head -40

执行结果(节选):

{
    "propertySources": [
        {"name": "systemProperties"},
        {"name": "systemEnvironment"},
        {"name": "Config resource 'class path resource [zipkin-server-shared.yml]' via location 'optional:classpath:/'"},
        {"name": "Config resource 'class path resource [zipkin-server.yml]' via location 'optional:classpath:/'"},
        {"name": "applicationInfo"},
        {"name": "defaultProperties"}
    ]
}

💡 说明:/actuator/env 返回 6 个属性源;其中 zipkin-server-shared.yml 为共享默认配置(153 个键),zipkin-server.yml 为 2 个键(zipkin.server.version 与 spring.application.name)。配置加载优先级:systemProperties > systemEnvironment > zipkin-server-shared.yml > zipkin-server.yml > applicationInfo > defaultProperties,即环境变量永远覆盖内置默认值。

三、配置分组速查表

分组前缀/变量默认值说明
存储STORAGE_TYPEmem后端类型:mem/elasticsearch/cassandra3/mysql
采集-HTTPCOLLECTOR_HTTP_ENABLEDtrue是否开放 HTTP 采集(POST /api/v2/spans)
采集-gRPCCOLLECTOR_GRPC_ENABLEDtrue是否开放 gRPC 采集
采集-KafkaKAFKA_BOOTSTRAP_SERVERS空Kafka broker 列表(设值即激活 Kafka 采集)
采集-RabbitMQRABBIT_ADDRESSES空RabbitMQ 地址(设值即激活)
采集-ActiveMQACTIVEMQ_URL空ActiveMQ broker URL(设值即激活)
采集-PulsarPULSAR_SERVICE_URL空Pulsar service URL(设值即激活)
采样COLLECTOR_SAMPLE_RATE / SAMPLING_RATE1.0采样率(0.0–1.0,1.0 全采样)
查询QUERY_ENABLEDtrue是否启用查询 API/UI
监听端口QUERY_PORT9411HTTP/UI/API 统一监听端口
UIUI_ENABLED继承 QUERY_ENABLED是否启用 UI
搜索SEARCH_ENABLEDtrue是否启用 span 搜索索引
自追踪SELF_TRACING_ENABLEDfalse是否追踪 Zipkin 自身

四、存储配置

4.1 通用

变量默认值说明
STORAGE_TYPEmem存储后端:mem(内存)、elasticsearch、cassandra3、mysql
STRICT_TRACE_IDtrue是否强制 64 位 traceId(关闭可兼容 128 位)
SEARCH_ENABLEDtrue是否启用按服务名/标签搜索(关闭后仅按 traceId 查询)
AUTOCOMPLETE_KEYS空自动补全的 tag key 列表(逗号分隔)
AUTOCOMPLETE_TTL3600000自动补全缓存 TTL(毫秒)

4.2 内存存储(默认,STORAGE_TYPE=mem)

变量默认值说明
MEM_MAX_SPANS500000内存最多保留 span 数,超限按最旧优先清除

⚠️ 注意:内存存储重启即清空,仅适合演示/验证。

4.3 Elasticsearch 存储(STORAGE_TYPE=elasticsearch)

启动示例:

STORAGE_TYPE=elasticsearch ES_HOSTS=http://10.0.0.10:9200 \
  nohup java -Xms256m -Xmx512m -jar /opt/data/zipkin/zipkin.jar > /var/log/zipkin.log 2>&1 &
sleep 20
curl -s http://localhost:9411/actuator/health

执行结果:

{"status":"UP","zipkin":{"status":"UP","details":{"ElasticsearchStorage{initialEndpoints=http://10.0.0.10:9200, index=zipkin}":{"status":"UP"}}}}
变量默认值说明
ES_HOSTS空ES 地址列表,逗号分隔(如 http://es1:9200,http://es2:9200)
ES_INDEXzipkin索引前缀,实际索引 zipkin-span-YYYY-MM-DD、zipkin-dependency-*
ES_INDEX_SHARDS5每索引分片数
ES_INDEX_REPLICAS1每索引副本数(单节点 ES 建议 0)
ES_ENSURE_TEMPLATEStrue启动时自动创建/更新索引模板
ES_DATE_SEPARATOR-日期分隔符(如 -,索引 zipkin-span-2026-10-08)
ES_TIMEOUT10000ES 请求超时(毫秒)
ES_USERNAME / ES_PASSWORD空ES 认证账号/密码(xpack)
ES_CREDENTIALS_FILE空凭据文件路径(AWS 签名等场景)
ES_SSL_NO_VERIFYfalseHTTPS 是否跳过证书校验
ES_HTTP_LOGGING空请求日志级别(如 BASIC/HEADERS/BODY)
ES_HEALTH_CHECK_ENABLEDtrue是否对 ES 做健康检查
ES_HEALTH_CHECK_INTERVAL3s健康检查间隔
ES_PIPELINE空写入 ES 的 ingest pipeline

4.4 Cassandra 存储(STORAGE_TYPE=cassandra3)

变量默认值说明
CASSANDRA_CONTACT_POINTSlocalhost集群节点列表(逗号分隔,可带端口)
CASSANDRA_LOCAL_DCdatacenter1本地数据中心名(负载均衡)
CASSANDRA_KEYSPACEzipkin2keyspace 名
CASSANDRA_USERNAME / CASSANDRA_PASSWORD空认证
CASSANDRA_MAX_CONNECTIONS8每节点最大连接数
CASSANDRA_ENSURE_SCHEMAtrue启动时自动执行建表脚本 zipkin2-schema.cql
CASSANDRA_INDEX_FETCH_MULTIPLIER3索引行多取倍数
CASSANDRA_USE_SSLfalse是否启用 SSL
CASSANDRA_SSL_HOSTNAME_VALIDATIONtrueSSL 主机名校验

4.5 MySQL 存储(STORAGE_TYPE=mysql)

变量默认值说明
MYSQL_HOSTlocalhostMySQL 主机
MYSQL_TCP_PORT3306端口
MYSQL_USER / MYSQL_PASS空账号/密码
MYSQL_DBzipkin数据库名
MYSQL_MAX_CONNECTIONS10连接池上限
MYSQL_USE_SSLfalse是否启用 SSL
MYSQL_JDBC_URL空完整 JDBC URL(设置后覆盖 host/port/db)

五、采集端配置(Collector)

Zipkin 支持 HTTP、gRPC、Kafka、RabbitMQ、ActiveMQ、Pulsar、Scribe 七种采集通道,默认全部启用,未配置地址的通道静默关闭。

5.1 HTTP / gRPC 采集

变量默认值说明
COLLECTOR_HTTP_ENABLEDtrueHTTP 采集开关(POST /api/v2/spans)
COLLECTOR_GRPC_ENABLEDtruegRPC 采集开关
COLLECTOR_SAMPLE_RATE1.0采集采样率(0.0–1.0);SAMPLING_RATE 为别名

5.2 Kafka 采集

变量默认值说明
KAFKA_BOOTSTRAP_SERVERS空broker 列表(设置即激活,如 kafka1:9092,kafka2:9092)
KAFKA_TOPICzipkin消费 topic
KAFKA_GROUP_IDzipkin消费组 ID
KAFKA_STREAMS1消费者线程数

5.3 RabbitMQ 采集

变量默认值说明
RABBIT_ADDRESSES空地址列表(设置即激活,如 rabbit1:5672,rabbit2:5672)
RABBIT_QUEUEzipkin队列名
RABBIT_USER / RABBIT_PASSWORDguest / guest认证
RABBIT_VIRTUAL_HOST/vhost
RABBIT_CONCURRENCY1并发消费者数
RABBIT_CONNECTION_TIMEOUT60000连接超时(毫秒)
RABBIT_USE_SSLfalseSSL 开关

5.4 ActiveMQ 采集

变量默认值说明
ACTIVEMQ_URL空broker URL(设置即激活,如 tcp://localhost:61616)
ACTIVEMQ_QUEUEzipkin队列名
ACTIVEMQ_CONCURRENCY1并发消费者数
ACTIVEMQ_USERNAME / ACTIVEMQ_PASSWORD空认证

5.5 Pulsar 采集

变量默认值说明
PULSAR_SERVICE_URL空Pulsar service URL(设置即激活,如 pulsar://my-broker:6650)
PULSAR_TOPICzipkintopic
PULSAR_SUBSCRIPTION_NAMEzipkin订阅名
PULSAR_CONCURRENCY1并发消费者数

5.6 Scribe(Thrift 遗留协议)

变量默认值说明
SCRIBE_ENABLEDfalse默认关闭(旧 Facebook Thrift 协议,一般无需开启)
SCRIBE_CATEGORYzipkin类别名
COLLECTOR_PORT9410Scribe 监听端口

六、查询与 UI 配置

6.1 查询服务(Query)

变量默认值说明
QUERY_ENABLEDtrue查询 API/UI 开关
QUERY_PORT9411HTTP/UI/API 统一监听端口(改端口即改对外端口)
QUERY_TIMEOUT11s查询请求超时
QUERY_LOOKBACK86400000默认查询回溯窗口(毫秒,默认 1 天)

修改端口示例:

QUERY_PORT=9412 nohup java -Xms256m -Xmx512m -jar /opt/data/zipkin/zipkin.jar > /var/log/zipkin.log 2>&1 &

💡 说明:Zipkin 的采集(HTTP)、查询 API、UI 共用同一个端口(9411),不像 Jaeger 那样 Collector/Query 分端口。多实例同机部署时用 QUERY_PORT 错开。

6.2 UI 配置

变量默认值说明
UI_ENABLED继承 QUERY_ENABLEDUI 开关
(固定)UI 基路径/zipkin根路径 302 跳转到 /zipkin/
(固定)查询默认条数10Find Traces 默认返回条数
(固定)默认回溯900000UI 默认回溯 15 分钟(毫秒)

💡 说明:UI 的 query-limit、default-lookback、base-path、environment(右上角环境标签)在 zipkin-server-shared.yml 的 zipkin.ui 段中固定,不暴露环境变量占位(除 UI_ENABLED)。

七、自追踪配置(Self-Tracing)

Zipkin 可追踪自身处理流程(用于排查自身性能):

变量默认值说明
SELF_TRACING_ENABLEDfalse开关
SELF_TRACING_SAMPLE_RATE1.0采样率
SELF_TRACING_TRACES_PER_SECOND1每秒保留条数(采样率=1.0 时生效)
SELF_TRACING_FLUSH_INTERVAL1刷写间隔(秒)

八、服务端与 HTTP 参数

配置(键名)默认值说明
server.port(= QUERY_PORT)9411监听端口
server.compression.enabledtrue响应压缩(JSON/JS/CSS/SVG,超过 2KiB 压缩)
server.use-forward-headerstrue透传 X-Forwarded-* 头(反代场景)
zipkin.query.allowed-origins*CORS 允许来源

九、注意事项

  • 环境变量在启动前设置:进程运行中修改环境变量不生效,必须重启(systemctl restart zipkin 或 docker compose restart zipkin)。
  • SAMPLING_RATE 与 COLLECTOR_SAMPLE_RATE:二者互为别名,控制采集端采样率(默认 1.0 全采样)。
  • QUERY_PORT 就是对外端口:9411 是采集 + 查询 + UI 的统一端口,改端口仅需改 QUERY_PORT。
  • ES 单节点务必 ES_INDEX_REPLICAS=0:否则索引副本无法分配,ES 呈黄/红状态。
  • 生效值以 /actuator/env 为准:排查配置是否生效先查该接口,再查 /actuator/health 的存储详情。

十、常见问题

10.1 修改环境变量后不生效?

原因: 环境变量在 JVM 启动时读取一次。

解决: 重启进程(sudo systemctl restart zipkin 或重新执行 nohup 命令),再用 /actuator/env 核对。

10.2 ES 健康检查显示 DOWN?

原因: ES_HOSTS 写错、ES 未启动、或认证信息缺失。

解决: 检查 curl -s http://<ES_HOSTS>/ 是否 200;确认 ES_USERNAME/ES_PASSWORD 与 ES 侧 xpack 一致。

10.3 ES 索引显示黄/红色?

原因: 单节点 ES 上 ES_INDEX_REPLICAS=1(默认)导致副本无法分配。

解决: 启动前设置 ES_INDEX_REPLICAS=0,并清理已建错误索引后重建模板。

10.4 /actuator/env 访问 404?

原因: actuator 端口是 9411(与主服务同端口),根路径 /actuator 存在但端点路径拼写错误。

解决: 先访问 http://<IP>:9411/actuator 查看端点清单,再访问 /actuator/env。

十一、参考链接


本文档由 www.quzuo.net 平台开发

Zipkin 配置参数详解 - Quzuo