Zipkin分布式追踪系统服务端详解
2025-07-05 08:24:05作者:谭伦延
什么是Zipkin Server
Zipkin Server是分布式追踪系统Zipkin的核心服务组件,它是一个基于Java 17+构建的服务,以可执行JAR包的形式提供。Zipkin Server负责接收、存储和查询分布式追踪数据,并提供Web界面展示追踪结果。
核心架构特点
- 模块化设计:支持可配置的Span存储后端和收集器
- 默认配置:
- 使用内存存储(适合开发和测试)
- 启用HTTP收集器(通过POST /api/v2/spans端点)
- 监听9411端口
- 技术栈:
- 基于Armeria网络框架构建
- 内部使用Spring Boot,但不建议作为常规Spring Boot应用使用
快速入门指南
基础启动
最简单的启动方式是使用官方提供的独立可执行JAR包:
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
启动后,可通过浏览器访问 http://localhost:9411/zipkin 查看追踪数据。
主要功能端点
Zipkin Server提供以下HTTP端点(基础URL为http://your_host:9411):
/
- Web用户界面/config.json
- UI配置信息/api/v2
- 核心API接口/health
- 健康检查端点/info
- 服务版本信息/metrics
- 收集器指标数据/prometheus
- Prometheus格式的指标数据
跨域资源共享(CORS)配置
默认情况下,所有/api/v2
下的端点都允许跨域请求。可通过设置环境变量调整:
ZIPKIN_QUERY_ALLOWED_ORIGINS=http://example.com
日志配置
默认日志级别为INFO,可通过以下方式调整:
java -jar zipkin.jar --logging.level.zipkin2=DEBUG
支持Spring Boot的Logback集成配置,如完整堆栈打印:
java -jar zipkin.jar --logging.exception-conversion-word=%wEx{full}
指标监控
Prometheus配置示例
- job_name: 'zipkin'
scrape_interval: 5s
metrics_path: '/prometheus'
static_configs:
- targets: ['localhost:9411']
收集器关键指标
指标名称 | 描述 |
---|---|
counter.zipkin_collector.messages.$transport | 接收的消息总数 |
counter.zipkin_collector.messages_dropped.$transport | 丢弃的消息总数 |
counter.zipkin_collector.spans.$transport | 接收的Span总数 |
gauge.zipkin_collector.message_spans.$transport | 单条消息中的Span数量 |
核心配置详解
基础配置
QUERY_PORT
:服务监听端口,默认9411QUERY_ENABLED
:是否启用查询API,默认trueSEARCH_ENABLED
:是否启用搜索功能,默认trueUI_ENABLED
:是否启用Web界面,默认trueQUERY_LOOKBACK
:查询时间范围限制,默认24小时
存储配置
通过STORAGE_TYPE
指定存储类型:
-
内存存储(默认):
MEM_MAX_SPANS
:内存中保留的最大Span数,默认500,000
-
Cassandra存储:
CASSANDRA_CONTACT_POINTS
:集群节点地址CASSANDRA_KEYSPACE
:使用的keyspaceCASSANDRA_USERNAME
/CASSANDRA_PASSWORD
:认证信息
-
Elasticsearch存储:
ES_HOSTS
:ES节点列表ES_INDEX
:索引名前缀ES_USERNAME
/ES_PASSWORD
:认证信息
Web界面配置
UI相关配置通过/config.json
端点提供,可通过环境变量调整:
ZIPKIN_UI_ENVIRONMENT
:环境标签ZIPKIN_UI_QUERY_LIMIT
:默认查询结果数量ZIPKIN_UI_LOGS_URL
:日志查询服务URL模板ZIPKIN_UI_BASEPATH
:反向代理场景下的基础路径
追踪归档功能
对于需要长期保存的追踪数据,可配置归档服务器:
ZIPKIN_UI_ARCHIVE_POST_URL=https://archive/api/v2/spans
ZIPKIN_UI_ARCHIVE_URL=https://archive/zipkin/trace/{traceId}
生产环境建议
- 存储选择:避免使用内存存储,推荐Cassandra或Elasticsearch
- 资源分配:根据数据量合理配置JVM堆大小
- 监控集成:配置Prometheus监控关键指标
- 安全考虑:生产环境应配置适当的认证机制
通过合理配置,Zipkin Server可以成为分布式系统可观测性的强大工具,帮助开发者快速定位和解决微服务架构中的性能问题。