菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow lokibreadcrumb arrow loki.source.kubernetes_events
开源

loki.source.kubernetes_events

loki.source.kubernetes_events 从 Kubernetes API 获取事件并转换为日志行以转发到其他 loki 组件。

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

用法

alloy
loki.source.kubernetes_events "LABEL" {
  forward_to = RECEIVER_LIST
}

参数

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

loki.source.kubernetes_events 支持以下参数

名称类型描述默认值必需
job_name字符串用于生成日志的 job 标签的值。"loki.source.kubernetes_events"
log_format字符串日志格式。"logfmt"
namespaces列表(字符串)要监视事件的命名空间。[]
forward_to列表(日志接收器)要发送日志条目的接收器列表。

默认情况下,loki.source.kubernetes_events将监视所有命名空间的事件。可以在namespaces参数中提供要监视的显式命名空间列表。

默认情况下,生成的日志行将使用logfmt格式。使用log_format参数将其更改为json。这些格式也是LogQL解析器的名称,可用于处理日志。

注意

当监视所有命名空间时,Alloy必须具有在集群范围内监视事件的权限(例如,使用ClusterRoleBinding)。如果提供了显式命名空间列表,Alloy只需具有监视这些命名空间事件的权限。

loki.source.kubernetes_events生成的日志行具有以下标签

  • namespace:涉及事件的Kubernetes对象的命名空间。
  • job:由job_name参数指定的值。
  • instance:与组件ID匹配的值。

如果job_name参数是空字符串,则组件将无法加载。要删除作业标签,将loki.source.kubernetes_events的输出转发到一个loki.relabel组件

为了与静态模式中的eventhandler集成兼容,可以将job_name设置为"integrations/kubernetes/eventhandler"

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

层次结构描述必需
clientclient配置用于跟踪日志的Kubernetes客户端。
client > basic_authbasic_auth配置用于端点的认证的基本认证。
client > authorizationauthorization配置端点的通用认证。
client > oauth2oauth2配置用于端点认证的OAuth2。
client > oauth2 > tls_configtls_config配置连接到端点的TLS设置。
client > tls_configtls_config配置连接到端点的TLS设置。

符号>表示更深的嵌套级别。例如,client > basic_auth指的是在client块中定义的basic_auth块。

client块

client块配置用于从容器中跟踪日志的Kubernetes客户端。如果没有提供client块,则使用默认的集群配置,即使用运行Alloy pod的服务帐户。

以下参数受支持

名称类型描述默认值必需
api_server字符串Kubernetes API服务器的URL。
kubeconfig_file字符串用于连接到Kubernetes的kubeconfig文件的路径。
bearer_token_file字符串包含用于认证的bearer令牌的文件。
bearer_tokensecret用于认证的bearer令牌。
enable_http2bool是否支持请求的HTTP2。true
follow_redirectsbool是否应跟随服务器返回的重定向。true
proxy_url字符串要通过其发送请求的HTTP代理。
no_proxy字符串以逗号分隔的IP地址、CIDR表示法和域名列表,不包括在代理中。
proxy_from_environmentbool使用环境变量指示的代理URL。false
proxy_connect_headermap(list(secret))指定在CONNECT请求期间发送到代理的标头。

以下之一最多可以提供

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

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

如果配置了 proxy_urlproxy_from_environment,则应仅配置 proxy_connect_header

基本身份验证块

名称类型描述默认值必需
密码文件字符串包含基本身份验证密码的文件。
密码secret基本身份验证密码。
用户名字符串基本身份验证用户名。

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

授权块

名称类型描述默认值必需
凭证文件字符串包含秘密值的文件。
凭证secret秘密值。
类型字符串授权类型,例如,“Bearer”。

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

OAuth2 块

名称类型描述默认值必需
客户端 ID字符串OAuth2 客户端 ID。
客户端密钥文件字符串包含 OAuth2 客户端密钥的文件。
客户端密钥secretOAuth2 客户端密钥。
端点参数map(string)追加到令牌 URL 的可选参数。
proxy_url字符串要通过其发送请求的HTTP代理。
no_proxy字符串以逗号分隔的IP地址、CIDR表示法和域名列表,不包括在代理中。
proxy_from_environmentbool使用环境变量指示的代理URL。false
proxy_connect_headermap(list(secret))指定在CONNECT请求期间发送到代理的标头。
作用域列表(字符串)用于验证的作用域列表。
令牌 URL字符串获取令牌的 URL。

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

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

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

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

如果配置了 proxy_urlproxy_from_environment,则应仅配置 proxy_connect_header

tls_config 块

名称类型描述默认值必需
ca_pem字符串用于验证服务器的 CA PEM 编码文本。
ca_file字符串用于验证服务器的 CA 证书。
cert_pem字符串用于客户端身份验证的证书 PEM 编码文本。
cert_file字符串用于客户端身份验证的证书文件。
insecure_skip_verifybool禁用服务器证书的验证。
key_file字符串用于客户端身份验证的密钥文件。
key_pemsecret用于客户端身份验证的密钥 PEM 编码文本。
min_version字符串可接受的最小 TLS 版本。
server_name字符串ServerName 扩展以指示服务器名称。

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

  • 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.kubernetes_events 不导出任何字段。

组件健康

只有当提供无效配置时,loki.source.kubernetes_events 才会报告为不健康。

调试信息

loki.source.kubernetes_events 公开了每个监视命名空间事件最近读取的时间戳。

调试度量

loki.source.kubernetes_events 不公开任何组件特定的调试度量。

组件行为

该组件使用其数据路径,一个以域名完全限定名命名的目录,来存储其 位置文件。位置文件用于存储读取偏移量,以便在组件或 Alloy 重启后,loki.source.kubernetes_events 可以从同一位置继续。

数据路径位于由 --storage.path 命令行参数 配置的目录内。

在Grafana Agent静态版本的eventhandler集成中,使用cache_path参数来配置一个位置文件。在Alloy中,这个参数不再需要。

示例

此示例收集kube-system命名空间中的watch事件并将它们转发到loki.write组件,以便写入Loki。

alloy
loki.source.kubernetes_events "example" {
  // Only watch for events in the kube-system namespace.
  namespaces = ["kube-system"]

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

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

兼容组件

loki.source.kubernetes_events可以接受以下组件的参数

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。有关详细信息,请参阅链接文档。