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 | list(MetricsReceiver) | 要发送指标的接收器列表。 | yes |
块
在 prometheus.receive_http
的定义中支持以下块
层次结构 | 名称 | 描述 | 必需 |
---|---|---|---|
http | http | 配置接收请求的 HTTP 服务器。 | no |
http
http
块配置 HTTP 服务器。
您可以使用以下参数配置 http
块。任何省略的字段都采用其默认值。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
conn_limit | int | 最大并发 HTTP 连接数。默认无限制。 | 0 | no |
listen_address | 字符串 | 服务器监听新连接的网络地址。默认接受所有传入连接。 | "" | no |
listen_port | int | 服务器监听新连接的端口号。 | 8080 | no |
server_idle_timeout | duration | HTTP 服务器空闲超时。 | "120s" | no |
server_read_timeout | duration | Read timeout for HTTP server. | "30s" | no |
server_write_timeout | duration | Write 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
组件。
// 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 = "https://127.0.0.1:9999/api/v1/metrics/write"
}
}
技术细节
prometheus.receive_http
使用 snappy 进行压缩。
兼容组件
prometheus.receive_http
可以接受以下组件的参数
- 导出 Prometheus
MetricsReceiver
的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。请参阅相关文档以获取更多详细信息。