亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

Opentelemetry Traces數據模型介紹

2023-10-30 01:57:52
31
0

Tracer Provider

Tracer Provider(有時稱為TracerProvider)是  Tracers 的工廠。在大多數應用程序中,Tracer Provider 會初始化一次,并且其生命周期與應用程序的生命周期相匹配。Tracer Provider 初始化還包括 Resource 和 Exporter 初始化。這通常是使用 OpenTelemetry 進行跟蹤的第一步。在某些語言的 SDK 中,已經為您初始化了全局 Tracer Provider。

Tracer

Tracer 創建的跨度包含有關給定操作(例如服務中的請求)所發生情況的更多信息。跟蹤器是從跟蹤器提供者創建的。

Tracer Exporter

跟蹤導出器將跟蹤發送給消費者。該使用者可以是用于調試和開發時的標準輸出、OpenTelemetry Collector 或您選擇的任何開源或供應商后端。

上下文傳播

上下文傳播是實現分布式跟蹤的核心概念。通過上下文傳播,Span 可以相互關聯并組裝成跟蹤,無論 Span 是在哪里生成的。我們通過兩個子概念來定義上下文傳播:上下文和傳播。

上下文是一個對象,其中包含發送和接收服務的信息,用于將一個跨度與另一個跨度關聯起來,并將其與整個跟蹤相關聯。例如,如果服務 A 調用服務 B,則服務 A 中 ID 位于上下文中的 Span 將用作服務 B 中創建的下一個 Span 的父 Span。上下文中的跟蹤 ID 將用于下一個 Span。也在服務 B 中創建了 Span,這表示該 Span 與服務 A 中的 Span 屬于同一跟蹤的一部分。

傳播是在服務和進程之間移動上下文的機制。它序列化或反序列化上下文對象,并提供要從一個服務傳播到另一服務的相關跟蹤信息。傳播通常由檢測庫處理,并且對用戶來說是透明的,但如果您需要手動傳播上下文,則可以使用傳播 API。

OpenTelemetry 支持多種不同的上下文格式。OpenTelemetry 跟蹤中使用的默認格式稱為 W3C TraceContext。每個上下文對象都存儲在一個范圍中。有關上下文對象的詳細信息以及其他可用信息,請參閱跨度上下文。

通過組合上下文和傳播,您現在可以組裝跟蹤。

跨度

跨度代表一個工作或操作單元。Span 是 Traces 的構建塊。在 OpenTelemetry 中,它們包含以下信息:

  • 姓名
  • 父跨度 ID(對于根跨度為空)
  • 開始和結束時間戳
  • 跨度上下文
  • 屬性
  • 跨度事件
  • 跨度links
  • 跨度狀態

樣本跨度:

 
{
  "trace_id": "7bba9f33312b3dbb8b2c2c62bb7abe2d",
  "parent_id": "",
  "span_id": "086e83747d0e381e",
  "name": "/v1/sys/health",
  "start_time": "2021-10-22 16:04:01.209458162 +0000 UTC",
  "end_time": "2021-10-22 16:04:01.209514132 +0000 UTC",
  "status_code": "STATUS_CODE_OK",
  "status_message": "",
  "attributes": {
    "net.transport": "IP.TCP",
    "net.peer.ip": "172.17.0.1",
    "net.peer.port": "51820",
    "net.host.ip": "10.177.2.152",
    "net.host.port": "26040",
    "http.method": "GET",
    "http.target": "/v1/sys/health",
    "http.server_name": "mortar-gateway",
    "http.route": "/v1/sys/health",
    "http.user_agent": "Consul Health Check",
    "http.scheme": "http",
    "http.host": "10.177.2.152:26040",
    "http.flavor": "1.1"
  },
  "events": [
    {
      "name": "",
      "message": "OK",
      "timestamp": "2021-10-22 16:04:01.209512872 +0000 UTC"
    }
  ]
}

跨度可以嵌套,正如父跨度 ID 的存在所暗示的那樣:子跨度表示子操作。這使得跨度能夠更準確地捕獲應用程序中完成的工作。

跨度上下文

Span 上下文是每個 Span 上的不可變對象,包含以下內容:

  • 表示該跨度所屬跟蹤的跟蹤 ID
  • Span 的 Span ID
  • 跟蹤標志,包含有關跟蹤信息的二進制編碼
  • 跟蹤狀態,可以攜帶特定于供應商的跟蹤信息的鍵值對列表

Span 上下文是 Span 的一部分,與 分布式上下文和 Baggage一起序列化和傳播。

由于 Span Context 包含 Trace ID,因此在創建 Span Links時會使用它。

屬性

屬性是包含元數據的鍵值對,可用于注釋 Span 以攜帶有關其正在跟蹤的操作的信息。

例如,如果跨度跟蹤將商品添加到電子商務系統中用戶的購物車的操作,則您可以捕獲用戶的 ID、要添加到購物車的商品的 ID 以及購物車 ID。

屬性具有每種語言 SDK 實現的以下規則:

  • 鍵必須是非空字符串值
  • 值必須是非空字符串、布爾值、浮點值、整數或這些值的數組

此外,還有 語義屬性,它們是通常出現在常見操作中的元數據的已知命名約定。盡可能使用語義屬性命名很有幫助,以便跨系統標準化常見類型的元數據。

跨度事件

Span 事件可以被視為 Span 上的結構化日志消息(或注釋),通常用于表示 Span 持續時間內有意義的奇異時間點。

例如,考慮 Web 瀏覽器中的兩種場景:

  1. 跟蹤頁面加載
  2. 表示頁面何時變為交互式

Span 最適合第一種情況,因為它是一個有開始和結束的操作。

跨度事件最適合跟蹤第二種情況,因為它代表一個有意義的單一時間點。

跨度

links的存在使您可以將一個跨度與一個或多個跨度關聯起來,從而暗示一種因果關系。例如,假設我們有一個分布式系統,其中一些操作是通過跟蹤來跟蹤的。

為了響應其中一些操作,附加操作會排隊等待執行,但其執行是異步的。我們也可以通過跟蹤來跟蹤后續操作。

我們希望將后續操作的跟蹤與第一個跟蹤關聯起來,但我們無法預測后續操作何時開始。我們需要關聯這兩個跟蹤,因此我們將使用span links。

您可以將第一條跡線的最后一個span links到第二條跡線中的第一個跨度。現在,它們彼此之間存在著因果關系。

links是可選的,但它是一種將跟蹤跨度相互關聯的好方法。

跨度狀態

狀態將附加到跨度。通常,當應用程序代碼中存在已知錯誤(例如異常)時,您將設置跨度狀態。跨度狀態將被標記為以下值之一:

  • Unset
  • Ok
  • Error

當處理異常時,Span狀態可以設置為Error。否則,Span 狀態為 Unset 狀態。通過將 Span 狀態設置為 Unset,處理 Span 的后端現在可以分配最終狀態。

跨度類型

創建跨度時,它是ClientServerInternalProducer或之一Consumer。這種跨度類型向跟蹤后端提供了有關如何組裝跟蹤的提示。根據 OpenTelemetry 規范,服務器 Span 的父級通常是遠程客戶端 Span,客戶端 Span 的子級通常是服務器 Span。類似地,消費者 Span 的父級始終是生產者,生產者 Span 的子級始終是消費者。如果未提供,則假定跨度類型是內部的。

有關 SpanKind 的更多信息,請參閱 SpanKind。

客戶端

客戶端跨度表示同步傳出遠程調用,例如傳出 HTTP 請求或數據庫調用。請注意,在這種情況下,“同步”并不是指async/await,而是指它沒有排隊等待稍后處理的事實。

服務器

服務器跨度表示同步傳入遠程調用,例如傳入 HTTP 請求或遠程過程調用。

內部類型

內部跨度表示不跨越流程邊界的操作。諸如檢測函數調用或 Express 中間件之類的事情可能會使用內部跨度。

生產者

生產者跨度表示創建一個稍后可能會異步處理的作業。它可能是一項遠程作業,例如插入作業隊列的作業,也可能是由事件偵聽器處理的本地作業。

消費者

消費者跨度代表對生產者創建的作業的處理,并且可能在生產者跨度已經結束之后很久才開始。

0條評論
作者已關閉評論
李****強
15文章數
0粉絲數
李****強
15 文章 | 0 粉絲
原創

Opentelemetry Traces數據模型介紹

2023-10-30 01:57:52
31
0

Tracer Provider

Tracer Provider(有時稱為TracerProvider)是  Tracers 的工廠。在大多數應用程序中,Tracer Provider 會初始化一次,并且其生命周期與應用程序的生命周期相匹配。Tracer Provider 初始化還包括 Resource 和 Exporter 初始化。這通常是使用 OpenTelemetry 進行跟蹤的第一步。在某些語言的 SDK 中,已經為您初始化了全局 Tracer Provider。

Tracer

Tracer 創建的跨度包含有關給定操作(例如服務中的請求)所發生情況的更多信息。跟蹤器是從跟蹤器提供者創建的。

Tracer Exporter

跟蹤導出器將跟蹤發送給消費者。該使用者可以是用于調試和開發時的標準輸出、OpenTelemetry Collector 或您選擇的任何開源或供應商后端。

上下文傳播

上下文傳播是實現分布式跟蹤的核心概念。通過上下文傳播,Span 可以相互關聯并組裝成跟蹤,無論 Span 是在哪里生成的。我們通過兩個子概念來定義上下文傳播:上下文和傳播。

上下文是一個對象,其中包含發送和接收服務的信息,用于將一個跨度與另一個跨度關聯起來,并將其與整個跟蹤相關聯。例如,如果服務 A 調用服務 B,則服務 A 中 ID 位于上下文中的 Span 將用作服務 B 中創建的下一個 Span 的父 Span。上下文中的跟蹤 ID 將用于下一個 Span。也在服務 B 中創建了 Span,這表示該 Span 與服務 A 中的 Span 屬于同一跟蹤的一部分。

傳播是在服務和進程之間移動上下文的機制。它序列化或反序列化上下文對象,并提供要從一個服務傳播到另一服務的相關跟蹤信息。傳播通常由檢測庫處理,并且對用戶來說是透明的,但如果您需要手動傳播上下文,則可以使用傳播 API。

OpenTelemetry 支持多種不同的上下文格式。OpenTelemetry 跟蹤中使用的默認格式稱為 W3C TraceContext。每個上下文對象都存儲在一個范圍中。有關上下文對象的詳細信息以及其他可用信息,請參閱跨度上下文。

通過組合上下文和傳播,您現在可以組裝跟蹤。

跨度

跨度代表一個工作或操作單元。Span 是 Traces 的構建塊。在 OpenTelemetry 中,它們包含以下信息:

  • 姓名
  • 父跨度 ID(對于根跨度為空)
  • 開始和結束時間戳
  • 跨度上下文
  • 屬性
  • 跨度事件
  • 跨度links
  • 跨度狀態

樣本跨度:

 
{
  "trace_id": "7bba9f33312b3dbb8b2c2c62bb7abe2d",
  "parent_id": "",
  "span_id": "086e83747d0e381e",
  "name": "/v1/sys/health",
  "start_time": "2021-10-22 16:04:01.209458162 +0000 UTC",
  "end_time": "2021-10-22 16:04:01.209514132 +0000 UTC",
  "status_code": "STATUS_CODE_OK",
  "status_message": "",
  "attributes": {
    "net.transport": "IP.TCP",
    "net.peer.ip": "172.17.0.1",
    "net.peer.port": "51820",
    "net.host.ip": "10.177.2.152",
    "net.host.port": "26040",
    "http.method": "GET",
    "http.target": "/v1/sys/health",
    "http.server_name": "mortar-gateway",
    "http.route": "/v1/sys/health",
    "http.user_agent": "Consul Health Check",
    "http.scheme": "http",
    "http.host": "10.177.2.152:26040",
    "http.flavor": "1.1"
  },
  "events": [
    {
      "name": "",
      "message": "OK",
      "timestamp": "2021-10-22 16:04:01.209512872 +0000 UTC"
    }
  ]
}

跨度可以嵌套,正如父跨度 ID 的存在所暗示的那樣:子跨度表示子操作。這使得跨度能夠更準確地捕獲應用程序中完成的工作。

跨度上下文

Span 上下文是每個 Span 上的不可變對象,包含以下內容:

  • 表示該跨度所屬跟蹤的跟蹤 ID
  • Span 的 Span ID
  • 跟蹤標志,包含有關跟蹤信息的二進制編碼
  • 跟蹤狀態,可以攜帶特定于供應商的跟蹤信息的鍵值對列表

Span 上下文是 Span 的一部分,與 分布式上下文和 Baggage一起序列化和傳播。

由于 Span Context 包含 Trace ID,因此在創建 Span Links時會使用它。

屬性

屬性是包含元數據的鍵值對,可用于注釋 Span 以攜帶有關其正在跟蹤的操作的信息。

例如,如果跨度跟蹤將商品添加到電子商務系統中用戶的購物車的操作,則您可以捕獲用戶的 ID、要添加到購物車的商品的 ID 以及購物車 ID。

屬性具有每種語言 SDK 實現的以下規則:

  • 鍵必須是非空字符串值
  • 值必須是非空字符串、布爾值、浮點值、整數或這些值的數組

此外,還有 語義屬性,它們是通常出現在常見操作中的元數據的已知命名約定。盡可能使用語義屬性命名很有幫助,以便跨系統標準化常見類型的元數據。

跨度事件

Span 事件可以被視為 Span 上的結構化日志消息(或注釋),通常用于表示 Span 持續時間內有意義的奇異時間點。

例如,考慮 Web 瀏覽器中的兩種場景:

  1. 跟蹤頁面加載
  2. 表示頁面何時變為交互式

Span 最適合第一種情況,因為它是一個有開始和結束的操作。

跨度事件最適合跟蹤第二種情況,因為它代表一個有意義的單一時間點。

跨度

links的存在使您可以將一個跨度與一個或多個跨度關聯起來,從而暗示一種因果關系。例如,假設我們有一個分布式系統,其中一些操作是通過跟蹤來跟蹤的。

為了響應其中一些操作,附加操作會排隊等待執行,但其執行是異步的。我們也可以通過跟蹤來跟蹤后續操作。

我們希望將后續操作的跟蹤與第一個跟蹤關聯起來,但我們無法預測后續操作何時開始。我們需要關聯這兩個跟蹤,因此我們將使用span links。

您可以將第一條跡線的最后一個span links到第二條跡線中的第一個跨度。現在,它們彼此之間存在著因果關系。

links是可選的,但它是一種將跟蹤跨度相互關聯的好方法。

跨度狀態

狀態將附加到跨度。通常,當應用程序代碼中存在已知錯誤(例如異常)時,您將設置跨度狀態。跨度狀態將被標記為以下值之一:

  • Unset
  • Ok
  • Error

當處理異常時,Span狀態可以設置為Error。否則,Span 狀態為 Unset 狀態。通過將 Span 狀態設置為 Unset,處理 Span 的后端現在可以分配最終狀態。

跨度類型

創建跨度時,它是ClientServerInternalProducer或之一Consumer。這種跨度類型向跟蹤后端提供了有關如何組裝跟蹤的提示。根據 OpenTelemetry 規范,服務器 Span 的父級通常是遠程客戶端 Span,客戶端 Span 的子級通常是服務器 Span。類似地,消費者 Span 的父級始終是生產者,生產者 Span 的子級始終是消費者。如果未提供,則假定跨度類型是內部的。

有關 SpanKind 的更多信息,請參閱 SpanKind。

客戶端

客戶端跨度表示同步傳出遠程調用,例如傳出 HTTP 請求或數據庫調用。請注意,在這種情況下,“同步”并不是指async/await,而是指它沒有排隊等待稍后處理的事實。

服務器

服務器跨度表示同步傳入遠程調用,例如傳入 HTTP 請求或遠程過程調用。

內部類型

內部跨度表示不跨越流程邊界的操作。諸如檢測函數調用或 Express 中間件之類的事情可能會使用內部跨度。

生產者

生產者跨度表示創建一個稍后可能會異步處理的作業。它可能是一項遠程作業,例如插入作業隊列的作業,也可能是由事件偵聽器處理的本地作業。

消費者

消費者跨度代表對生產者創建的作業的處理,并且可能在生產者跨度已經結束之后很久才開始。

文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0