loki.source.docker
loki.source.docker
从Docker容器中读取日志条目并将它们转发到其他loki.*
组件。每个组件可以读取单个Docker守护进程。
可以通过指定不同的标签来指定多个loki.source.docker
组件。
使用方法
loki.source.docker "LABEL" {
host = HOST
targets = TARGET_LIST
forward_to = RECEIVER_LIST
}
参数
组件为每个给定的targets
启动一个新的读取器并将日志条目分发到forward_to
中传入的接收器列表。
loki.source.docker
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
host | 字符串 | Docker守护进程的地址。 | 是 | |
targets | list(map(string)) | 要从其中读取日志的容器列表。 | 是 | |
forward_to | list(LogsReceiver) | 要发送日志条目的接收器列表。 | 是 | |
labels | map(string) | 应用于条目的默认标签集合。 | "{}" | 是 |
relabel_rules | RelabelRules | 应用于日志条目的重命名规则。 | "{}" | 否 |
refresh_interval | duration | 连接到Docker守护进程的HTTP(S)时使用的刷新间隔。 | "60s" | 否 |
块
以下块在loki.source.docker
定义内部受支持
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
client | client | 连接到端点时的HTTP客户端设置。 | 否 |
client > basic_auth | basic_auth | 设置basic_auth以对端点进行身份验证。 | 否 |
client > authorization | authorization | 配置端点的通用身份验证。 | 否 |
client > oauth2 | oauth2 | 配置OAuth2以对端点进行身份验证。 | 否 |
client > oauth2 > tls_config | tls_config | 配置连接到端点的TLS设置。 | 否 |
client > tls_config | tls_config | 配置连接到端点的TLS设置。 | 否 |
符号>
表示更深的嵌套级别。例如,client > basic_auth
指代在client
块内部定义的basic_auth
块。
这些块仅在通过HTTP或HTTPS连接到Docker守护进程时适用,连接到unix:///
套接字时没有效果。
client块
client
块配置了连接到HTTP(S) Docker守护进程使用的设置。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
bearer_token_file | 字符串 | 包含用于身份验证的承载令牌的文件。 | 否 | |
bearer_token | secret | 用于身份验证的承载令牌。 | 否 | |
enable_http2 | bool | 是否支持HTTP2请求。 | true | 否 |
follow_redirects | bool | 是否应遵循服务器返回的重定向。 | true | 否 |
proxy_url | 字符串 | 发送请求要通过的HTTP代理。 | 否 | |
no_proxy | 字符串 | 使用逗号分隔的IP地址、CIDR表示法和域名列表,排除代理。 | 否 | |
proxy_from_environment | bool | 使用环境变量中指定的代理URL。 | false | 否 |
proxy_connect_header |
| 指定在CONNECT请求期间发送给代理的头。 | 否 |
bearer_token
、bearer_token_file
、basic_auth
、authorization
和oauth2
是互斥的,且一个http_client_config
块内只能提供其中的一个。
no_proxy
可以包含IP地址、CIDR表示法和域名。IP和域名可以包含端口号。《proxy_url》必须配置,如果no_proxy
已配置。
proxy_from_environment
使用环境变量HTTP_PROXY、HTTPS_PROXY和NO_PROXY(或其小写版本)。请求使用与其方案匹配的环境变量的代理,除非被NO_PROXY排除。《proxy_url》和no_proxy
必须不配置,如果《proxy_from_environment》已配置。
只有当proxy_url
或proxy_from_environment
已配置时才应配置proxy_connect_header
。
basic_auth块
The basic_auth
block configures basic authentication for HTTP(S) Docker daemons.
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
password_file | 字符串 | 包含基本认证密码的文件。 | 否 | |
password | secret | 基本认证密码。 | 否 | |
username | 字符串 | 基本认证用户名。 | 否 |
password
和password_file
是互斥的,且在basic_auth
块内只能提供其中之一。
authorization块
The authorization
block configures custom authorization to use for the Docker daemon.
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
credentials_file | 字符串 | 包含秘密值的文件。 | 否 | |
credentials | secret | 秘密值。 | 否 | |
type | 字符串 | 授权类型,例如,“Bearer”。 | 否 |
credential
和credentials_file
是互斥的,且在authorization
块内只能提供其中之一。
oauth2块
The oauth2
block configures OAuth2 authorization to use for the Docker daemon.
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
client_id | 字符串 | OAuth2客户端ID。 | 否 | |
client_secret_file | 字符串 | 包含OAuth2客户端秘密的文件。 | 否 | |
client_secret | secret | OAuth2客户端秘密。 | 否 | |
endpoint_params | map(string) | 附录到令牌URL的可选参数。 | 否 | |
proxy_url | 字符串 | 发送请求要通过的HTTP代理。 | 否 | |
no_proxy | 字符串 | 使用逗号分隔的IP地址、CIDR表示法和域名列表,排除代理。 | 否 | |
proxy_from_environment | bool | 使用环境变量中指定的代理URL。 | false | 否 |
proxy_connect_header |
| 指定在CONNECT请求期间发送给代理的头。 | 否 | |
scopes |
| 认证时要使用的权限列表。 | 否 | |
token_url | 字符串 | 从其中获取令牌的URL。 | 否 |
client_secret
和client_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_url》和no_proxy
必须不配置,如果《proxy_from_environment》已配置。
只有当proxy_url
或proxy_from_environment
已配置时才应配置proxy_connect_header
。
tls_config块
The tls_config
block configures TLS settings for connecting to HTTPS Docker daemons.
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
ca_pem | 字符串 | 用于验证服务器的CA PEM编码文本。 | 否 | |
ca_file | 字符串 | 用于验证服务器的CA证书。 | 否 | |
cert_pem | 字符串 | 用于客户端认证的证书PEM编码文本。 | 否 | |
cert_file | 字符串 | 客户端认证的证书文件。 | 否 | |
insecure_skip_verify | bool | 禁用服务器证书的验证。 | 否 | |
key_file | 字符串 | 客户端认证的密钥文件。 | 否 | |
key_pem | secret | 用于客户端认证的密钥PEM编码文本。 | 否 | |
min_version | 字符串 | 可接受的最小TLS版本。 | 否 | |
server_name | 字符串 | 用于指示服务器名称的ServerName扩展。 | 否 |
以下参数对是互斥的,同时不能同时设置。
ca_pem
和ca_file
cert_pem
和cert_file
key_pem
和key_file
配置客户端认证时,必须同时提供客户端证书(使用cert_pem
或cert_file
)和客户端密钥(使用key_pem
或key_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.docker
不导出任何字段。
组件健康状态
loki.source.docker
只有在提供无效配置时才报告为不健康。
调试信息
loki.source.docker
暴露每个目标的某些调试信息
- 目标是否准备就绪以跟踪条目。
- 与目标关联的标签。
- 最近一次读取日志行的时间。
调试指标
loki_source_docker_target_entries_total
(指标): 发送到 Docker 目标的总成功条目数。loki_source_docker_target_parsing_errors_total
(指标): 接收 Docker 消息时的总解析错误数。
组件行为
组件使用其数据路径,即以域名完全限定名命名的目录,来存储其位置文件。位置文件用于存储读取偏移量,这样如果组件或Alloy重新启动,loki.source.docker
可以从相同的位置继续跟踪。
如果目标的参数包含具有相同容器ID的多个条目(例如,由于discovery.docker
抓取了多个公开端口或网络导致),loki.source.docker
将对其进行去重,并且只根据__meta_docker_container_id
标签保留每个容器ID实例的第一个实例。因此,将只查询一次每个容器ID的Docker守护程序,并且在组件的调试信息中将只有一个目标可用。
示例
此示例从targets
参数中指定的文件收集日志条目,并转发到loki.write
组件以写入Loki。
discovery.docker "linux" {
host = "unix:///var/run/docker.sock"
}
loki.source.docker "default" {
host = "unix:///var/run/docker.sock"
targets = discovery.docker.linux.targets
labels = {"app" = "docker"}
forward_to = [loki.write.local.receiver]
}
loki.write "local" {
endpoint {
url = "loki:3100/loki/api/v1/push"
}
}
兼容组件
loki.source.docker
可以接受以下组件的参数
- 导出目标的组件
- 导出Loki
LogsReceiver
的组件
注意
连接某些组件可能不合理或组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接文档。