監控網站正常執行時間
心跳記錄成功和失敗的檢查。這使得中斷變得可見,但也揭示了監控作業本身何時停止傳送資料。
定期檢查將停機時間和意外的沉默轉變為可查詢的事件。
使用 Telemetry SDK 為每次網站檢查傳送心跳,然後查詢失敗的檢查和資料傳送中斷的時段。
先決條件
- Telemetry 的有效 API 金鑰
- 對JavaScript和Node.js有基本瞭解
1.安裝Telemetry SDK
首先,您需要在專案中安裝 Telemetry SDK。如果您還沒有這樣做,請執行以下命令:
npm install telemetry-sh
2、初始化Telemetry
安裝SDK後,在您的專案中匯入並初始化Telemetry。將 YOUR_API_KEY 替換為您實際的 Telemetry API 金鑰。
import telemetry from "telemetry-sh";
telemetry.init("YOUR_API_KEY");
3. 建立心跳檢查
要監控正常執行時間,您可以設定心跳功能,定期向 Telemetry 服務傳送 ping。心跳將記錄您網站的狀態,使您可以監控其可用性。
這是心跳函式的基本範例:
const sendHeartbeat = async (url) => {
const startedAt = Date.now();
try {
const response = await axios.get(url);
telemetry.log("website_uptime", {
url: url,
status_code: response.status,
status: "success",
is_online: true,
latency_ms: Date.now() - startedAt
});
} catch (error) {
telemetry.log("website_uptime", {
url: url,
status_code: error.response ? error.response.status : 0,
status: "error",
is_online: false,
error_type: error.code ?? "request_failed",
latency_ms: Date.now() - startedAt
});
}
};
4. 安排心跳
要持續監控正常執行時間,您需要定期傳送心跳。您可以透過使用 setInterval 定期執行 sendHeartbeat 函式來實現此目的。下面是每 5 分鐘檢查一次網站的範例:
const urlToMonitor = "https://example.com"; // Replace with your website URL
const interval = 5 * 60 * 1000; // 5 minutes in milliseconds
setInterval(() => {
sendHeartbeat(urlToMonitor);
}, interval);
5. 查詢正常執行時間
記錄足夠的資料後,您可以使用 Telemetry 的查詢 API 進行查詢,以分析網站的正常執行時間。例如,您可以計算您的網站線上時間的百分比:
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 uptime_percentage
FROM
website_uptime
WHERE
timestamp_utc >= now() - INTERVAL '30 days'
GROUP BY
url
`);
console.log(results);
6. 探索 Telemetry 的正常執行時間
Telemetry 的 UI 允許您以互動方式視覺化和探索正常執行時間資料。存取 Telemetry儀表板 並使用您的憑據登入,以根據您的正常執行時間監控資料建立儀表板、圖表等。
後續步驟
正常執行時間百分比無法檢測停止執行的監視器。新增 缺少心跳食譜 並在最新檢查早於預期計劃加上一小段寬限期時發出警示。