使用Swift编写的分布式追踪和日志客户端,符合OpenTelemetry规范。
关于Opentelemetry的详细信息,请访问此处
这里是一个用户活动示例。在这个场景中,用户执行了以下操作
- 进入追踪页面
- 切换到另一个页面
- 按下一个按钮并切换到另一个页面
- 查看表格列表,选择其中一个项目
- 出现一个警告,用户点击了“确定”
这里是在Zipkin后端收集的分布式追踪数据,通过搜索追踪ID,开发者可以在用户使用应用时查看详细信息。包括
- 每个跨度持续时间
- 添加到跨度的属性
- 在跨度期间发生的事件
简而言之,帮助应用开发者提高其应用的可观测性。通过向后端收集器提供分布式追踪数据,开发者可以了解日志之间的关系,而不是在无数的日志中寻找是否有相关日志,并试图整理整个情况。
当分布式追踪数据发送到后端时,在Grafana后端看起来像这样
您可以监控您定义和创建的每个跨度,了解它们之间的关系,以及它们携带的更多信息。
-
纯Swift编码
-
支持MacOS/iOS
-
兼容iOS 10+
-
提供日志和分布式追踪功能
-
默认支持Zipkin
-
支持Cocoapods和SPM集成
-
还有更多!
Observatory通过CocoaPods提供。要安装它,请将以下行添加到您的Podfile中
pod 'ObservatoryPod'
或者,只有需要时才集成模块
pod 'Observatory/Tracing'
对于默认的Zipkin实现
pod 'Observatory/TracingZipkin'
添加您的GitHub账户并从Xcode安装包
与CocoaPods类似,SPM为开发者提供了4个模块进行导入
ObservatoryCommon
、ObservatoryLogging
、ObservatoryTracing
、ZipkinExport
- 有关Cocoapods集成和示例,请克隆此存储库,然后导航到
Example/SFRoleDriverModels.xcworkspace
- 使用命令行并运行命令
pod install
(假设您已经安装了CocoaPods) - 使用XCode运行
SFRoleDriverModels.xcworkspace
- 有关SPM集成和示例,请克隆此存储库,然后导航到
ObservatorySPMExample/ObservatorySPMExample.xcodeproj
- 使用Xcode运行项目
SDK中的组件布局如下
- TracerProvider:用于创建和管理追踪器,管理一个
Processors
队列和一个Sampler
,持有常用数据的资源实例,在大多数情况下,一个共享的单例就足够了。 - Tracer:由
tracerProvider
创建,作为span
创建者。 - 采样器:当
tracer
创建一个span
时,它应该传递给sampler
,然后决定是否应该记录和导出。 - 处理器:由用户创建并在其创建期间传递给
TracerPrvider
的拦截器,用于处理 span 生命周期,在span
的开始和结束时可以对span
执行额外的操作。它将按顺序一个接一个地执行,这些顺序由tracerprovider
保留的队列控制。 - 导出器:由用户创建并在其创建期间传递给
Processor
,每个处理器只能绑定一个导出器。它通过 API 处理将 span 数据导出到远程分布式跟踪数据收集器。 - 资源:由用户创建并在其创建期间传递给
TracerPrvider
,通常与 span 数据一起发送到远程分布式跟踪数据收集器的常用数据。
- 创建并配置 TracerProvider。在 App 生命周期内必须由一个实例保留,以防系统将其回收并销毁。
- 追踪器:由 TracerProvider 创建,通常一个就足够了。
- 当追踪器创建一个 span 时,应该先将它传递给采样器,采样器可以由用户定义并决定此 span 是否有效以及是否可以使用。
- 所有处理器在 span 生命周期中都会调用其
onStart
和onEnd
方法。 - 在 span 结束后,它将被传递给导出器进行导出。
RavenDeng [email protected]
Observatory 根据 MIT 许可证可用。有关更多信息,请参阅 LICENSE 文件。