ObservatoryPod 0.1.1

ObservatoryPod 0.1.1

Leon_Deng维护。



  • 作者
  • RavenDeng

Observatory

logo

使用Swift编写的分布式追踪和日志客户端,符合OpenTelemetry规范。

关于Opentelemetry的详细信息,请访问此处

它能做什么?

演示场景

这里是一个用户活动示例。在这个场景中,用户执行了以下操作

  • 进入追踪页面
  • 切换到另一个页面
  • 按下一个按钮并切换到另一个页面
  • 查看表格列表,选择其中一个项目
  • 出现一个警告,用户点击了“确定”

showcase

数据浏览

这里是在Zipkin后端收集的分布式追踪数据,通过搜索追踪ID,开发者可以在用户使用应用时查看详细信息。包括

  • 每个跨度持续时间
  • 添加到跨度的属性
  • 在跨度期间发生的事件

backend

摘要

简而言之,帮助应用开发者提高其应用的可观测性。通过向后端收集器提供分布式追踪数据,开发者可以了解日志之间的关系,而不是在无数的日志中寻找是否有相关日志,并试图整理整个情况。

当分布式追踪数据发送到后端时,在Grafana后端看起来像这样

showCase

您可以监控您定义和创建的每个跨度,了解它们之间的关系,以及它们携带的更多信息。

功能

  • 纯Swift编码

  • 支持MacOS/iOS

  • 兼容iOS 10+

  • 提供日志和分布式追踪功能

  • 默认支持Zipkin

  • 支持Cocoapods和SPM集成

  • 还有更多!

安装

Cocoapods

Observatory通过CocoaPods提供。要安装它,请将以下行添加到您的Podfile中

pod 'ObservatoryPod'

或者,只有需要时才集成模块

pod 'Observatory/Tracing'

对于默认的Zipkin实现

pod 'Observatory/TracingZipkin'

SPM

添加您的GitHub账户并从Xcode安装包

与CocoaPods类似,SPM为开发者提供了4个模块进行导入

ObservatoryCommonObservatoryLoggingObservatoryTracingZipkinExport

使用方法

Cocoapod演示

  1. 有关Cocoapods集成和示例,请克隆此存储库,然后导航到Example/SFRoleDriverModels.xcworkspace
  2. 使用命令行并运行命令pod install(假设您已经安装了CocoaPods)
  3. 使用XCode运行SFRoleDriverModels.xcworkspace

SPM演示

  1. 有关SPM集成和示例,请克隆此存储库,然后导航到ObservatorySPMExample/ObservatorySPMExample.xcodeproj
  2. 使用Xcode运行项目

组件结构

SDK中的组件布局如下

ObservatoryStructure

  • TracerProvider:用于创建和管理追踪器,管理一个Processors队列和一个Sampler,持有常用数据的资源实例,在大多数情况下,一个共享的单例就足够了。
  • Tracer:由tracerProvider创建,作为span创建者。
  • 采样器:当 tracer 创建一个 span 时,它应该传递给 sampler,然后决定是否应该记录和导出。
  • 处理器:由用户创建并在其创建期间传递给 TracerPrvider 的拦截器,用于处理 span 生命周期,在 span 的开始和结束时可以对 span 执行额外的操作。它将按顺序一个接一个地执行,这些顺序由 tracerprovider 保留的队列控制。
  • 导出器:由用户创建并在其创建期间传递给 Processor,每个处理器只能绑定一个导出器。它通过 API 处理将 span 数据导出到远程分布式跟踪数据收集器。
  • 资源:由用户创建并在其创建期间传递给 TracerPrvider,通常与 span 数据一起发送到远程分布式跟踪数据收集器的常用数据。

分布式跟踪数据(Span)数据流

ObservartoryDataFlow

  1. 创建并配置 TracerProvider。在 App 生命周期内必须由一个实例保留,以防系统将其回收并销毁。
  2. 追踪器:由 TracerProvider 创建,通常一个就足够了。
  3. 当追踪器创建一个 span 时,应该先将它传递给采样器,采样器可以由用户定义并决定此 span 是否有效以及是否可以使用。
  4. 所有处理器在 span 生命周期中都会调用其 onStartonEnd 方法。
  5. 在 span 结束后,它将被传递给导出器进行导出。

作者

RavenDeng [email protected]

许可证

Observatory 根据 MIT 许可证可用。有关更多信息,请参阅 LICENSE 文件。