菜单
开源

loki.source.api

loki.source.api 通过 HTTP 接收日志条目并将其转发到其他 loki.* 组件。

公开的 HTTP API 与 Loki 推送 APIlogproto 格式兼容。这意味着其他 loki.write 组件可以用作客户端并发送请求到 loki.source.api,从而使用 Alloy 作为日志的代理。

使用方法

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 的定义内部

层次名称描述必需
httphttp配置接收请求的 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实例。

alloy
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可以接受以下组件的参数

注意

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