跳至主要內容
Telemetry
瀏覽說明文件
指南更新於 2026年7月28日由 Telemetry 編輯團隊和產品團隊審查閱讀約需 5 分鐘

讓程式設計代理使用這篇文件

開啟 Claude Code、Codex、Cursor 或其他編碼代理的集中提示包,然後將其適應此處介紹的工作流程。

本頁內容
  1. 1. 捕獲實際的HTTP結果
  2. 2. 確認目的資料表
  3. 3. 驗證接受的資料形狀
  4. 4. 檢查時間戳行為
  5. 5. 檢查模式相容性
  6. 6. 隔離批次故障
  7. 7. 使用SQL驗證事件
  8. 預防清單

事件攝取故障排除

當事件未按預期出現時,請單獨請求傳遞、身分驗證、有效負載驗證、架構相容性和查詢新鮮度。成功的應用程式操作並不能證明遙測攝取成功,並且接受的 HTTP 請求也不能證明後面的查詢正在檢視相同的資料表和時間範圍。

診斷時使用具有唯一安全識別符號的合成事件。請勿將生產負載複製到日誌、票證或命令歷史記錄中。

1. 捕獲實際的HTTP結果

暫時傳送一個帶有 cURL 的事件,以便您可以看到回應狀態和正文:

curl -i -X POST https://api.telemetry.sh/log \
  -H "Content-Type: application/json" \
  -H "Authorization: $API_KEY" \
  -d '{
    "table": "ingestion_diagnostics",
    "data": {
      "event_id": "diagnostic-2026-07-28-01",
      "source": "manual_check",
      "status": "expected"
    }
  }'

將 API 金鑰儲存在環境變數中。收集診斷資訊時,請勿將其貼上到有效負載中或列印它。

重試之前解釋狀態:

  • 400 表示 JSON、資料表名、時間戳、資料形狀或欄位型別必須更改。重試同一身體無法修復它。
  • 401 表示金鑰丟失、格式錯誤、無效或已撤銷。
  • 403 表示該鍵沒有操作的寫入範圍。
  • 429 表示超出當前請求速率或配額。在提供時遵守 Retry-After 並使用帶抖動的有界指數退避。
  • 5xx 表示伺服器端對其他有效請求的失敗。重試有限次數,而不會無限期地阻止主應用程式。

請閱讀 速率限制和 API 錯誤 瞭解完整的客戶政策。

2. 確認目的資料表

日誌API規範了請求的資料表名:空格變成下劃線,字母變成小寫。標準化後,只有小寫 ASCII 字母、數字和下劃線有效。

例如,Checkout Events 變為 checkout_events。查詢猜測的名稱(例如 CheckoutEvents)將不會檢查相同的目的地。

在診斷過程中,在請求中使用簡單的顯式名稱,然後檢查 Telemetry 中的資料表列表或模式。如果兩個服務應寫入一個資料表,請確保兩者使用相同的規範化名稱和欄位型別。

3. 驗證接受的資料形狀

data 屬性可能是:

  • 一個 JSON 物件
  • JSON 物件的陣列
  • 解碼為物件的 JSON 字串
  • 包含物件和 JSON 字串的陣列,每個字串都解碼為物件

頂級數字、布林值、null 以及解碼為這些值的字串將被拒絕。陣列不能包含任意標量值。超出記錄限制的深層巢狀有效負載也會被拒絕。

將失敗事件減少到三個無害的欄位。以小組形式重新新增欄位,直到請求再次失敗。這會隔離無效形狀,而不會暴露原始客戶負載。

4. 檢查時間戳行為

Telemetry 在缺失或為空時新增 UTC timestamp。當 Unix 時間戳整數和數字字串在支援的範圍內時,它們被解釋為 Unix 秒並標準化為 RFC 3339。客戶端提供的 timestamp_utc 被刪除,因為該欄位由查詢層管理。

如果查詢視窗外出現新事件:

  1. 刪除自定義 timestamp 併傳送新的合成事件
  2. 透過生成的timestamp_utc進行查詢
  3. 比較應用程式時鐘、源時間戳和查詢時區
  4. 檢查原始時間戳是否意外是毫秒而不是秒

當源事件時間必須與接收時間分開儲存時,請使用 使用時間戳

5. 檢查模式相容性

第一個接受的事件建立欄位型別。新增新的可選欄位與將現有欄位從數字更改為字串、布林值、時間戳或巢狀物件不同。

檢查表架構並逐個欄位比較失敗的有效負載。常見的漂移包括:

  • 一個生產者以整數形式傳送的識別符號,另一個生產者以字串形式傳送的識別符號
  • 在一個版本中作為數字傳送的持續時間,在另一個版本中作為 "842ms" 傳送
  • 巢狀物件替換為標量
  • 在整數美分和小數貨幣單位之間變化的貨幣值
  • 狀態更改型別,因為 SDK 以不同方式序列化列舉

當概念真正改變型別或單位時,請新增版本化欄位名稱並有意遷移查詢。讀取 事件資料型別與可空性模式演化

6. 隔離批次故障

對於被拒絕的批次,用一個小的合成子集進行重現。如果需要,拆分批次直至識別出不相容的專案。在重試相同的邏輯事件時保持穩定的 event_id,以便可以測量重複的傳遞。

不要默默地為每次網路嘗試分配新的識別符號。這會將一個結果變成多行,並使重試恢復、計費總計和渠道變得不可靠。使用 重複事件 ID SQL 配方 審查重複項。

7. 使用SQL驗證事件

查詢準確的診斷識別符號和廣泛的 UTC 範圍:

SELECT
  event_id,
  source,
  status,
  timestamp_utc
FROM ingestion_diagnostics
WHERE event_id = 'diagnostic-2026-07-28-01'
  AND timestamp_utc >= now() - INTERVAL '24 hours'
ORDER BY timestamp_utc DESC;

如果該行存在但儀表板為空,請比較儀表板的資料表、篩選器、時間範圍和預期欄位型別。如果沒有出現來自整個源的新行,請使用 攝入新鮮度配方 使間隙可見。

預防清單

  • 將伺服器端金鑰保留在瀏覽器捆綁包之外,並將其範圍限制為所需的操作
  • 捕獲攝取失敗的安全狀態、端點、請求 ID 和錯誤類別
  • 使用穩定的資料表名稱、事件名稱、欄位型別和顯式單位
  • 在生產前透過綜合或暫存檢查傳送架構更改
  • 限制重試,這樣遙測就不會耗盡工作人員的精力或改變已完成的客戶回應
  • 與業務儀表板分開監控新鮮度和重複識別符號

請參閱 日誌API 以瞭解確切的標準化規則,請參閱 結構化記錄指南 以瞭解更安全的事件合約設計。

相關產品功能

記錄穩定的事件名稱、型別明確的欄位,以及經過隱私審查的上下文。

內容責任與技術參考

Telemetry 編輯團隊負責維護本文;產品團隊審查功能行為、範例和適用範圍。

檢視編輯規範