使用開源用戶端上報資料後,如果遇到控制台或日誌中列印了錯誤記錄檔,或者控制台上沒有觀察到報錯資料,可以根據本文檔進行問題排查。
控制台沒有資料的可能原因:
控制台鏈路資料異常問題:
網路連通性排查
確認代碼中的上報地址是內網地址還是公網地址,如果使用內網地址請保證上報伺服器和上報地址處於阿里雲同一個VPC內,不能跨Region上報。
在上報環境中使用
curl或者telnet命令檢查上報地址和上報連接埠是否可用,如果不可用檢查ECS的安全性群組設定。
樣本:檢查杭州地區的OpenTelemetry gRPC上報地址連通性。
在終端視窗中輸入命令以下命令
telnet [存取點url] [連接埠號碼]例如:
telnet tracing-analysis-dc-hz.aliyuncs.com 8090上報開關檢查
在控制台中可以對資料上報進行全域配置和應用層級配置,請分別檢查對應的上報開關是否開啟。
採集配置額度也會影響到應用資料的上報,請驗證上報資料量是否已經達到上報額度。
全域開關檢查
在控制台叢集配置頁簽的採集配置地區檢查採集資料是否為全部開啟或預設開啟。

上報額度檢查
在控制台叢集配置頁簽的額度配置地區檢查上報資料量是否已經達到配置限額,如果已經達到,則需要調整上報資料限額。

應用開關檢查
在目標應用的應用設定 > 自訂配置頁簽,檢查採集配置地區中的採集資料是否為開啟或不設定。

如果叢集配置頁簽的採集配置設定為全部開啟或全部關閉,則此處應用的採集配置不生效,以叢集配置為準。
如果應用的採集配置設定為不設定,則應用的上報狀態以叢集狀態為準。
SLS資源檢查
Managed Service for OpenTelemetry的資料存放區在使用者名稱下的SLS上,如果上報資料失敗,有可能是SLS的Project已經達到數量限額。
解決方案如下:
釋放沒有用到的SLS Project資源。
在SLS中提交工單提升Project限額。
監控任務狀態異常
如果頁面中出現提示資訊:監控任務狀態異常或者監控任務沒有開啟,請提交工單處理。
HTTP上報方式報錯
根據HTTP返回狀態代碼排查
觀察控制台或者記錄檔中列印的gRPC返回狀態代碼,根據狀態代碼進行後續操作:
403:許可權問題。
Endpoint或者Token填寫有誤,可以在控制台叢集配置 > 存取點資訊頁簽擷取相關存取點資訊進行排查。
Zipkin填寫的URL最後多了
/v2/spans內容。
405:上報量達到客戶自訂的額度上限。(請在叢集配置頁簽的額度配置地區調整上報額度。)
406:客戶主動關閉了叢集採集。(請在叢集配置頁簽的採集配置地區開啟叢集採集。)
400:不合理的資料格式。
Content-type只支援
application/json、application/x-thrift或Bad Request格式。例如:
Tag的Key/Value需要格式都是String,但是Value上報了一個JSON數組。
Spans需要格式為JSON Array,但是實際上報了一個JSON Object格式資料。
根據HTTP錯誤資訊排查
Apisix通過OpenTelemetry上報資料失敗,提示資訊:
The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.Apisix暫時不支援用OpenTelemetry直接上報到Managed Service for OpenTelemetry,需要用opentelemetry collector轉寄到Managed Service for OpenTelemetry服務。
gRPC上報方式報錯
如果是資料是通過gRPC方式上報,可以觀察控制台或者記錄檔中列印的gRPC返回狀態代碼,狀態代碼的含義請參見gRPC狀態代碼定義。
常見的報錯排查方式如下:
上報逾時
報錯資訊:
Failed to export spans. The request could not be executed. Full error message: timeout排查方案:
檢查網路聯通性。
檢查SDK/Agent的上報逾時時間設定,嘗試調大逾時時間。
許可權驗證失敗
報錯資訊:
Failed to export spans. Server responded with gRPC status code 7. Error message:排查方案:
檢查gRPC要求標頭中的Authentication欄位和Managed Service for OpenTelemetry控制台的鑒權Token是否一致。

Skywalking MeterSender報錯
報錯資訊:
MeterSender : Send meters to collector fail with a grpc internal exception. org.apache.skywalking.apm.dependencies.io.grpc.StatusRuntimeException: UNIMPLEMENTED: Method not found: skywalking.v3.MeterReportService/collect報錯原因:Skywalking用戶端向Managed Service for OpenTelemetry服務端發送了Metrics資料。
解決方案:關閉Skywalking的Metrics上報。
控制台鏈路資料不符合預期
Skywalking Agent/SDK上報
為什麼應用中的部分架構和中介軟體沒有被埋點?
檢查Skywalking Agent外掛程式目錄下是否存在沒有被埋點的架構的外掛程式,這些外掛程式的版本是否和應用中使用到的架構的版本一致。
例如Skywalking 8以上的版本的外掛程式路徑為:${agent-path}/agent-8.x/plugins。如果沒有外掛程式,則可以在bootstrap-plugins或者optional-plugins檔案夾下將需要的外掛程式複製到plugins目錄,或者在社區中下載需要的外掛程式。
檢查應用是否只添加了Skywalking的Agent,如果同時添加多個Agent可能會導致埋點邏輯衝突。
為什麼調用鏈路出現斷鏈?
檢查調用鏈是否為非同步情境,如果是非同步情境,解決方案請參見Skywalking跨線程解決方案。
為什麼整個調用鏈的長度比預期要短?
可以調整Skywalking Agent上報的Span個數,修改${agent-path}/agent-8.x/config/agent.config中的
collector.agent.service_graph.batch_size配置項,調大該值。
OpenTelemetry Agent/SDK
為什麼我的調用鏈路出現斷鏈現象?
檢查是否存在非同步呼叫的情況,建議升級OpenTelemetry版本或者使用OpenTelemetry的SpanLinks API來解決非同步呼叫斷鏈的問題,Link可以讓兩個Span關聯起來(設定某個span的parent span),或者通過Context Propagation把Trace Context顯式傳遞給另一個應用。

