prometheus.receive_http
prometheus.receive_http
监听包含 Prometheus 指标样本的 HTTP 请求,并将它们转发给其他能够接收指标的其他组件。
公开的 HTTP API 与 Prometheus remote_write
API 兼容。这意味着其他 prometheus.remote_write
组件可以作为客户端并发送请求到 prometheus.receive_http
,这使得将 Alloy 用作 Prometheus 指标的代理成为可能。
用法
prometheus.receive_http "LABEL" {
http {
listen_address = "LISTEN_ADDRESS"
listen_port = PORT
}
forward_to = RECEIVER_LIST
}
该组件将启动一个支持以下端点的 HTTP 服务器
POST /api/v1/metrics/write
- 向该组件发送指标,该组件随后将按照在forward_to
参数中配置的接收者进行转发。请求格式必须符合 Prometheusremote_write
API。向该组件发送有效请求的一种方法是将另一个具有prometheus.remote_write
组件的 Alloy 使用。
参数
prometheus.receive_http
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
forward_to | 列表(MetricsReceiver) | 要发送指标的接收者列表。 | 是 |
块
以下块支持在 prometheus.receive_http
定义的内部
层次结构 | 名称 | 描述 | 必需 |
---|---|---|---|
http | http | 配置接收请求的 HTTP 服务器。 | 否 |
http
http
块配置 HTTP 服务器。
您可以使用以下参数配置 http
块。任何省略的字段将采用其默认值。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
conn_limit | int | 最大并发 HTTP 连接数。默认为无限制。 | 0 | 否 |
listen_address | string | 服务器监听新连接的网络地址。默认为接受所有传入连接。 | "" | 否 |
listen_port | int | 服务器监听新连接的端口号。 | 8080 | 否 |
server_idle_timeout | duration | HTTP 服务器的空闲超时。 | "120s" | 否 |
server_read_timeout | duration | HTTP 服务器的读取超时。 | "30s" | 否 |
server_write_timeout | duration | HTTP 服务器的写入超时。 | "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端点。
// 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可以运行以下配置
// 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
可以从以下组件接受参数
- 导出 Prometheus
MetricsReceiver
的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。请参阅相关文档获取更多信息。