菜单
文档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_namestring为生成的日志使用 job 标签的值。"loki.source.kubernetes_events"no
log_formatstring日志的格式。"logfmt"no
namespaceslist(string)监控事件的命名空间。[]no
forward_tolist(LogsReceiver)要发送日志条目的接收器列表。yes

默认情况下,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客户端。no
client > basic_authbasic_auth配置基本认证以建立端点认证。no
client > authorizationauthorization配置通用的端点认证。no
client > oauth2oauth2配置端点认证的OAuth2。no
client > oauth2 > tls_configtls_config配置连接到端点的TLS设置。no
client > tls_configtls_config配置连接到端点的TLS设置。no

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

client块

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

以下参数受支持

名称类型描述默认必需
api_serverstringKubernetes API服务器的URL。no
kubeconfig_filestring用于连接到Kubernetes的kubeconfig文件的路径。no
bearer_token_filestring包含用于认证的 bears token 的文件。no
bearer_tokensecret用于认证的 bears token。no
enable_http2bool请求是否支持HTTP2。trueno
follow_redirectsbool服务器返回的重定向是否应该跟随。trueno
proxy_urlstring要通过其发送请求的HTTP代理。no
no_proxystring逗号分隔的IP地址、CIDR表示法和域名列表,用于排除代理。no
proxy_from_environmentbool使用环境变量指示的代理URL。falseno
proxy_connect_headermap(list(secret))指定在CONNECT请求期间发送到代理的头。no

以下之一最多可提供一次

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

proxy_from_environment使用HTTP_PROXY、HTTPS_PROXY和NO_PROXY(或其小写形式)环境变量指定的代理URL。除非由NO_PROXY排除,否则请求使用与其方案匹配的环境变量中的代理。如果配置了proxy_from_environment,则不应配置proxy_urlno_proxy

proxy_connect_header仅在配置了proxy_urlproxy_from_environment时配置。

basic_auth块

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

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

authorization块

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

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

oauth2块

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

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(或其小写形式)环境变量指定的代理URL。除非由NO_PROXY排除,否则请求使用与其方案匹配的环境变量中的代理。如果配置了proxy_from_environment,则不应配置proxy_urlno_proxy

proxy_connect_header仅在配置了proxy_urlproxy_from_environment时配置。

tls_config 块

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

以下两个参数互斥,不能同时设置

  • 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 命名空间中的监视事件,并将它们转发到 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 = env("LOKI_URL")
  }
}

兼容组件

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

注意

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