先界定追查要回答甚麼
合作夥伴報稱 API 請求逾時,企業卻無法判斷它有否到達閘道、建立紀錄,或在下游服務失敗。追查線索應按順序回答這些具體問題。支援個案可先記下大約時間、端點、按既有權限核實的合作夥伴身分,以及對方可引用的不透明參考碼。再決定哪些元件需要留下互相連接的事件。目的在重建一次請求的路徑,而不是收集請求經過時的所有顧客資料。
設計欄位前,先分清三種識別碼。訂單編號等業務識別碼指向實際紀錄,可能涉及敏感資料;請求識別碼指一次進站嘗試,方便支援人員找出閘道與應用程式紀錄;追蹤識別碼則把跨服務的相關操作連起來,各個 span 代表其中一步。W3C Trace Context 定義以 traceparent 和 tracestate 傳遞相關內容。任何一種識別碼都不能證明付款成功、紀錄只有一筆或重試安全;業務狀態仍須向權威資料來源核實。
為每個元件商定最少事件欄位:有時區的時間、元件與操作名稱、請求或追蹤參考碼、結果類別,以及適用時的下游目標和耗時。「已接收」、「驗證拒絕」、「等待下游逾時」或「已完成」比籠統的「錯誤」有用。一般日誌不要存放原始請求內容、授權標頭、完整電話號碼或密鑰。若特殊調查確需敏感資料,應另設有理由、權限與保存期限的程序。W3C 亦明確提醒,不應在追蹤內容欄位放入個人或其他敏感資訊。
只在屬於該宗交易的元件之間傳遞追蹤內容。閘道應把外來追蹤標頭視為不可信輸入,檢查格式,並按信任邊界決定延續合作夥伴的追蹤,還是建立新的內部追蹤;若支援人員需要串連兩者,便要記錄對應關係。服務呼叫下游時應保留追蹤關聯,同時記下自身操作。佇列消費者或排程工作可能需要另外連回原本的業務工作,因為非同步續作並非同一次 HTTP 請求。閘道看見一個標頭,不等於整條追蹤已完整。
讓支援參考碼真正可用
合作夥伴需要一個可安全交予支援團隊的參考碼,毋須傳送權杖或顧客紀錄。可在已文件化的回應標頭或錯誤內容提供不透明請求參考碼,並讓營運紀錄可用同碼查找。RFC 9457 容許以 problem details 的 instance 欄位標識某次錯誤,但並不表示每個 instance 網址都是公開資源,也沒有規定特定的請求識別碼格式。若 API 已有錯誤格式,須清楚記載支援參考碼的位置。HTTP 狀態和錯誤說明仍要反映實際結果;只有參考碼不能指導下一步。
假設合作夥伴在香港時間下午二時零六分提交庫存更新,收到逾時與參考碼 R。支援人員搜尋 R,發現閘道已接收、應用程式已驗證,而下游庫存寫入是在呼叫者停止等待後完成。下一步應先查權威庫存紀錄與回應歷史,再決定是否建議重試。另一情況可能是應用程式在任何寫入前已拒絕請求,合作夥伴便需修正內容。兩種都是說明不同狀態的假設例子,並非已觀察的事故或特定供應商承諾。
追蹤可縮小調查範圍,卻不能代替冪等設計或對帳。合作夥伴在逾時後可能重發同一指令,產生新的請求參考碼及追蹤。只有經明確設計和驗證的業務鍵或冪等機制,才可把多次嘗試連回同一業務操作。該鍵與追蹤傳遞須分開,最後仍要核實權威紀錄。佇列重試工作時,應標記每次嘗試及其結果,免得員工把重複傳輸誤當成顧客重複下單。支援指引應區分等待、查狀態、修正輸入和升級處理。
增加遙測資料前先訂存取和保存安排。即使沒有顧客姓名,追蹤仍可能暴露合作夥伴的流量模式、系統結構和時間資訊。一般支援人員只需按不透明參考碼查看結果;原始追蹤及詳細服務屬性應留給有調查理由的操作人員。各層紀錄的保存時間應按調查需要及適用業務要求訂定。抽樣可以控制資料量,但沒有抽到的追蹤,不等於請求從未發生;支援流程仍需在適當地方查權威請求或交易紀錄。
在依賴追蹤前演練失敗情況
先測一宗正常完成的呼叫:記下合作夥伴可見的參考碼,找出閘道紀錄,再追到應用程式與下游操作。檢查時間是否有清楚時區、服務名稱是否容易理解,以及最後的業務狀態是否與權威紀錄一致。再測無效輸入、下游逾時,以及客戶端斷線後非同步完成。每個情況都交由沒有建立遙測的支援同事按文件重建經過。若他們要猜應輸入哪個識別碼,設計仍未完成。
測試亦要跨越信任邊界。從公開入口送入格式錯誤或過大的追蹤標頭,確認不會破壞請求處理或令儲存量暴增;再送入看似有效但要求抽樣的標頭,確保外部呼叫者不能任意決定追蹤成本。檢查對外部服務的呼叫有否帶出不應跨界的內容。W3C Trace Context 的安全章節明確提出資訊外洩和阻斷服務風險,因此這些是實際設計測試。若處理方式影響合作夥伴串連自家追蹤的能力,也應在文件說明。
英文與繁體中文的錯誤訊息及支援程序均要審閱。訊息應交代已知狀態和可行下一步,例如目前未能確認請求結果,請用參考碼查詢;不要把內部「缺少 span」警報翻成「訂單已遺失」等顧客斷言。RFC 9457 說明 problem detail 用於描述 HTTP 介面問題,不是除錯資料傾倒。回應不應包含堆疊記錄或密鑰。若 occurrence 連結可供開啟,須先確認它符合 API 的授權規則。
最後要指定負責人維護支援參考碼、追蹤儲存庫與業務紀錄之間的對應。端點或服務變更時,推出前再演練同一搜尋路徑。若發現缺少下游 span、系統時鐘不一致,或佇列事件沒有連結,應如實記為有負責人的修復項目,不能以臆測的「成功」狀態填補空白。這套安排真正的價值,是讓員工分清傳輸失敗與已完成的業務操作,並向合作夥伴提供安全、有證據支持的下一步。
技術與非技術同事之間亦要有實用交接。支援人員輸入參考碼後,應看到受限的結果摘要,並知道何時升級,而毋須解讀原始 span;操作人員再查看詳細追蹤,並與權威業務紀錄比較。文件還要說明沒有參考碼時怎樣做:在核准的時間範圍和合作夥伴帳戶內搜尋,避免以私人請求內容作廣泛搜尋鍵,並向對方坦白說明仍未確定的部分。用演練檢查交接流程,不要宣稱未量度的效率提升。若某個測試情況無法重建,就指出缺少哪項事件或對應關係,先修復才依賴這套事故程序。
推出前檢查
- 合作夥伴可見的不透明參考碼可找到同一次嘗試的營運紀錄。
- 追蹤內容不包含個人資料或密鑰。
- 逾時及重試測試最後均核對權威業務狀態。


