首页
/ Zipkin分布式追踪系统服务端详解

Zipkin分布式追踪系统服务端详解

2025-07-05 08:24:05作者:谭伦延

什么是Zipkin Server

Zipkin Server是分布式追踪系统Zipkin的核心服务组件,它是一个基于Java 17+构建的服务,以可执行JAR包的形式提供。Zipkin Server负责接收、存储和查询分布式追踪数据,并提供Web界面展示追踪结果。

核心架构特点

  1. 模块化设计:支持可配置的Span存储后端和收集器
  2. 默认配置
    • 使用内存存储(适合开发和测试)
    • 启用HTTP收集器(通过POST /api/v2/spans端点)
    • 监听9411端口
  3. 技术栈
    • 基于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):

  1. / - Web用户界面
  2. /config.json - UI配置信息
  3. /api/v2 - 核心API接口
  4. /health - 健康检查端点
  5. /info - 服务版本信息
  6. /metrics - 收集器指标数据
  7. /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数量

核心配置详解

基础配置

  1. QUERY_PORT:服务监听端口,默认9411
  2. QUERY_ENABLED:是否启用查询API,默认true
  3. SEARCH_ENABLED:是否启用搜索功能,默认true
  4. UI_ENABLED:是否启用Web界面,默认true
  5. QUERY_LOOKBACK:查询时间范围限制,默认24小时

存储配置

通过STORAGE_TYPE指定存储类型:

  1. 内存存储(默认):

    • MEM_MAX_SPANS:内存中保留的最大Span数,默认500,000
  2. Cassandra存储

    • CASSANDRA_CONTACT_POINTS:集群节点地址
    • CASSANDRA_KEYSPACE:使用的keyspace
    • CASSANDRA_USERNAME/CASSANDRA_PASSWORD:认证信息
  3. Elasticsearch存储

    • ES_HOSTS:ES节点列表
    • ES_INDEX:索引名前缀
    • ES_USERNAME/ES_PASSWORD:认证信息

Web界面配置

UI相关配置通过/config.json端点提供,可通过环境变量调整:

  1. ZIPKIN_UI_ENVIRONMENT:环境标签
  2. ZIPKIN_UI_QUERY_LIMIT:默认查询结果数量
  3. ZIPKIN_UI_LOGS_URL:日志查询服务URL模板
  4. ZIPKIN_UI_BASEPATH:反向代理场景下的基础路径

追踪归档功能

对于需要长期保存的追踪数据,可配置归档服务器:

ZIPKIN_UI_ARCHIVE_POST_URL=https://archive/api/v2/spans
ZIPKIN_UI_ARCHIVE_URL=https://archive/zipkin/trace/{traceId}

生产环境建议

  1. 存储选择:避免使用内存存储,推荐Cassandra或Elasticsearch
  2. 资源分配:根据数据量合理配置JVM堆大小
  3. 监控集成:配置Prometheus监控关键指标
  4. 安全考虑:生产环境应配置适当的认证机制

通过合理配置,Zipkin Server可以成为分布式系统可观测性的强大工具,帮助开发者快速定位和解决微服务架构中的性能问题。