Skip to main content

OpenTelemetry

· 2 min read
Blog owner

在看distributed tracing相關的文件的時候,順便查到OpenTelemetry

在分散式系統,一個request從產生到結束,可能會經過好幾個service,想當然這些service八成不會跑在同一個node,更別說跑在同一個process,共享同一個記憶體空間,所以要怎麼trace request在這中間過程經歷什麼就變得很複雜。

大公司為了處理這些問題也費了不少的苦工,關於這些在分散式系統中,如何做tracing,就稱為distributed tracing,中國那邊稱為分布式鏈路。之前在淘寶架構師寫的書就有提到淘寶怎麼處理這件事,他們把這套系統稱為鷹眼,Goole也有一套類似的叫Dapper

不過具體思維都蠻接近的,就是要給每個request一個global unique id,這個id在request的life cycle裡面會被帶著跑,然後這中間的logmetric,都要打上這個id,才能知道是某個request的log。

大概是不想各家實作又是不同的protocolOpenTelemetry這種統一protocol就應運而生,而且是由OpenTracingOpenConsensus合併而來。

稍微翻了一下,看起來是只要application端有產生trace,然後trace中間的操作有產生span包起來,送到follow這個protocol的backend,就可以以trace為單位來撈到底某個request過程發生了什麼。