loki.source.api
loki.source.api
通过 HTTP 接收日志条目并将其转发到其他 loki.*
组件。
公开的 HTTP API 与 Loki 推送 API 和 logproto
格式兼容。这意味着其他 loki.write
组件可以用作客户端并发送请求到 loki.source.api
,从而使用 Alloy 作为日志的代理。
使用方法
loki.source.api "LABEL" {
http {
listen_address = "LISTEN_ADDRESS"
listen_port = PORT
}
forward_to = RECEIVER_LIST
}
组件将在配置的端口和地址上启动一个 HTTP 服务器,并具有以下端点
/loki/api/v1/push
- 接受与 Loki 推送 API 兼容的POST
请求,例如从另一个 Alloy 的loki.write
组件。/loki/api/v1/raw
- 接受带有换行符分隔的日志行的POST
请求。这可以用来发送 NDJSON 或纯文本日志。这与 Promtail 推送 API 端点兼容。有关更多信息,请参阅 Promtail 文档。当使用此端点时,不能使用传入的时间戳,并且use_incoming_timestamp = true
设置将被忽略。/ready
- 接受GET
请求。可以用来确认服务器可达且健康。/api/v1/push
- 在内部重定向到/loki/api/v1/push
。/api/v1/raw
- 在内部重定向到/loki/api/v1/raw
。
参数
loki.source.api
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
forward_to | 列表(日志接收器) | 要发送日志条目的接收者列表。 | 是 | |
use_incoming_timestamp | 布尔值 | 是否使用请求中接收的时间戳。 | 否 | 无 |
labels | 映射(string) | 要关联到每个接收到的日志记录的标签。 | {} | 无 |
relabel_rules | 重命名规则 | 应用在日志条目上的重命名规则。 | {} | 无 |
relabel_rules
字段可以利用来自 loki.relabel
组件的 rules
导出值在将日志条目转发到 forward_to
中的接收者列表之前应用一个或多个重命名规则。
块
以下块支持在 loki.source.api
的定义内部
层次 | 名称 | 描述 | 必需 |
---|---|---|---|
http | http | 配置接收请求的 HTTP 服务器。 | 无 |
http
http
块配置 HTTP 服务器。
您可以使用以下参数来配置 http
块。任何省略的字段采用其默认值。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
conn_limit | 整数 | 最大同时 HTTP 连接数。默认为无限制。 | 0 | 无 |
listen_address | 字符串 | 服务器监听新连接的网络地址。默认为接受所有传入连接。 | "" | 无 |
listen_port | 整数 | 服务器监听新连接的端口号。 | 8080 | 无 |
server_idle_timeout | 持续时间 | HTTP服务器的空闲超时。 | "120s" | 无 |
server_read_timeout | 持续时间 | HTTP服务器的读取超时。 | "30s" | 无 |
server_write_timeout | 持续时间 | HTTP服务器的写入超时。 | "30s" | 无 |
导出字段
loki.source.api
不导出任何字段。
组件健康状态
loki.source.api
只有在给定无效配置的情况下才会报告为不健康。
调试指标
以下是一些当使用此组件时暴露的指标。请注意,指标包括如status_code
等标签,这些标签可以用于衡量请求成功率。
loki_source_api_request_duration_seconds
(直方图):处理HTTP请求所花费的时间(以秒为单位)。loki_source_api_request_message_bytes
(直方图):请求接收到的消息大小(以字节为单位)。loki_source_api_response_message_bytes
(直方图):响应中发送的消息大小(以字节为单位)。loki_source_api_tcp_connections
(仪表):当前接受的TCP连接数。
示例
此示例在0.0.0.0
地址和端口9999
上启动HTTP服务器。服务器接收日志条目并将其转发到loki.write
组件,同时添加forwarded="true"
标签。loki.write
组件将使用提供的基本认证凭据将日志发送到指定的Loki实例。
loki.write "local" {
endpoint {
url = "http://loki:3100/api/v1/push"
basic_auth {
username = "<your username>"
password_file = "<your password file>"
}
}
}
loki.source.api "loki_push_api" {
http {
listen_address = "0.0.0.0"
listen_port = 9999
}
forward_to = [
loki.write.local.receiver,
]
labels = {
forwarded = "true",
}
}
兼容组件
loki.source.api
可以接受以下组件的参数
- 导出Loki
LogsReceiver
的组件
注意
连接某些组件可能不合理或组件可能需要进一步配置才能正确工作。请参阅链接的文档以获取更多详细信息。