在分散式系統和微服務猖獗的世界中,檢查系統操作或追蹤錯誤變得非常困難。在這種環境下,許多服務必須以通用格式發送資料並將其連接起來以分析系統。
Opentelemetry(以下簡稱 otel)是一個為了提高最新軟體趨勢的可觀察性而創建的框架。我們提供API、約定、工具包等
但即使只是一個單一的服務,查看日誌似乎更容易,而且設置起來也沒有那麼困難(只要你不做任何奇怪的事情...),所以它不是一個嘗試一下是個壞主意。
要了解otel,您需要了解可觀察性。
很難明確定義,但我認為可以將其定義為回答「為什麼會發生這種情況?」這個問題的能力
為了做到這一點,程式必須「裝備精良」。
這是您在實作 Opentelementry 時會經常遇到的表達式。在韓語中,它的意思是“測量”,但您可以將其視為很好地測量事物並記錄它們
。例如,有多個被測量的訊號(也稱為遙測資料),日誌、追蹤和指標都屬於這些訊號。 (這些訊號稍後會再次出現)
Otel 與供應商和工具無關,因此可以廣泛使用。沒有義務使用可觀察性後端。您可以使用符合 Otel 標準的開源。
要使用Otel,你只需要學習一點(?)概念和API。
你要學習構成Otel的元素。
分散式追蹤
日誌、跨度、追蹤
上下文傳播
訊號
收集者
這是為了追蹤在分散式系統中發出請求時發生的情況。這是Otel非常重視的事情。分散式系統是指一個要求透過A服務、B服務、C服務完成的系統。
日誌與我們在編碼時總是取得的日誌相同。有時間戳,所以是在那個時間寫的。它對於解釋系統行為有很大幫助。
但是,從日誌本身很難理解程式碼。需要包含更多上下文資訊。 Log 與 Span 或 Trace 相關時更有用。
跨度是一個動作單位。 Span 中包含的特定操作的名稱、時間相關的資料和日誌都具有稱為 Span 屬性的特徵。
例如,它具有 http.request.method 和 url.path 等屬性。
請求從開始到完成的過程稱為追蹤。此追蹤可能包括來自多個系統的跨度,而不僅僅是一個系統。
第一個跨度稱為根跨度。
通常描繪為瀑布圖。
繼續傳播上下文訊息,以便可以連接相關訊號和跡線。
傳播序列化和反序列化這個上下文訊息對象,允許它在服務和進程之間移動。一般情況下,使用W3C TraceContext Propagator。
Signal是Otel的一個集合元素。總共有 4 個:Log、Metric、Trace 和 Baggage。
這是上面提到的日誌。它包含在特定時間發送的訊息。
這是測量服務中需要測量的數字的數據。例如,需要記錄這些內容來測量數字,例如呼叫了多少次以及隊列有多滿
。與上面提到的Trace相同。
這是透過鍵值儲存像上下文一樣傳播的資訊。主要儲存用戶ID等附加資訊。
它被稱為 Opentelemetry Collector。收集器負責從應用程式接收遙測數據,對其進行處理,然後將其匯出到遙測儲存。
不使用收集器將遙測資料直接從應用程式發送到儲存是可以的,但最好運行收集器並將遙測資料的處理留給收集器,應用程式做自己的事情。
使用收集器有很多優點,例如能夠在收集器中改變配置和跨尾過濾。
以上是開放遙測的基本概念的詳細內容。更多資訊請關注PHP中文網其他相關文章!