菜单
开源

Loki GCP 日志源

loki.source.gcplog 通过利用 Pub/Sub 订阅 从云资源(例如 GCS 存储桶、负载均衡器或在 GCP 上运行的 Kubernetes 集群)检索日志。

该组件使用“推送”或“拉取”策略检索日志条目,并将它们转发到 forward_to 中接收器的列表。

可以通过为多个 loki.source.gcplog 组件提供不同的标签来指定它们。

用法

alloy
loki.source.gcplog "LABEL" {
  pull {
    project_id   = "PROJECT_ID"
    subscription = "SUB_ID"
  }

  forward_to = RECEIVER_LIST
}

参数

loki.source.gcplog 支持以下参数

名称类型描述默认值必填
forward_tolist(LogsReceiver)要将日志条目发送到的接收器列表。
relabel_rulesRelabelRules要应用于日志条目的重命名规则。“{}”

loki.source.gcplog 的定义中支持以下块

层次结构名称描述必填
pullpull配置一个目标以从 GCP Pub/Sub 订阅中拉取日志。
pushpush配置一个服务器以接收 GCP Pub/Sub 推送请求作为日志。
push > httpHTTP配置在使用 push 模式时接收请求的 HTTP 服务器。
push > grpcgrpc配置在使用 push 模式时接收请求的 gRPC 服务器。

pullpush 内部块是互斥的;组件在其定义中必须包含这两个块中的一个。httpgrpc 块仅在配置 push 块时使用。

pull 块

pull 块定义要从中读取日志条目的 GCP 项目 ID 和订阅。

以下参数可用于配置 pull 块。任何省略的字段都采用其默认值。

名称类型描述默认值必填
project_idstring订阅所属的 GCP 项目 ID。
subscriptionstring要从中拉取日志的订阅。
labelsmap(string)与传入日志关联的其他标签。"{}"
use_incoming_timestampbool是否使用传入的日志时间戳。false
use_full_linebool即使 textPayload 可用,也要发送来自 Cloud Logging 的完整行。false

为了使用 pull 策略,必须已配置 GCP 项目以将其云资源日志转发到 Pub/Sub 主题,以便 loki.source.gcplog 使用。

通常,主机系统还需要配置其 GCP 凭据。一种方法是将 GOOGLE_APPLICATION_CREDENTIALS 环境变量指向凭据配置 JSON 文件或服务帐户密钥的位置。

push 块

push 块定义接收来自 GCP 的 Pub/Sub 服务器的推送请求的服务器的配置。

以下参数可用于配置 push 块。任何省略的字段都采用其默认值。

名称类型描述默认值必填
graceful_shutdown_timeoutduration服务器优雅关闭的超时时间。如果已配置,则应大于零。“30s”
push_timeoutduration为每个传入的 GCP 日志条目设置最大处理时间。"0s"
labelsmap(string)与传入条目关联的其他标签。"{}"
use_incoming_timestampbool是否使用传入条目时间戳。false
use_full_linebool即使 textPayload 可用,也要发送来自 Cloud Logging 的完整行。默认情况下,如果行中存在 textPayload,则将其用作日志行false

服务器侦听来自 GCP 的推送订阅在 HOST:PORT/gcp/api/v1/push 上的 POST 请求。

默认情况下,对于这两种策略,组件都将日志条目时间戳分配为处理它的时间,除非 use_incoming_timestamp 设置为 true。

labels 映射应用于通过组件的每个条目。

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"

grpc

grpc 块配置 gRPC 服务器。

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

名称类型描述默认值必填
conn_limitint同时 HTTP 连接的最大数量。默认为无限制。0
listen_addressstring服务器侦听新连接的网络地址。它默认为接受所有传入连接。""
listen_portint服务器侦听新连接的端口号。默认为随机空闲端口。0
max_connection_age_gracedurationmax_connection_age 之后的一个附加周期,在此之后强制关闭连接。"infinity"
max_connection_ageduration连接在关闭之前可能存在的最长时间。"infinity"
max_connection_idleduration空闲连接关闭之前的持续时间。"infinity"
server_max_concurrent_streamsintgRPC 调用的并发流数限制 (0 = 无限制)。100
server_max_recv_msg_sizeint此服务器可以接收的 gRPC 消息的大小限制(字节)。4MB
server_max_send_msg_sizeint此服务器可以发送的 gRPC 消息的大小限制(字节)。4MB

导出字段

loki.source.gcplog 不导出任何字段。

组件健康状况

仅当 loki.source.gcplog 给定无效配置时,才会报告其不健康。

调试信息

loki.source.gcplog 针对每个 gcplog 侦听器公开一些调试信息

  • 配置的策略。
  • 它们的标签集。
  • 在使用 push 策略时,侦听地址。

调试指标

在使用 pull 策略时,组件会公开以下调试指标

  • loki_source_gcplog_pull_entries_total(计数器):gcplog 目标接收到的条目数。
  • loki_source_gcplog_pull_parsing_errors_total(计数器):接收 gcplog 消息时解析错误的总数。
  • loki_source_gcplog_pull_last_success_scrape(gauge):目标上次成功轮询的时间戳。

在使用 push 策略时,组件会公开以下调试指标

  • loki_source_gcplog_push_entries_total(计数器):gcplog 目标接收到的条目数。
  • loki_source_gcplog_push_entries_total(计数器):接收 gcplog 消息时解析错误的总数。

示例

此示例侦听 0.0.0.0:8080 上的 GCP Pub/Sub PushRequests 并将它们转发到 loki.write 组件。

alloy
loki.source.gcplog "local" {
  push {}

  forward_to = [loki.write.local.receiver]
}

loki.write "local" {
  endpoint {
    url = "loki:3100/api/v1/push"
  }
}

另一方面,如果我们需要服务器侦听 0.0.0.0:4040,并将它们转发到 loki.write 组件。

alloy
loki.source.gcplog "local" {
  push {
    http {
        listen_port = 4040
    }
  }

  forward_to = [loki.write.local.receiver]
}

loki.write "local" {
  endpoint {
    url = "loki:3100/api/v1/push"
  }
}

兼容组件

loki.source.gcplog 可以接受来自以下组件的参数

注意

连接某些组件可能没有意义,或者组件可能需要进一步配置才能使连接正常工作。请参阅链接的文档以获取更多详细信息。