OpenTelemetry 動作

預設情況下,OpenTelemetry 的 trace 動作是關閉的,不會向 otel exporter 中配置的地址傳送 trace 資料。 OpenResty Edge 內建了兩個動作:啟用 trace 功能和 設定 span 名稱。這兩個動作和啟動條件可以靈活的結合在一起,實現啟用 trace 的功能。同時還可以使用 EdgeLang 實現更細粒度的控制。

啟用 trace 功能

預設情況下,otel trace 是關閉了,透過該動作啟用 trace 功能。

設定 span 名稱

預設情況下,span 名稱為請求的 URI,可以透過該動作設定 span 名稱。

案例

根據 URI 啟用 trace 功能

如果所有的請求都啟用 trace,那麼將會產生大量的 trace 資訊。而通常我們僅僅關注特定的請求,因此我們可以根據需要動態開啟 trace。比如,某一個 API 介面發現延時比較高,我們使用如下的配置開啟 trace 功能。

按比率啟用 trace 功能

在日常運營過程中,我們沒有特定的監控目標,不希望對所有的請求都啟用 trace 功能,這時候使用比率開啟的方式就很合適。

上面例子中所使用的 EdgeLang 程式碼:

random-hit(0.05) =>
    enable-otel-trace();

我們還可以使用 EdgeLang 實現任意複雜的啟用控制。比如,我們希望對新上線的 App 進行監控,該 App 傳送的 HTTP 請求有個 version 欄位,同時還要保留日常的監控。那麼可以使用如下的 EedgeLang:

random-hit(0.05); req-header("app_version") eq "6.0" =>
    enable-otel-trace();