使用合成监控将incident.io状态发送到New Relic

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

本文介绍了如何使用New Relic来监控incident.io托管的状态页面。通过使用合成监控和脚本化API测试,可以将incident.io的公共状态页面数据格式化并导入New Relic。通过在New Relic中创建警报,可以及时了解公共状态页面的事件。

🔎

延伸解读

监控原理与数据来源

incident.io 托管的状态页面通过 /proxy/ 路径提供结构化 JSON 数据,包含组件列表和受影响组件摘要。New Relic 的合成监控(脚本化 API 测试)定期请求该接口,解析 JSON 并将组件状态作为自定义事件发送到 New Relic 事件收集器。这种方法无需直接访问 incident.io 后台,仅依赖公开状态页,适合监控第三方服务的可用性。

脚本关键逻辑解析

脚本使用 got 库获取状态页数据,先构建受影响组件的映射(component_id 到 status),再遍历所有组件,为每个组件设置 eventType、statuspage 和 status 字段(若组件未受影响则标记为 operational)。最后将组件数组批量 POST 到 New Relic 的 insights-collector 端点。注意需替换 statuspage 变量,并通过 $secure 安全存储账户 ID 和摄取密钥。

数据查询与告警设置

数据发送后,可用 NRQL 查询验证,例如 SELECT * FROM IncidentIOSample 查看所有事件,或使用 SELECT latest(status) FROM IncidentIOSample WHERE statuspage='my-statuspage' FACET name 按组件名称查看最新状态。基于这些查询,可在 New Relic 中创建告警条件,当组件状态非 operational 时触发通知,从而及时响应 incident.io 状态页上的事件。

❓

Q&A

如何使用New Relic监控incident.io的状态页面?

可以通过合成监控和脚本化API测试,将incident.io的公共状态页面数据格式化并导入New Relic。

incident.io的状态页面数据是什么格式?

incident.io的公共状态页面数据格式为JSON。

如何在New Relic中创建警报?

在New Relic中,可以使用NRQL查询数据并根据组件名称创建警报,以及时了解事件。

提供一个获取incident.io状态页面数据的脚本示例吗?

可以使用以下脚本示例:const got = require('got'); async function getStatusPage() { ... },具体代码可参考GitHub上的示例。

如何在New Relic中查询incident.io的状态数据?

可以使用NRQL查询,例如:SELECT * FROM IncidentIOSample。

如何快速查找受影响的组件状态?

可以创建一个映射,快速查找受影响组件的状态,使用affectedComponentsMap来存储组件状态。

➡️

继续阅读