菜单
文档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_to列表(MetricsReceiver)要发送指标的接收者列表。

以下块支持在 prometheus.receive_http 定义的内部

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

http

http 块配置 HTTP 服务器。

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

名称类型描述默认值必需
conn_limitint最大并发 HTTP 连接数。默认为无限制。0
listen_addressstring服务器监听新连接的网络地址。默认为接受所有传入连接。""
listen_portint服务器监听新连接的端口号。8080
server_idle_timeoutdurationHTTP 服务器的空闲超时。"120s"
server_read_timeoutdurationHTTP 服务器的读取超时。"30s"
server_write_timeoutdurationHTTP 服务器的写入超时。"30s"

导出字段

prometheus.receive_http 不导出任何字段。

组件健康

prometheus.receive_http 如果配置无效,则报告为不健康。

调试指标

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

  • prometheus_receive_http_request_duration_seconds (直方图): 服务器处理HTTP请求所需时间(以秒为单位)。
  • prometheus_receive_http_request_message_bytes (直方图): 收到的请求的消息大小(以字节为单位)。
  • prometheus_receive_http_response_message_bytes (直方图): 作为响应发送的消息的大小(以字节为单位)。
  • prometheus_receive_http_tcp_connections (仪表): 当前接受的TCP连接数。
  • prometheus_fanout_latency (直方图): 将指标发送到其他组件的写入延迟。
  • prometheus_forwarded_samples_total (计数器): 发送到下游组件的总样本数。

示例

通过HTTP接收指标

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

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 = "http://localhost:9999/api/v1/metrics/write"
  }
}

技术细节

prometheus.receive_http 使用 snappy 进行压缩。

兼容组件

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

注意

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