使用 OpenTelemetry 进行便携式合成 HTTP 测试
博客文章在发布后不会更新。这篇文章已经发布一年多了,其内容可能已过时,部分链接可能无效。在依赖任何信息之前,请务必核实。
合成测试是可观测性工具包的重要组成部分。它们可用于衡量应用程序 SLA、监控不同地理位置的端点、像用户一样导航网页或在客户遇到之前识别部署后的错误。
本博客将重点介绍基于 HTTP 的合成可用性测试。许多供应商提供各种可用性测试选项,并提供慷慨的免费套餐,但以企业规模监控端点会迅速导致数千个测试,当迁移可观测性供应商时,这些测试无法轻松转移。OpenTelemetry (OTel) 致力于可观测性数据的便携性,以帮助用户最大限度地提高对服务的可见性,并充分利用其可观测性投资,而无需不断重新创建相同的功能。
社区正在不断改进项目的能力,新功能很容易被忽略。在 v0.63.0 版本中,OTel Collector 通过一个名为 HTTP Check Receiver 的接收器添加了对合成 HTTP 检查的支持。此组件通过 HTTP 或 HTTPS 发送请求,并生成指标来捕获请求的持续时间并记录返回的状态码。您现在可以部署代理到您偏好的环境中,以测试公共或私有端点,而无需在防火墙中将 IP 列入白名单,并像其他 OTel 数据一样将测试传输到您偏好的目的地。
部署您的第一个 OTel 合成 ping 测试
开始使用 OTel 合成非常简单。您像往常一样配置 Collector,然后添加带有您选择的端点、HTTP 动词和收集间隔的 HTTP Check receiver。这是一个基本的 Collector 配置,供您入门。发送请求正文尚不支持,但您仍然可以在各种请求中发送自定义标头。
receivers:
httpcheck:
targets:
- endpoint: https://api.restful-api.dev/objects
method: GET
- endpoint: https://httpbin.org/delete
method: DELETE
- endpoint: https://httpbin.org/post
method: POST
headers:
test-key: 'test-123'
collection_interval: 10s
exporters:
#Your chosen exporter
processors:
batch:
service:
pipelines:
metrics:
receivers: [httpcheck]
processors: [batch]
#exporters: [your-exporter]
合成测试输出
默认情况下,接收器生成 3 个指标:httpcheck.duration、httpcheck.status 和 httpcheck.error。这些指标可用于可视化或定义警报。如果没有发生错误,则 httpcheck.error 图表将不会显示。以下是来自 httpcheck.duration 和 httpcheck.status 指标的一些示例屏幕截图。
持续时间检查

状态检查

接下来做什么?
合成测试是 OTel 的一项令人兴奋的新功能,社区希望随着时间的推移对其进行发展。如果您对新的合成功能有任何具体要求,请随时在 opentelemetry-collector-contrib 存储库中为 HTTP Check receiver 打开一个 issue,或者打开一个 PR 自己添加功能。所有贡献和反馈都受到欢迎和赞赏。
对于更复杂的基于浏览器的测试,Selenium 项目具有原生的 OpenTelemetry 集成。我希望写一篇后续博客,介绍如何利用这些数据。
将来,我希望我们能够添加对自定义请求正文的支持,或者能够从 Playwright 等其他复杂的浏览器测试框架中提取结果。祝您测试愉快!