跳至主要內容
Telemetry
瀏覽說明文件

指南更新於 2026年10月2日閱讀約需 4 分鐘

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

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

本頁內容
  1. 先決條件
  2. 1.安裝Telemetry SDK
  3. 2、初始化Telemetry
  4. 3. 建立心跳檢查
  5. 4. 安排心跳
  6. 5. 查詢正常執行時間
  7. 6. 探索 Telemetry 的正常執行時間
  8. 後續步驟

監控網站正常執行時間

心跳記錄成功和失敗的檢查。這使得中斷變得可見,但也揭示了監控作業本身何時停止傳送資料。

網站心跳時間線,包含成功檢查、兩次 HTTP 503 故障和一次十分鐘事件

定期檢查將停機時間和意外的沉默轉變為可查詢的事件。

使用 Telemetry SDK 為每次網站檢查傳送心跳,然後查詢失敗的檢查和資料傳送中斷的時段。

先決條件

  • Telemetry 的有效 API 金鑰
  • 對JavaScript和Node.js有基本瞭解

1.安裝Telemetry SDK

首先,您需要在專案中安裝 Telemetry SDK。如果您還沒有這樣做,請執行以下命令:

npm install telemetry-sh axios

2、初始化Telemetry

使用 Node.js 18 或更新版本。執行指令碼前,在伺服器環境中設定 TELEMETRY_API_KEY;不要將金鑰放入瀏覽器程式碼。

import telemetry from "telemetry-sh";
import axios from "axios";

const apiKey = process.env.TELEMETRY_API_KEY;
if (!apiKey) throw new Error("Set TELEMETRY_API_KEY in server-side configuration");
telemetry.init(apiKey);

3. 建立心跳檢查

要監控正常執行時間,您可以設定心跳功能,定期向 Telemetry 服務傳送 ping。心跳將記錄您網站的狀態,使您可以監控其可用性。

這是心跳函式的基本範例:

const sendHeartbeat = async (url) => {
  const startedAt = performance.now();
  let heartbeat;

  try {
    const response = await axios.get(url, {
      timeout: 10_000,
      validateStatus: () => true,
    });
    const isOnline = response.status >= 200 && response.status < 400;
    heartbeat = {
      url,
      timestamp: new Date().toISOString(),
      status_code: response.status,
      status: isOnline ? "check_passed" : "http_error",
      is_online: isOnline,
      latency_ms: performance.now() - startedAt,
    };
  } catch {
    heartbeat = {
      url,
      timestamp: new Date().toISOString(),
      status_code: 0,
      status: "probe_error",
      is_online: false,
      error_type: "request_failed",
      latency_ms: performance.now() - startedAt,
    };
  }

  try {
    await telemetry.log("website_uptime", heartbeat);
  } catch {
    try { console.warn("Heartbeat export failed"); } catch {}
  }
  return heartbeat;
};

這是從單台主機進行的基本檢查,並非正式環境可用性保證。只使用不含憑證或權杖的公開 URL。HTTP 2xx/3xx 符合此範例的檢查條件;逾時或傳輸失敗表示探測失敗,不能證明網站對所有人都無法使用。Axios 的十秒逾時不是嚴格的總時間上限。

事件匯出會另外等待,匯出失敗不會改變 HTTP 結果。此處 SDK 沒有可設定的傳送逾時:匯出阻塞可能延遲後續檢查。正式環境應使用應用程式自行管理的有界佇列或 HTTP 用戶端隔離匯出,並獨立監控檢查器。

4. 安排心跳

立即開始一次檢查,並在目前的檢查與匯出完成後安排下一次執行:

const urlToMonitor = "https://example.com"; // Replace with a public URL.
const interval = 5 * 60 * 1000;

async function runHeartbeat() {
  try {
    await sendHeartbeat(urlToMonitor);
  } catch {
    try { console.warn("Heartbeat check failed"); } catch {}
  } finally {
    setTimeout(runHeartbeat, interval);
  }
}

void runHeartbeat();

此排程器立即啟動,等待一次檢查與匯出完成,再等待五分鐘後開始下一次執行。它避免檢查重疊,但時間會漂移;它不是固定五分鐘週期或持久化排程器。

5. 查詢正常執行時間

查詢已記錄探測中通過 HTTP 檢查的比例:

const results = await telemetry.query(`
  SELECT
    url,
    COUNT(*) AS total_pings,
    SUM(CASE WHEN is_online THEN 1 ELSE 0 END) AS online_pings,
    (SUM(CASE WHEN is_online THEN 1 ELSE 0 END) * 100.0 / COUNT(*)) AS observed_check_success_percentage
  FROM
    website_uptime
  WHERE
    timestamp_utc >= now() - INTERVAL '30 days'
  GROUP BY
    url
`);

console.log(results);

查詢計算已觀測探測中通過檢查的比例。缺失的排程檢查不在分母中,因此它不是按實際經過時間計算的正常執行率或 SLA。使用預期檢查登記表和獨立監控器,區分覆蓋缺失與已觀測失敗。

6. 探索 Telemetry 的正常執行時間

Telemetry 的 UI 允許您以互動方式視覺化和探索正常執行時間資料。存取 Telemetry儀表板 並使用您的憑據登入,以根據您的正常執行時間監控資料建立儀表板、圖表等。

後續步驟

正常執行時間百分比無法檢測停止執行的監視器。新增 缺少心跳食譜 並在最新檢查早於預期計劃加上一小段寬限期時發出警示。

相關功能

將審查的 SQL 提升到自有閾值和回應工作流程中。

頁面作者與參考資料

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

我們如何審查文件