下载地址/官网:Zipkin Quickstart
Zipkin 用来接收微服务上报的 trace 数据,并展示 Gateway、Consumer、Provider、Mail 之间的调用链。Windows 和 Ubuntu 直接运行官方
zipkin.jar,macOS 使用 Homebrew 安装,前提是已经安装 JDK 21。
Windows 部署 Zipkin
- 创建目录:
New-Item -ItemType Directory -Force -Path D:\apps\zipkin
- 下载官方可执行 JAR:
$zipkinVersion = "3.6.1"
Invoke-WebRequest `
-Uri "https://repo1.maven.org/maven2/io/zipkin/zipkin-server/$zipkinVersion/zipkin-server-$zipkinVersion-exec.jar" `
-OutFile "D:\apps\zipkin\zipkin.jar"
- 启动:
java -jar D:\apps\zipkin\zipkin.jar
- 新开 PowerShell 验证:
Invoke-RestMethod -Uri "http://127.0.0.1:9411/health"
返回内容包含 UP 字样即可。
- 打开页面:
http://127.0.0.1:9411/zipkin/
- 停止服务时,在启动窗口按
Ctrl+C。
Ubuntu 部署 Zipkin
- 下载并安装到
/opt/zipkin:
ZIPKIN_VERSION=3.6.1
sudo mkdir -p /opt/zipkin
sudo curl -L \
"https://repo1.maven.org/maven2/io/zipkin/zipkin-server/${ZIPKIN_VERSION}/zipkin-server-${ZIPKIN_VERSION}-exec.jar" \
-o /opt/zipkin/zipkin.jar
- 创建运行用户:
sudo useradd --system --home /opt/zipkin --shell /usr/sbin/nologin zipkin
sudo chown -R zipkin:zipkin /opt/zipkin
- 创建 systemd 服务:
sudo vim /etc/systemd/system/zipkin.service
写入:
[Unit]
Description=Zipkin Server
After=network.target
[Service]
User=zipkin
Group=zipkin
ExecStart=/usr/bin/java -jar /opt/zipkin/zipkin.jar
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
- 启动并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl enable --now zipkin
- 查看状态:
sudo systemctl status zipkin --no-pager
sudo journalctl -u zipkin -f
- 验证:
curl http://127.0.0.1:9411/health
macOS 部署 Zipkin
macOS 有 Homebrew 包,可以直接安装。
- 安装 Zipkin:
brew install zipkin
- 前台启动,适合观察日志:
zipkin
- 如果要后台运行并随用户登录启动:
brew services start zipkin
- 验证:
curl http://127.0.0.1:9411/health
- 打开页面:
http://127.0.0.1:9411/zipkin/
接入微服务
生产环境 Zipkin 和应用部署在同一台服务器时,项目配置如下:
management:
tracing:
sampling:
probability: 0.1
export:
zipkin:
endpoint: http://127.0.0.1:9411/api/v2/spans
验证调用链的方法:
- 启动 Nacos、Provider、Consumer、Gateway 和 Zipkin。
- 通过 Gateway 发起一次请求。
- 在 Zipkin 页面点击搜索。
- 找到对应 trace,查看每一跳的耗时。
数据保存方式
默认情况下,Zipkin 把数据保存在内存里。进程重启后调用链会丢失,适合本机开发和临时排查。
生产环境要配置外部存储,常用选择是 MySQL 或 Elasticsearch。以 MySQL 为例,需要:
- 创建
zipkin数据库和专用账号。 - 初始化 Zipkin 官方 MySQL 表结构。
- 通过环境变量指定
STORAGE_TYPE=mysql和数据库连接信息。 - 重启 Zipkin。
官方 MySQL 表结构入口:
安全边界
- Zipkin 9411 只给应用和运维人员访问,不要暴露公网。
- 远程查看时使用 VPN、堡垒机或内网反向代理。
- Zipkin 里有接口名、耗时、异常等信息,不能当成公开页面。
常见问题
启动提示找不到 java
先执行 java -version。Ubuntu systemd 环境里使用 /usr/bin/java,如果 Java 装在其他位置,要修改 zipkin.service 里的
ExecStart。
页面能打开但没有数据
检查业务服务的 Zipkin endpoint 是否正确,确认端口是 9411,路径是 /api/v2/spans。然后确认当前请求的采样率不是 0。
调用链只有单个服务
说明 trace 上下文没有跨服务传播。检查 Gateway、Consumer、Provider、Mail 是否都引入了链路追踪相关依赖,并确认配置生效。
重启后数据消失
这是默认内存存储的正常行为。需要保留历史数据时,配置 MySQL 或 Elasticsearch 存储。