
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Zipkin 是一款分布式追踪系统。它有助于收集解决服务架构中延迟问题所需的时序数据,功能包括此类数据的收集与查询。
如果日志文件中有跟踪ID,你可以直接跳转到对应的跟踪数据。否则,你可以根据服务名称、操作名称、标签和持续时间等属性进行查询。系统会为你汇总一些重要数据,例如在某个服务中花费的时间百分比,以及操作是否失败。
Zipkin UI 还提供依赖图,展示有多少跟踪请求经过了每个应用。这有助于识别聚合行为,包括错误路径或对已弃用服务的调用。
应用需要进行“ instrumentation”(即 instrumentation 配置)才能向 Zipkin 报告跟踪数据。这通常意味着需要配置追踪器或 instrumentation 库。向 Zipkin 报告数据最常用的方式是通过 HTTP 或 Kafka,但也存在许多其他选项,如 Apache ActiveMQ、gRPC 和 RabbitMQ。提供给 UI 的数据可以存储在内存中,或通过受支持的后端(如 Apache Cassandra 或 Elasticsearch)持久化存储。
最快速的启动方式是获取最新发布的服务器作为独立可执行 JAR 文件。注意,Zipkin 服务器需要至少 JRE 8 环境。例如:
bashcurl -sSL https://zipkin.io/quickstart.sh | bash -s java -jar zipkin.jar
你也可以通过 Docker 启动 Zipkin:
bashdocker run -d -p 9411:9411 openzipkin/zipkin
服务器启动后,你可以通过 Zipkin UI 在 http://your_host:9411/zipkin/ 查看跟踪数据。
如果你的应用尚未发送跟踪数据,请使用Zipkin instrumentation 进行配置,或尝试我们的https://github.com/openzipkin?utf8=%E2%9C%93&q=example%E3%80%82
有关配置详情,请查看 zipkin-server 文档,或参考 https://github.com/openzipkin/docker-zipkin 了解如何使用 docker-compose。
核心库 供 Zipkin instrumentation 和 Zipkin 服务器使用。其最低支持 Java 6 语言级别,以支持编写代理 instrumentation。
该库包含 Zipkin v1 和 v2 JSON 格式的内置编解码器。通过精简和重新打包所用类,避免了对 gson(JSON 库)的直接依赖。生成的 JAR 包大小为 155k,不会与你使用的任何库冲突。
示例:
java// 所有数据都记录在同一个端点,与你的服务图关联 localEndpoint = Endpoint.newBuilder().serviceName("tweetie").ip("192.168.0.1").build() span = Span.newBuilder() .traceId("d3d200866a77cc59") .id("d3d200866a77cc59") .name("targz") .localEndpoint(localEndpoint) .timestamp(epochMicros()) .duration(durationInMicros) .putTag("compression.level", "9"); // 现在,你可以将其编码为 JSON bytes = SpanBytesEncoder.JSON_V2.encode(span);
注意:以上仅为示例,通常你会希望使用现有的追踪库,如 https://github.com/openzipkin/brave%E3%80%82
Zipkin 包含 StorageComponent,用于存储和查询跨度(span)及依赖链接。服务器、收集器或跨度报告器都会用到它。因此,存储组件的依赖极少,但大多数需要 Java 8+ 环境。
示例:
java// 此操作不会创建网络连接 storage = ElasticsearchStorage.newBuilder() .hosts(asList("http://myelastic:9200")).build(); // 准备调用 traceCall = storage.spanStore().getTrace("d3d200866a77cc59"); // 同步或异步执行 trace = traceCall.execute(); // 清理会话等资源 storage.close();
InMemoryStorage 组件打包在 Zipkin 核心库中。它既不持久化数据,也不适用于实际工作负载。其用途是测试,例如在笔记本电脑上启动服务器而无需任何数据库。
Cassandra 组件使用 Cassandra 3.11.3+ 特性,但会针对最新的 Cassandra 3.11 补丁版本进行测试。
这是我们的第二代 Cassandra 模式。它使用 UDT 存储跨度,因此在 cqlsh 中看起来类似 Zipkin v2 JSON。其设计考虑了可扩展性,并结合使用 SASI 和手动实现的索引,使查询大量数据时更高效。
注意:此存储需要通过https://github.com/openzipkin/zipkin-dependencies%E4%BE%9D%E8%B5%96%E9%93%BE%E6%8E%A5%E3%80%82
Elasticsearch 组件使用 Elasticsearch 5+ 特性,但会针对 Elasticsearch 6-7.x 进行测试。
它将跨度存储为 Zipkin v2 JSON,以便与其他工具集成。为帮助扩展,它结合使用自定义索引和手动实现的索引。
注意:此存储需要通过https://github.com/openzipkin/zipkin-dependencies%E8%81%9A%E5%90%88%E4%BE%9D%E8%B5%96%E9%93%BE%E6%8E%A5%E3%80%82
以下 API 端点提供搜索功能,默认启用。搜索主要用于 UI 的跟踪列表页面。
GET /services - distinct Span.localServiceNameGET /remoteServices?serviceName=X - 按 Span.localServiceName 筛选的 distinct Span.remoteServiceNameGET /spans?serviceName=X - 按 Span.localServiceName 筛选的 distinct Span.nameGET /autocompleteKeys - 受配置白名单限制的 Span.tags 键的 distinct 值GET /autocompleteValues?key=X - 按键筛选的 Span.tags 值的 distinct 值GET /traces - 匹配包含上述条件的查询的跟踪数据禁用搜索后,只能通过 ID(GET /trace/{traceId})检索跟踪数据。仅当存在其他查找跟踪 ID 的方式(如日志)时,禁用搜索才可行。禁用搜索可降低存储成本或提高写入吞吐量。
当 Zipkin 通过环境变量 SEARCH_ENABLED=false 运行时,会隐含 StorageComponent.Builder.searchEnabled(false)。
以下组件不再推荐使用,但为过渡到受支持的组件提供帮助。这些组件标为“v1”,因为它们使用基于 Zipkin V1 Thrift 模型的数据布局,而非当前使用的更简单的 v2 数据模型。
MySQL
MySQL v1 组件使用 MySQL 5.6+ 特性,但会针对 MariaDB 10.3 进行测试。
该模式设计易于理解和上手,但并非为性能而设计。例如,跨度字段作为列,因此你可以使用 SQL 执行临时查询。然而,此组件存在https://github.com/openzipkin/zipkin/issues/1233%EF%BC%9A%E5%A6%82%E6%9E%9C%E5%AD%98%E5%85%A5%E5%A4%A7%E9%87%8F%E6%95%B0%E6%8D%AE%EF%BC%8C%E6%9F%A5%E8%AF%A2%E6%9C%80%E7%BB%88%E4%BC%9A%E8%80%97%E6%97%B6%E6%95%B0%E7%A7%92%E3%80%82
此存储不需要通过https://github.com/openzipkin/zipkin-dependencies%E4%BE%9D%E8%B5%96%E9%93%BE%E6%8E%A5%E3%80%82%E4%BD%86%E8%BF%90%E8%A1%8C%E4%BD%9C%E4%B8%9A%E5%8F%AF%E6%8F%90%E9%AB%98%E4%BE%9D%E8%B5%96%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%80%A7%E8%83%BD%E3%80%82
Cassandra
Cassandra v1 组件使用 Cassandra 2.2+ 特性,但会针对最新的 Cassandra 3.11 补丁版本进行测试。
CQL 编写于 2015 年,基于 *** 的原始 Cassandra 模式,并经过扩展。跨度存储为不透明的 Thrift 数据,这意味着你无法在 cqlsh 中查询字段。该模式为可扩展性而设计,包括手动实现的索引,使查询大量数据时更高效。
注意:此存储需要通过https://github.com/openzipkin/zipkin-dependencies%E4%BE%9D%E8%B5%96%E9%93%BE%E6%8E%A5%E3%80%82
Zipkin 服务器 通过 HTTP POST 接收跨度数据,并响应来自 UI 的查询。它还可以运行收集器,如 RabbitMQ 或 Kafka。
要从当前检出的源码运行服务器,请执行以下命令。编译源码需要 JDK 11。
bash# 构建服务器及其依赖 $ ./mvnw -DskipTests --also-make -pl zipkin-server clean install # 运行服务器 $ java -jar ./zipkin-server/target/zipkin-server-*exec.jar
服务器制品的 Maven groupId 为 io.zipkin,库制品的 Maven groupId 为 io.zipkin.zipkin2。
发布版本上传至 Bintray 并同步至 Maven Central。
提交至 master 分支后,快照版本上传至 JFrog。
zipkin-server 的发布版本发布至 Docker Hub,镜像名为 openzipkin/zipkin。详情参见 https://github.com/openzipkin/docker-zipkin%E3%80%82
[***] 包含版本化文件夹,其中包含每次(非 PR)构建及发布版本的 Javadoc。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务