1 回答

TA貢獻1906條經驗 獲得超3個贊
我遇到了同樣的問題并做了一些研究。不幸的是,這是一個已知問題,在最新版本的 AWS Distro for OpenTelemetry Lambda (ADOT Lambda) 中尚未解決
Github 問題票:
跨越github.com/aws-observability/aws-otel-lambda 問題 #229
ADOT 收集器向運行時 API 發(fā)送響應,而不是等待發(fā)送跟蹤github.com/open-telemetry/opentelemetry-lambda 問題 #224
簡短的回答:目前 otel 收集器擴展不能可靠地工作,因為它在向導出器發(fā)送數據時被 lamda 環(huán)境凍結。作為解決方法,您可以將跟蹤直接發(fā)送到在 lambda 容器外部運行的收集器。
問題是:
lambda 在其執(zhí)行期間將跟蹤發(fā)送到收集器擴展進程
收集器將它們排隊以將它們發(fā)送到配置的導出器
收集器擴展在告訴 lambda 環(huán)境擴展已完成之前不會等待收集器完成其隊列處理;相反,它總是立即告訴環(huán)境它已經完成,而無需查看收集器正在做什么
當 lambda 完成時,擴展已經完成,因此 lambda 容器被凍結,直到下一次 lambda 調用。
下一次 lambda 調用到達時,容器解凍。如果下一次調用很快到來并且花費了足夠長的時間,收集器可能能夠完成將跟蹤發(fā)送給導出器。否則,與后端系統(tǒng)的連接在發(fā)送完成前超時。
使解決方案復雜化的是,擴展很難檢測主 lambda 是否已完成處理。
理想情況下,遙測擴展將:
等待 lambda 完成處理
檢查 lambda 是否向其發(fā)送任何數據以進行處理和轉發(fā)
等待所有處理和轉發(fā)完成(如果有的話)
向 lambda 環(huán)境發(fā)出擴展已完成的信號
當主 lambda 完成處理時,lambda 擴展協(xié)議不會告訴擴展(如果 AWS 可以將其作為新事件類型添加到擴展協(xié)議中,那就太好了)。
有一個提議的 PR試圖通過假設 lambda 總是發(fā)送跟蹤來解決這個問題,所以它不是等待 lambda 完成,而是等待對 OTLP 接收器的 TCP 請求到達。這行得通,但如果 lambda 從不發(fā)送任何蹤跡,它會使擴展永遠掛起。
注意:我們在此處看到的跟蹤問題同樣存在于指標中。
- 1 回答
- 0 關注
- 139 瀏覽
添加回答
舉報