分布式追踪
可观测性是在生产环境中运行服务的关键特性,使用这些数据,您可以识别异常状态并在发生错误时做出明智的决策来解决问题。分布式追踪是现代应用可观测性的关键要素。Harbor 可以为运维人员和管理员提供分布式追踪数据,以了解当前的运行状态并帮助进行故障排除。Harbor 使用 OpenTelemetry sdk 公开追踪数据,您可以轻松地通过 Otel 协议导出追踪数据,这些数据可以被 OpenTelemetry Collector 消费,然后暴露给几乎所有的本地或云追踪后端。由于 Jaeger 的普及,Harbor 也可以直接将追踪数据暴露给 Jaeger 后端。
在 harbor v2.4 及更高版本中,您可以在 Harbor 配置文件 中启用分布式追踪。但是我们一次只支持一个导出器(如果您启用了追踪,则不能设置 bosh 或不设置任何导出器)。如果您想将数据发送到多个导出器,您可以将 otel 设置为导出器,并利用 OpenTelemetry Collector 重新传输到多个后端。同样,Jaeger 导出器支持代理模式和端点模式,但一次只能启用一种模式。
暴露的数据
追踪数据由几个 Harbor 组件暴露:core
、jobservice
、registry
。以下章节列出了可用的 Harbor 追踪数据。
数据 | 组件 | 示例 |
---|---|---|
接收到的 HTTP 请求 | Core | 每个 HTTP 请求(例如 Harbor UI 上的操作、推送镜像等) |
客户端发送的 HTTP 请求 | Core | core 通过 HTTP 访问其他服务(例如健康检查、代理到 chartmuseum、调用 job service API 等) |
请求 ID | Core | 每个 http 追踪都会添加一个 X-Request-ID ,这将有助于查找日志 |
数据库事务 | Core | 每个触发数据库事务的操作(例如创建项目、推送镜像到 Harbor 等) |
接收到的 HTTP 请求 | Jobservice | 每个 HTTP 请求(例如健康检查、来自 core 的调用等) |
客户端发送的 HTTP 请求 | Jobservice | jobservice 通过 HTTP 访问其他服务(例如复制作业调用 core API 推送镜像、GC 作业调用 registryctl API 等) |
后端作业 | Jobservice | jobservice 运行的任何作业 |
接收到的 HTTP 请求 | Registryctl | 每个 HTTP 请求(例如来自 core 的健康检查、来自 jobservice 的调用等) |
贡献