在 Labyrinth Labs,我们非常重视监控。拥有有效的监控设置是我们为客户所做工作的关键部分。
Cloudflare 的 Analytics 仪表板为我们的客户 Pixel Federation 提供了许多用于调试和分析目的的有用信息。但是,它不会自动与现有的监控工具(例如 Grafana 和 Prometheus)集成,我们的 DevOps 工程师每天都使用它们来监控我们的基础结构。
Cloudflare 提供了一个日志 API,但我们需要分析的日志数量非常庞大,这样做效率低下且成本太高。幸运的是,Cloudflare 已经完成了每秒聚合数千个事件并将它们公开在易于使用的 API 中的艰巨工作。
将来自我们区域的 Cloudflare 数据与其他系统的指标相结合将使我们更好地了解我们的系统,并能够关联指标并创建更有用的警报,从而使我们的第 2 天操作(例如调试事件或分析我们系统的使用情况) 更高效。
由于我们的监控堆栈主要基于 Prometheus 和 Grafana,因此我们决定实施我们自己的 Prometheus 导出器,从 Cloudflare 的 GraphQL Analytics API 中提取数据。
设计
根据当前的云趋势以及我们在 Kubernetes 中使用导出器的意图,用 Go 编写代码是显而易见的选择。Cloudflare 为 Golang 提供了一个 API SDK,因此可以轻松开始常见的 API 任务。
我们利用 Cloudflare 的 GraphQL API 来获取有关我们每个区域的 Analytics 数据,并将它们转换为 Prometheus 指标,然后在指标端点上公开。
我们能够获取有关请求总数和速率、带宽、Cache 利用率、威胁、SSL 使用情况和 HTTP 响应代码的数据。此外,我们还能够监控正在传输的内容类型以及请求来自哪