【问题标题】:Adding custom header in HTTP request of prometheus在 prometheus 的 HTTP 请求中添加自定义标头
【发布时间】:2017-06-05 12:42:29
【问题描述】:

Prometheus 发送 HTTP 请求以获取监控值。我的自定义导出支持各种客户端(以监控系统状态)。有一个通用的 REST API 来获取监视器列表:

/api/v1/monitor/find

输出结果取决于标头中的 Accept 属性。默认接受值为 application/json。

我在 API 中添加了新的 mime 类型以支持 prometheus(例如 application/prometheus)。

但是,如何配置 Prometheus 以添加自定义标头(接受:application/prometheus)?

【问题讨论】:

标签: prometheus


【解决方案1】:

Prometheus 不支持设置标头,因为这会导致用户创建难以调试的端点。您可以使用单独的端点或传递参数。

Prometheus 也已经为刮擦指定了一个 mime 类型,因此您可以使用它。见https://prometheus.io/docs/instrumenting/exposition_formats/

【讨论】:

    【解决方案2】:

    其实当前版本(V2.0 alpha)不支持。

    如果您查看 master 分支中的 scrapes.go,那么您可以看到请求中附加了一些常量标头:

    req.Header.Add("Accept", acceptHeader)
    req.Header.Set("User-Agent", userAgentHeader)
    req.Header.Set("X-Prometheus-Scrape-Timeout-Seconds", fmt.Sprintf("%f", s.timeout.Seconds()))
    

    因此,您可以支持一些基本的 mime 类型:

    application/vnd.google.protobuf;proto=io.prometheus.client.MetricFamily;encoding=delimited;q=0.7,text/plain;version=0.0.4;q=0.3,*/*;q=0.1
    

    premetheus.io 上的任何工件都没有添加此标头,因此您必须从源代码(主分支)构建。

    我运行一个 PHP 导出器(我自己的导出器),这是请求标头的屏幕截图

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 2019-09-25
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多