Loki GCP 日志源
loki.source.gcplog
通过利用 Pub/Sub 订阅 从云资源(例如 GCS 存储桶、负载均衡器或在 GCP 上运行的 Kubernetes 集群)检索日志。
该组件使用“推送”或“拉取”策略检索日志条目,并将它们转发到 forward_to
中接收器的列表。
可以通过为多个 loki.source.gcplog
组件提供不同的标签来指定它们。
用法
loki.source.gcplog "LABEL" {
pull {
project_id = "PROJECT_ID"
subscription = "SUB_ID"
}
forward_to = RECEIVER_LIST
}
参数
loki.source.gcplog
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必填 |
---|---|---|---|---|
forward_to | list(LogsReceiver) | 要将日志条目发送到的接收器列表。 | 是 | |
relabel_rules | RelabelRules | 要应用于日志条目的重命名规则。 | “{}” | 否 |
块
在 loki.source.gcplog
的定义中支持以下块
层次结构 | 名称 | 描述 | 必填 |
---|---|---|---|
pull | pull | 配置一个目标以从 GCP Pub/Sub 订阅中拉取日志。 | 否 |
push | push | 配置一个服务器以接收 GCP Pub/Sub 推送请求作为日志。 | 否 |
push > http | HTTP | 配置在使用 push 模式时接收请求的 HTTP 服务器。 | 否 |
push > grpc | grpc | 配置在使用 push 模式时接收请求的 gRPC 服务器。 | 否 |
pull
和 push
内部块是互斥的;组件在其定义中必须包含这两个块中的一个。http
和 grpc
块仅在配置 push
块时使用。
pull 块
pull
块定义要从中读取日志条目的 GCP 项目 ID 和订阅。
以下参数可用于配置 pull
块。任何省略的字段都采用其默认值。
名称 | 类型 | 描述 | 默认值 | 必填 |
---|---|---|---|---|
project_id | string | 订阅所属的 GCP 项目 ID。 | 是 | |
subscription | string | 要从中拉取日志的订阅。 | 是 | |
labels | map(string) | 与传入日志关联的其他标签。 | "{}" | 否 |
use_incoming_timestamp | bool | 是否使用传入的日志时间戳。 | false | 否 |
use_full_line | bool | 即使 textPayload 可用,也要发送来自 Cloud Logging 的完整行。 | false | 否 |
为了使用 pull
策略,必须已配置 GCP 项目以将其云资源日志转发到 Pub/Sub 主题,以便 loki.source.gcplog
使用。
通常,主机系统还需要配置其 GCP 凭据。一种方法是将 GOOGLE_APPLICATION_CREDENTIALS
环境变量指向凭据配置 JSON 文件或服务帐户密钥的位置。
push 块
push
块定义接收来自 GCP 的 Pub/Sub 服务器的推送请求的服务器的配置。
以下参数可用于配置 push
块。任何省略的字段都采用其默认值。
名称 | 类型 | 描述 | 默认值 | 必填 |
---|---|---|---|---|
graceful_shutdown_timeout | duration | 服务器优雅关闭的超时时间。如果已配置,则应大于零。 | “30s” | 否 |
push_timeout | duration | 为每个传入的 GCP 日志条目设置最大处理时间。 | "0s" | 否 |
labels | map(string) | 与传入条目关联的其他标签。 | "{}" | 否 |
use_incoming_timestamp | bool | 是否使用传入条目时间戳。 | false | 否 |
use_full_line | bool | 即使 textPayload 可用,也要发送来自 Cloud Logging 的完整行。默认情况下,如果行中存在 textPayload ,则将其用作日志行 | false | 否 |
服务器侦听来自 GCP 的推送订阅在 HOST:PORT/gcp/api/v1/push
上的 POST 请求。
默认情况下,对于这两种策略,组件都将日志条目时间戳分配为处理它的时间,除非 use_incoming_timestamp
设置为 true。
labels
映射应用于通过组件的每个条目。
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" | 否 |
grpc
grpc
块配置 gRPC 服务器。
您可以使用以下参数配置 grpc
块。任何省略的字段都采用其默认值。
名称 | 类型 | 描述 | 默认值 | 必填 |
---|---|---|---|---|
conn_limit | int | 同时 HTTP 连接的最大数量。默认为无限制。 | 0 | 否 |
listen_address | string | 服务器侦听新连接的网络地址。它默认为接受所有传入连接。 | "" | 否 |
listen_port | int | 服务器侦听新连接的端口号。默认为随机空闲端口。 | 0 | 否 |
max_connection_age_grace | duration | 在 max_connection_age 之后的一个附加周期,在此之后强制关闭连接。 | "infinity" | 否 |
max_connection_age | duration | 连接在关闭之前可能存在的最长时间。 | "infinity" | 否 |
max_connection_idle | duration | 空闲连接关闭之前的持续时间。 | "infinity" | 否 |
server_max_concurrent_streams | int | gRPC 调用的并发流数限制 (0 = 无限制)。 | 100 | 否 |
server_max_recv_msg_size | int | 此服务器可以接收的 gRPC 消息的大小限制(字节)。 | 4MB | 否 |
server_max_send_msg_size | int | 此服务器可以发送的 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
组件。
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
组件。
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
可以接受来自以下组件的参数
- 导出 Loki
LogsReceiver
的组件
注意
连接某些组件可能没有意义,或者组件可能需要进一步配置才能使连接正常工作。请参阅链接的文档以获取更多详细信息。