使用OpenTelemetry进行可移植的合成HTTP测试

合成测试是可观测性工具包的重要组成部分。它们可用于测量应用程序的SLA、监视不同地理位置的端点、模拟用户导航网页,或在客户遭遇之前识别部署后的错误。

本博客将重点介绍基于HTTP的合成可用性测试。许多供应商提供各种免费套餐的可用性测试选项,但在企业规模下监视端点可能会迅速扩展到成千上万个测试,这些测试在迁移可观测性供应商时无法轻松转移。OpenTelemetry(OTel)致力于实现可观测数据的可移植性,以帮助用户最大程度地了解其服务并充分利用可观测性投资,而无需不断重新创建相同的功能。

社区不断改进项目的功能,很容易错过新功能。在v0.63.0版本中,OTel Collector通过一个叫做HTTP Check Receiver的接收器增加了对合成HTTP检查的支持。该组件通过HTTP或HTTPS发送请求,并生成度量指标以捕获请求的持续时间并记录返回的状态码。现在,您可以在首选环境中部署代理来测试公共或私有端点,而无需在防火墙中列入白名单,并像OTel数据的其他部分一样将测试传输到首选的目的地。

部署第一个OTel合成ping测试

使用OTel合成测试非常简单。您像往常一样配置您的Collector,并添加HTTP Check接收器以及您选择的端点、HTTP方法和收集间隔。下面是一个基本的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:
  #您选择的导出器

processors:
  batch:

service:
  pipelines:
    metrics:
      receivers: [httpcheck]
      processors: [batch]
      #exporters: [your-exporter]

合成测试输出

接收器默认生成3个度量指标:httpcheck.durationhttpcheck.statushttpcheck.error。这些度量指标可以用于可视化或定义警报。如果没有发生错误,则httpcheck.error图表将为空。以下是httpcheck.durationhttpcheck.status度量指标的一些示例屏幕截图。

持续时间检查

合成持续时间检查结果

状态检查

合成状态检查结果

下一步是什么?

合成测试是OTel的一个令人兴奋的新功能,社区希望随着时间的推移发展和演变。如果您对新的合成功能有任何具体请求,请随时在opentelemetry-collector-contrib存储库中的HTTP Check接收器中打开一个问题,或者打开一个PR并添加您自己的功能。欢迎和感谢所有的贡献和反馈。

对于更复杂的基于浏览器的测试,Selenium项目提供了本机的OpenTelemetry集成。我希望能在后续的博客中介绍如何利用这些数据。

未来,我希望看到我们支持自定义请求正文或从其他复杂的浏览器测试框架(如Playwright)接收结果。祝您进行愉快的测试!