菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow lokibreadcrumb arrow loki.source.podlogs
正式发布 (GA)

loki.source.podlogs

loki.source.podlogs 在 Kubernetes 上发现 PodLogs 资源。PodLogs 资源为在您的集群上发现哪些 Kubernetes Pod 提供规则。

loki.source.podlogs 使用 Kubernetes API 来追踪从发现的 Kubernetes Pod 中获取的日志。

loki.source.podlogs 类似于 loki.source.kubernetes,但使用自定义资源,而不是从另一个组件馈送目标。

注意

由于 loki.source.podlogs 使用 Kubernetes API 来追踪日志,因此与 loki.source.file 相比,它使用的网络流量和 Kubelet 的 CPU 消耗更多。

您可以通过为多个 loki.source.podlogs 组件赋予不同的标签来指定它们。

用法

alloy
loki.source.podlogs "<LABEL>" {
  forward_to = <RECEIVER_LIST>
}

参数

该组件为给定的每个 targets 启动一个新的读取器,并将日志条目扇出到 forward_to 中传递的接收器列表中。

loki.source.podlogs 支持以下参数

名称类型描述默认值必需
forward_tolist(LogsReceiver)将日志条目发送到的接收器列表。

loki.source.podlogs 在 Kubernetes 上搜索 PodLogs 资源。每个 PodLogs 资源描述了一组要从中追踪日志的 Pod。

PodLogs 自定义资源

PodLogs 资源描述了一组要从中收集日志的 Pod。

注意

loki.source.podlogs 查找 monitoring.grafana.com/v1alpha2PodLogs,并且与来自 Agent Operator 的 PodLogs 不兼容,Agent Operator 的 PodLogs 版本为 v1alpha1

字段类型描述
apiVersionstringmonitoring.grafana.com/v1alpha2
kindstringPodLogs
metadataObjectMetaPodLogs 的元数据。
specPodLogsSpec定义要从中收集日志的 Pod。

PodLogsSpec

PodLogsSpec 描述了一组要从中收集日志的 Pod。

字段类型描述
selectorLabelSelector要从中收集日志的 Pod 的标签选择器。
namespaceSelectorLabelSelector命名空间的标签选择器,可以在其中发现 Pod。
relabelingsRelabelConfig要应用于发现的 Pod 的重新标记规则。

如果 selector 保留为默认值,则会发现所有 Pod。如果 namespaceSelector 保留为默认值,则所有命名空间都将用于 Pod 发现。

relabelings 字段可用于修改来自发现的 Pod 的标签。以下元标签可用于重新标记

  • __meta_kubernetes_namespace:Pod 的命名空间。
  • __meta_kubernetes_pod_annotation_<annotationname>:来自 Pod 的每个注释。
  • __meta_kubernetes_pod_annotationpresent_<annotationname>:对于来自 Pod 的每个注释,为 true
  • __meta_kubernetes_pod_container_image:容器正在使用的镜像。
  • __meta_kubernetes_pod_container_init:如果容器是 InitContainer,则为 true
  • __meta_kubernetes_pod_container_name:容器的名称。
  • __meta_kubernetes_pod_controller_kind:Pod 控制器的对象类型。
  • __meta_kubernetes_pod_controller_name:Pod 控制器的名称。
  • __meta_kubernetes_pod_host_ip:Pod 对象的当前主机 IP。
  • __meta_kubernetes_pod_ip:Pod 的 Pod IP。
  • __meta_kubernetes_pod_label_<labelname>:来自 Pod 的每个标签。
  • __meta_kubernetes_pod_labelpresent_<labelname>:对于来自 Pod 的每个标签,为 true
  • __meta_kubernetes_pod_name:Pod 的名称。
  • __meta_kubernetes_pod_node_name:Pod 调度到的节点的名称。
  • __meta_kubernetes_pod_phase:在生命周期中设置为 PendingRunningSucceededFailedUnknown
  • __meta_kubernetes_pod_ready:对于 Pod 的就绪状态,设置为 truefalse
  • __meta_kubernetes_pod_uid:Pod 的 UID。

除了元标签外,还公开了以下标签以告知 loki.source.podlogs 要追踪哪个容器

  • __pod_container_name__:Pod 中的容器名称。
  • __pod_name__:Pod 的名称。
  • __pod_namespace__:Pod 的命名空间。
  • __pod_uid__:Pod 的 UID。

您可以将以下块与 loki.source.podlogs 一起使用

描述必需
client配置用于追踪日志的 Kubernetes 客户端。
client > authorization配置对端点的通用授权。
client > basic_auth配置用于向端点进行身份验证的 basic_auth
client > oauth2配置 OAuth 2.0 以向端点进行身份验证。
client > oauth2 > tls_config配置用于连接到端点的 TLS 设置。
client > tls_config配置用于连接到端点的 TLS 设置。
clustering当 Alloy 在集群模式下运行时,配置组件。
namespace_selector用于发现 PodLogs 的命名空间的标签选择器。
namespace_selector > match_expression用于发现 PodLogs 的命名空间的标签选择器表达式。
selector用于发现哪个 PodLogs 的标签选择器。
selector > match_expression用于发现哪个 PodLogs 的标签选择器表达式。

> 符号表示更深层次的嵌套。例如,client > basic_auth 指的是在 client 块内定义的 basic_auth 块。

client

client 块配置用于追踪来自容器的日志的 Kubernetes 客户端。如果未提供 client 块,则使用运行 Alloy Pod 的服务帐户的默认集群内配置。

支持以下参数

名称类型描述默认值必需
api_serverstringKubernetes API 服务器的 URL。
bearer_token_filestring包含用于身份验证的持有者令牌的文件。
bearer_tokensecret用于身份验证的持有者令牌。
enable_http2bool是否支持对请求使用 HTTP2。true
follow_redirectsbool是否应跟随服务器返回的重定向。true
kubeconfig_filestring用于连接到 Kubernetes 的 kubeconfig 文件的路径。
no_proxystring从代理中排除的 IP 地址、CIDR 表示法和域名(以逗号分隔)的列表。
proxy_connect_headermap(list(secret))指定在 CONNECT 请求期间发送到代理的标头。
proxy_from_environmentbool使用环境变量指示的代理 URL。false
proxy_urlstring用于发送请求的 HTTP 代理。

以下各项最多可以提供一个

no_proxy 可以包含 IP、CIDR 表示法和域名。IP 和域名可以包含端口号。如果配置了 no_proxy,则必须配置 proxy_url

proxy_from_environment 使用环境变量 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY(或其小写版本)。请求使用环境变量中与其方案匹配的代理,除非被 NO_PROXY 排除。如果配置了 proxy_from_environment,则不得配置 proxy_urlno_proxy

仅当配置了 proxy_urlproxy_from_environment 时,才应配置 proxy_connect_header

authorization

名称类型描述默认值必需
credentials_filestring包含密钥值的文件。
credentialssecret密钥值。
typestring授权类型,例如“Bearer”。

credentialcredentials_file 是互斥的,并且在 authorization 块内只能提供一个。

basic_auth

名称类型描述默认值必需
password_filestring包含基本身份验证密码的文件。
passwordsecret基本身份验证密码。
usernamestring基本身份验证用户名。

passwordpassword_file 是互斥的,并且在 basic_auth 块内只能提供一个。

clustering

名称类型描述默认值必需
enabledbool与其他集群节点分配日志收集。

当 Alloy 使用集群 并且 enabled 设置为 true 时,此 loki.source.podlogs 组件实例选择加入参与集群,以在所有集群节点之间分配日志收集的负载。

如果 Alloy 在集群模式下运行,则该块是空操作,并且 loki.source.podlogs 会根据发现的每个 PodLogs 资源收集日志。

集群仅查看以下标签以确定分片键

  • __pod_namespace__
  • __pod_name__
  • __pod_container_name__
  • __pod_uid__
  • __meta_kubernetes_namespace
  • __meta_kubernetes_pod_name
  • __meta_kubernetes_pod_container_name
  • __meta_kubernetes_pod_uid
  • container
  • pod
  • job
  • namespace

match_expression

match_expression 块描述了 Kubernetes 标签匹配表达式,用于 PodLogs 或命名空间发现。

支持以下参数

名称类型描述默认值必需
keystring要匹配的标签名称。
operatorstring匹配时要使用的运算符。
valueslist(string)匹配时使用的值。

operator 参数必须是以下字符串之一

  • "In"
  • "NotIn"
  • "Exists"
  • "DoesNotExist"

selectornamespace_selector 都可以使用多个 match_expression 内部块,这些内部块被视为 AND 子句。

oauth2

名称类型描述默认值必需
client_idstringOAuth2 客户端 ID。
client_secret_filestring包含 OAuth2 客户端密钥的文件。
client_secretsecretOAuth2 客户端密钥。
endpoint_paramsmap(string)要附加到令牌 URL 的可选参数。
proxy_urlstring用于发送请求的 HTTP 代理。
no_proxystring从代理中排除的 IP 地址、CIDR 表示法和域名(以逗号分隔)的列表。
proxy_from_environmentbool使用环境变量指示的代理 URL。false
proxy_connect_headermap(list(secret))指定在 CONNECT 请求期间发送到代理的标头。
scopeslist(string)要使用身份验证的范围列表。
token_urlstring从中获取令牌的 URL。

client_secretclient_secret_file 是互斥的,并且在 oauth2 块内只能提供一个。

oauth2 块还可以包含单独的 tls_config 子块。

no_proxy 可以包含 IP、CIDR 表示法和域名。IP 和域名可以包含端口号。如果配置了 no_proxy,则必须配置 proxy_url

proxy_from_environment 使用环境变量 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY(或其小写版本)。请求使用环境变量中与其方案匹配的代理,除非被 NO_PROXY 排除。如果配置了 proxy_from_environment,则不得配置 proxy_urlno_proxy

仅当配置了 proxy_urlproxy_from_environment 时,才应配置 proxy_connect_header

selectornamespace_selector

selectornamespce_selector 块描述了 Kubernetes 标签选择器,用于 PodLogs 或命名空间发现。

支持以下参数

名称类型描述默认值必需
match_labelsmap(string)用于发现资源的标签键和值。{}

match_labels 参数为空时,将匹配所有资源。

tls_config

名称类型描述默认值必需
ca_pemstring用于验证服务器的 CA PEM 编码文本。
ca_filestring用于验证服务器的 CA 证书。
cert_pemstring用于客户端身份验证的证书 PEM 编码文本。
cert_filestring用于客户端身份验证的证书文件。
insecure_skip_verifybool禁用服务器证书的验证。
key_filestring用于客户端身份验证的密钥文件。
key_pemsecret用于客户端身份验证的密钥 PEM 编码文本。
min_versionstring可接受的最低 TLS 版本。
server_namestringServerName 扩展,用于指示服务器的名称。

以下参数对是互斥的,不能同时设置

  • ca_pemca_file
  • cert_pemcert_file
  • key_pemkey_file

配置客户端身份验证时,必须同时提供客户端证书(使用 cert_pemcert_file)和客户端密钥(使用 key_pemkey_file)。

当未提供 min_version 时,可接受的最低 TLS 版本继承自 Go 的默认最低版本 TLS 1.2。如果提供了 min_version,则必须将其设置为以下字符串之一

  • "TLS10" (TLS 1.0)
  • "TLS11" (TLS 1.1)
  • "TLS12" (TLS 1.2)
  • "TLS13" (TLS 1.3)

导出的字段

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

组件运行状况

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

调试信息

loki.source.podlogs 为每个目标公开一些目标级别的调试信息

  • 与目标关联的标签。
  • 在服务发现期间找到的完整标签集。
  • 最近一次读取日志行并转发到管道中下一个组件的时间。
  • 来自追踪的最新错误(如果有)。

调试指标

loki.source.podlogs 不公开任何组件特定的调试指标。

示例

此示例发现所有 PodLogs 资源,并将收集的日志转发到 loki.write 组件,以便将它们写入 Loki。

alloy
loki.source.podlogs "default" {
  forward_to = [loki.write.local.receiver]
}

loki.write "local" {
  endpoint {
    url = sys.env("LOKI_URL")
  }
}

兼容组件

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

注意

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