Zipkin 配置参数详解
Zipkin 3.6.1 配置参数详解,覆盖环境变量驱动模型、配置加载优先级、存储(内存/Elasticsearch/Cassandra/MySQL)、采集端(HTTP/gRPC/Kafka/RabbitMQ/ActiveMQ/Pulsar)、查询与 UI、自追踪等全部配置分组,含实测回显与默认值表
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_TYPE | mem | 后端类型:mem/elasticsearch/cassandra3/mysql |
| 采集-HTTP | COLLECTOR_HTTP_ENABLED | true | 是否开放 HTTP 采集(POST /api/v2/spans) |
| 采集-gRPC | COLLECTOR_GRPC_ENABLED | true | 是否开放 gRPC 采集 |
| 采集-Kafka | KAFKA_BOOTSTRAP_SERVERS | 空 | Kafka broker 列表(设值即激活 Kafka 采集) |
| 采集-RabbitMQ | RABBIT_ADDRESSES | 空 | RabbitMQ 地址(设值即激活) |
| 采集-ActiveMQ | ACTIVEMQ_URL | 空 | ActiveMQ broker URL(设值即激活) |
| 采集-Pulsar | PULSAR_SERVICE_URL | 空 | Pulsar service URL(设值即激活) |
| 采样 | COLLECTOR_SAMPLE_RATE / SAMPLING_RATE | 1.0 | 采样率(0.0–1.0,1.0 全采样) |
| 查询 | QUERY_ENABLED | true | 是否启用查询 API/UI |
| 监听端口 | QUERY_PORT | 9411 | HTTP/UI/API 统一监听端口 |
| UI | UI_ENABLED | 继承 QUERY_ENABLED | 是否启用 UI |
| 搜索 | SEARCH_ENABLED | true | 是否启用 span 搜索索引 |
| 自追踪 | SELF_TRACING_ENABLED | false | 是否追踪 Zipkin 自身 |
四、存储配置
4.1 通用
| 变量 | 默认值 | 说明 |
|---|---|---|
STORAGE_TYPE | mem | 存储后端:mem(内存)、elasticsearch、cassandra3、mysql |
STRICT_TRACE_ID | true | 是否强制 64 位 traceId(关闭可兼容 128 位) |
SEARCH_ENABLED | true | 是否启用按服务名/标签搜索(关闭后仅按 traceId 查询) |
AUTOCOMPLETE_KEYS | 空 | 自动补全的 tag key 列表(逗号分隔) |
AUTOCOMPLETE_TTL | 3600000 | 自动补全缓存 TTL(毫秒) |
4.2 内存存储(默认,STORAGE_TYPE=mem)
| 变量 | 默认值 | 说明 |
|---|---|---|
MEM_MAX_SPANS | 500000 | 内存最多保留 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_INDEX | zipkin | 索引前缀,实际索引 zipkin-span-YYYY-MM-DD、zipkin-dependency-* |
ES_INDEX_SHARDS | 5 | 每索引分片数 |
ES_INDEX_REPLICAS | 1 | 每索引副本数(单节点 ES 建议 0) |
ES_ENSURE_TEMPLATES | true | 启动时自动创建/更新索引模板 |
ES_DATE_SEPARATOR | - | 日期分隔符(如 -,索引 zipkin-span-2026-10-08) |
ES_TIMEOUT | 10000 | ES 请求超时(毫秒) |
ES_USERNAME / ES_PASSWORD | 空 | ES 认证账号/密码(xpack) |
ES_CREDENTIALS_FILE | 空 | 凭据文件路径(AWS 签名等场景) |
ES_SSL_NO_VERIFY | false | HTTPS 是否跳过证书校验 |
ES_HTTP_LOGGING | 空 | 请求日志级别(如 BASIC/HEADERS/BODY) |
ES_HEALTH_CHECK_ENABLED | true | 是否对 ES 做健康检查 |
ES_HEALTH_CHECK_INTERVAL | 3s | 健康检查间隔 |
ES_PIPELINE | 空 | 写入 ES 的 ingest pipeline |
4.4 Cassandra 存储(STORAGE_TYPE=cassandra3)
| 变量 | 默认值 | 说明 |
|---|---|---|
CASSANDRA_CONTACT_POINTS | localhost | 集群节点列表(逗号分隔,可带端口) |
CASSANDRA_LOCAL_DC | datacenter1 | 本地数据中心名(负载均衡) |
CASSANDRA_KEYSPACE | zipkin2 | keyspace 名 |
CASSANDRA_USERNAME / CASSANDRA_PASSWORD | 空 | 认证 |
CASSANDRA_MAX_CONNECTIONS | 8 | 每节点最大连接数 |
CASSANDRA_ENSURE_SCHEMA | true | 启动时自动执行建表脚本 zipkin2-schema.cql |
CASSANDRA_INDEX_FETCH_MULTIPLIER | 3 | 索引行多取倍数 |
CASSANDRA_USE_SSL | false | 是否启用 SSL |
CASSANDRA_SSL_HOSTNAME_VALIDATION | true | SSL 主机名校验 |
4.5 MySQL 存储(STORAGE_TYPE=mysql)
| 变量 | 默认值 | 说明 |
|---|---|---|
MYSQL_HOST | localhost | MySQL 主机 |
MYSQL_TCP_PORT | 3306 | 端口 |
MYSQL_USER / MYSQL_PASS | 空 | 账号/密码 |
MYSQL_DB | zipkin | 数据库名 |
MYSQL_MAX_CONNECTIONS | 10 | 连接池上限 |
MYSQL_USE_SSL | false | 是否启用 SSL |
MYSQL_JDBC_URL | 空 | 完整 JDBC URL(设置后覆盖 host/port/db) |
五、采集端配置(Collector)
Zipkin 支持 HTTP、gRPC、Kafka、RabbitMQ、ActiveMQ、Pulsar、Scribe 七种采集通道,默认全部启用,未配置地址的通道静默关闭。
5.1 HTTP / gRPC 采集
| 变量 | 默认值 | 说明 |
|---|---|---|
COLLECTOR_HTTP_ENABLED | true | HTTP 采集开关(POST /api/v2/spans) |
COLLECTOR_GRPC_ENABLED | true | gRPC 采集开关 |
COLLECTOR_SAMPLE_RATE | 1.0 | 采集采样率(0.0–1.0);SAMPLING_RATE 为别名 |
5.2 Kafka 采集
| 变量 | 默认值 | 说明 |
|---|---|---|
KAFKA_BOOTSTRAP_SERVERS | 空 | broker 列表(设置即激活,如 kafka1:9092,kafka2:9092) |
KAFKA_TOPIC | zipkin | 消费 topic |
KAFKA_GROUP_ID | zipkin | 消费组 ID |
KAFKA_STREAMS | 1 | 消费者线程数 |
5.3 RabbitMQ 采集
| 变量 | 默认值 | 说明 |
|---|---|---|
RABBIT_ADDRESSES | 空 | 地址列表(设置即激活,如 rabbit1:5672,rabbit2:5672) |
RABBIT_QUEUE | zipkin | 队列名 |
RABBIT_USER / RABBIT_PASSWORD | guest / guest | 认证 |
RABBIT_VIRTUAL_HOST | / | vhost |
RABBIT_CONCURRENCY | 1 | 并发消费者数 |
RABBIT_CONNECTION_TIMEOUT | 60000 | 连接超时(毫秒) |
RABBIT_USE_SSL | false | SSL 开关 |
5.4 ActiveMQ 采集
| 变量 | 默认值 | 说明 |
|---|---|---|
ACTIVEMQ_URL | 空 | broker URL(设置即激活,如 tcp://localhost:61616) |
ACTIVEMQ_QUEUE | zipkin | 队列名 |
ACTIVEMQ_CONCURRENCY | 1 | 并发消费者数 |
ACTIVEMQ_USERNAME / ACTIVEMQ_PASSWORD | 空 | 认证 |
5.5 Pulsar 采集
| 变量 | 默认值 | 说明 |
|---|---|---|
PULSAR_SERVICE_URL | 空 | Pulsar service URL(设置即激活,如 pulsar://my-broker:6650) |
PULSAR_TOPIC | zipkin | topic |
PULSAR_SUBSCRIPTION_NAME | zipkin | 订阅名 |
PULSAR_CONCURRENCY | 1 | 并发消费者数 |
5.6 Scribe(Thrift 遗留协议)
| 变量 | 默认值 | 说明 |
|---|---|---|
SCRIBE_ENABLED | false | 默认关闭(旧 Facebook Thrift 协议,一般无需开启) |
SCRIBE_CATEGORY | zipkin | 类别名 |
COLLECTOR_PORT | 9410 | Scribe 监听端口 |
六、查询与 UI 配置
6.1 查询服务(Query)
| 变量 | 默认值 | 说明 |
|---|---|---|
QUERY_ENABLED | true | 查询 API/UI 开关 |
QUERY_PORT | 9411 | HTTP/UI/API 统一监听端口(改端口即改对外端口) |
QUERY_TIMEOUT | 11s | 查询请求超时 |
QUERY_LOOKBACK | 86400000 | 默认查询回溯窗口(毫秒,默认 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_ENABLED | UI 开关 |
| (固定)UI 基路径 | /zipkin | 根路径 302 跳转到 /zipkin/ |
| (固定)查询默认条数 | 10 | Find Traces 默认返回条数 |
| (固定)默认回溯 | 900000 | UI 默认回溯 15 分钟(毫秒) |
💡 说明:UI 的
query-limit、default-lookback、base-path、environment(右上角环境标签)在zipkin-server-shared.yml的zipkin.ui段中固定,不暴露环境变量占位(除UI_ENABLED)。
七、自追踪配置(Self-Tracing)
Zipkin 可追踪自身处理流程(用于排查自身性能):
| 变量 | 默认值 | 说明 |
|---|---|---|
SELF_TRACING_ENABLED | false | 开关 |
SELF_TRACING_SAMPLE_RATE | 1.0 | 采样率 |
SELF_TRACING_TRACES_PER_SECOND | 1 | 每秒保留条数(采样率=1.0 时生效) |
SELF_TRACING_FLUSH_INTERVAL | 1 | 刷写间隔(秒) |
八、服务端与 HTTP 参数
| 配置(键名) | 默认值 | 说明 |
|---|---|---|
server.port(= QUERY_PORT) | 9411 | 监听端口 |
server.compression.enabled | true | 响应压缩(JSON/JS/CSS/SVG,超过 2KiB 压缩) |
server.use-forward-headers | true | 透传 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。
十一、参考链接
- Zipkin 官方配置文档(configuration.md)
- zipkin-server-shared.yml(默认配置源码)
- Zipkin 存储架构
- Spring Boot Actuator env 端点
本文档由 www.quzuo.net 平台开发