监控网站正常运行时间
心跳记录成功和失败的检查。这使得中断变得可见,但也揭示了监控作业本身何时停止发送数据。
定期检查将停机时间和意外的沉默转变为可查询的事件。
使用 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仪表板 并使用您的凭据登录,以根据您的正常运行时间监控数据创建仪表板、图表等。
后续步骤
正常运行时间百分比无法检测停止运行的监视器。添加 缺少心跳食谱 并在最新检查早于预期计划加上一小段宽限期时发出告警。