菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow prometheusbreadcrumb arrow prometheus.receive_http
开源

prometheus.receive_http

prometheus.receive_http 监听包含 Prometheus 指标样本的 HTTP 请求,并将它们转发给能够接收指标的其他组件。

公开的 HTTP API 与 Prometheus remote_write API 兼容。这意味着其他 prometheus.remote_write 组件可以用作客户端,并向 prometheus.receive_http 发送请求,从而可以使用 Alloy 作为 Prometheus 指标的代理。

用法

alloy
prometheus.receive_http "LABEL" {
  http {
    listen_address = "LISTEN_ADDRESS"
    listen_port = PORT
  }
  forward_to = RECEIVER_LIST
}

该组件将启动一个支持以下端点的 HTTP 服务器

  • POST /api/v1/metrics/write - 将指标发送到组件,组件随后将它们按照在 forward_to 参数中配置的方式转发给接收器。请求格式必须与 Prometheus remote_write API 匹配。向此组件发送有效请求的一种方法是将另一个具有 prometheus.remote_write 组件的 Alloy 用作代理。

参数

prometheus.receive_http 支持以下参数

名称类型描述默认值必需
forward_tolist(MetricsReceiver)要发送指标的接收器列表。yes

prometheus.receive_http 的定义中支持以下块

层次结构名称描述必需
httphttp配置接收请求的 HTTP 服务器。no

http

http 块配置 HTTP 服务器。

您可以使用以下参数配置 http 块。任何省略的字段都采用其默认值。

名称类型描述默认值必需
conn_limitint最大并发 HTTP 连接数。默认无限制。0no
listen_address字符串服务器监听新连接的网络地址。默认接受所有传入连接。""no
listen_portint服务器监听新连接的端口号。8080no
server_idle_timeoutdurationHTTP 服务器空闲超时。"120s"no
server_read_timeoutdurationRead timeout for HTTP server."30s"no
server_write_timeoutdurationWrite timeout for HTTP server."30s"no

导出字段

prometheus.receive_http 不导出任何字段。

组件健康

如果给 prometheus.receive_http 提供了无效的配置,则将其报告为不健康。

调试指标

以下是在使用此组件时暴露的一些指标。请注意,指标包括如 status_code 等相关标签,可用于衡量请求的成功率。

  • prometheus_receive_http_request_duration_seconds (histogram):处理 HTTP 请求花费的时间(以秒为单位)。
  • prometheus_receive_http_request_message_bytes (histogram):请求中接收到的消息大小(以字节为单位)。
  • prometheus_receive_http_response_message_bytes (histogram):响应中发送的消息大小(以字节为单位)。
  • prometheus_receive_http_tcp_connections (gauge):当前接受的 TCP 连接数。
  • prometheus_fanout_latency (histogram):将指标发送到其他组件的写入延迟。
  • prometheus_forwarded_samples_total (counter):发送到下游组件的样本总数。

示例

通过 HTTP 接收指标

此示例创建了一个 prometheus.receive_http 组件,该组件启动一个监听在 0.0.0.0 和端口号 9999 的 HTTP 服务器。该服务器接收指标并将它们转发到将指标写入指定 HTTP 端点的 prometheus.remote_write 组件。

alloy
// Receives metrics over HTTP
prometheus.receive_http "api" {
  http {
    listen_address = "0.0.0.0"
    listen_port = 9999
  }
  forward_to = [prometheus.remote_write.local.receiver]
}

// Send metrics to a locally running Mimir.
prometheus.remote_write "local" {
  endpoint {
    url = "http://mimir:9009/api/v1/push"

    basic_auth {
      username = "example-user"
      password = "example-password"
    }
  }
}

代理指标

为了将指标发送到前面示例中定义的 prometheus.receive_http 组件,另一个 Alloy 可以运行以下配置

alloy
// Collects metrics of localhost:12345
prometheus.scrape "self" {
  targets = [
    {"__address__" = "localhost:12345", "job" = "alloy"},
  ]
  forward_to = [prometheus.remote_write.local.receiver]
}

// Writes metrics to localhost:9999/api/v1/metrics/write - e.g. served by
// the prometheus.receive_http component from the example above.
prometheus.remote_write "local" {
  endpoint {
    url = "https://127.0.0.1:9999/api/v1/metrics/write"
  }
}

技术细节

prometheus.receive_http 使用 snappy 进行压缩。

兼容组件

prometheus.receive_http 可以接受以下组件的参数

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。请参阅相关文档以获取更多详细信息。