otelcol.receiver.filelog
公开预览:这是一个公开预览组件。公开预览组件可能会有重大变更,并可能被涵盖相同用例的等效功能取代。必须将
stability.level
标志设置为public-preview
或更低才能使用此组件。
otelcol.receiver.filelog
从文件中读取日志条目,并将其转发给其他 otelcol.*
组件。
注意
otelcol.receiver.filelog
是对上游 OpenTelemetry Collectorfilelog
receiver 的封装。错误报告或功能请求如有必要将重定向到上游仓库。
您可以通过为 otelcol.receiver.filelog
组件指定不同的标签来创建多个实例。
用法
otelcol.receiver.filelog "<LABEL>" {
include = [...]
output {
logs = [...]
}
}
参数
您可以在 otelcol.receiver.filelog
中使用以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
include | list(string) | 要包含的文件的 glob 模式列表。 | 是 | |
exclude | list(string) | 要排除的文件的 glob 模式列表,这些文件原本会被 include 模式包含。 | [] | 否 |
poll_interval | time.Duration | 轮询文件以查找新条目的时间间隔。 | 200ms | 否 |
max_concurrent_files | int | 同时读取的最大文件数。 | 10 | 否 |
max_batches | int | 同时处理的最大批次数。 | 10 | 否 |
start_at | string | 开始读取文件的位置。 | end | 否 |
fingerprint_size | units.Base2Bytes | 用于检测文件更改的指纹大小。 | 1KiB | 否 |
max_log_size | units.Base2Bytes | 日志条目的最大大小。 | 1MiB | 否 |
encoding | string | 日志文件的编码。 | utf-8 | 否 |
force_flush_period | time.Duration | 即使缓冲区未满,也要刷新日志的周期。 | 500ms | 否 |
delete_after_read | bool | 读取后是否删除文件。 | false | 否 |
compression | string | 日志文件使用的压缩类型。 | `` | 否 |
acquire_fs_lock | bool | 读取文件时是否获取文件系统锁(仅限 Unix)。 | false | 否 |
attributes | map(string) | 要添加到每个日志条目的属性映射。 | {} | 否 |
resource | map(string) | 与每个日志条目关联的资源属性映射。 | {} | 否 |
exclude_older_than | time.Duration | 排除修改时间早于指定时长的文件。 | 0s | 否 |
include_file_record_number | bool | 日志条目中是否包含文件记录号。 | false | 否 |
include_file_name | bool | 日志条目中是否包含文件名。 | true | 否 |
include_file_path | bool | 日志条目中是否包含文件路径。 | false | 否 |
include_file_name_resolved | bool | 日志条目中是否包含解析后的文件名。 | false | 否 |
include_file_path_resolved | bool | 日志条目中是否包含解析后的文件路径。 | false | 否 |
include_file_owner_name | bool | 日志条目中是否包含文件所有者的名称。 | false | 否 |
include_file_owner_group_name | bool | 日志条目中是否包含文件所有者的组名称。 | false | 否 |
preserve_leading_whitespaces | bool | 设置为 true 时保留消息中的前导空格。 | false | 否 |
preserve_trailing_whitespaces | bool | 设置为 true 时保留消息中的尾随空格。 | false | 否 |
operators | lists(map(string) | 用于解析日志条目的 Operator 列表。 | [] | 否 |
encoding
必须是 utf-8
、utf-16le
、utf-16be
、ascii
、big5
或 nop
中的一个。请参考上游 receiver 文档了解更多详情。
start_at
必须是 beginning
或 end
中的一个。只有当 start_at
设置为 beginning
时,才能使用 header
块。
compression
必须是 或
gzip
。
operators
operators
列表是 stanza Operator 列表,用于在读取日志条目后对其进行转换。
例如,如果正在收集容器日志,您可能希望利用 stanza container
parser operator 向日志条目添加相关属性。
otelcol.receiver.filelog "default" {
...
operators = [
{
type = "container"
}
]
}
块
otelcol.receiver.filelog
的定义中支持以下块
层级 | 块 | 描述 | 必需 |
---|---|---|---|
output | output | 配置将接收到的遥测数据发送到何处。 | 是 |
multiline | multiline | 配置日志消息的多行解析规则 | 否 |
header | header | 配置日志头行解析规则 | 否 |
retry_on_failure | retry_on_failure | 配置 receiver 在 pipeline 下游遇到错误时的重试行为。 | 否 |
debug_metrics | debug_metrics | 配置此组件用于监控其状态的指标。 | 否 |
ordering_criteria | ordering_criteria | 配置处理日志文件的顺序。 | 否 |
ordering_criteria > sort_by | sort_by | 配置 ordering criteria 中要排序的字段。 | 是 |
> 符号表示更深的嵌套层级。例如,ordering_criteria
> sort_by
指的是在 ordering_criteria
块内定义的 sort_by
块。
output
必需
output
块配置一组组件,用于转发生成的遥测数据。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
logs | list(otelcol.Consumer) | 发送日志的消费者列表。 | [] | 否 |
metrics | list(otelcol.Consumer) | 发送指标的消费者列表。 | [] | 否 |
traces | list(otelcol.Consumer) | 发送 traces 的消费者列表。 | [] | 否 |
您必须指定 output
块,但其所有参数都是可选的。默认情况下,遥测数据会被丢弃。请相应地配置 metrics
、logs
和 traces
参数,以将遥测数据发送到其他组件。
debug_metrics
debug_metrics
块配置此组件用于监控其状态的指标。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | boolean | 是否禁用某些高基数指标。 | true | 否 |
disable_high_cardinality_metrics
是 Grafana Alloy 中相当于 OpenTelemetry Collector 中 telemetry.disableHighCardinalityMetrics
功能开关的功能。它会移除可能导致高基数指标的属性。例如,关于 HTTP 和 gRPC 连接的指标中带有 IP 地址和端口号的属性会被移除。
注意
如果配置了
disable_high_cardinality_metrics
,它仅适用于otelcol.exporter.*
和otelcol.receiver.*
组件。
header
header
块配置用于将日志头行解析为添加到每个日志条目的额外属性的逻辑。它只能在 start_at
设置为 beginning
时使用。支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
metadata_operators | lists(map(string) | 用于从头解析元数据的 Operator 列表。 | 是 | |
pattern | string | 匹配头行的正则表达式。 | 是 |
如果未设置 header
块,则不会将任何日志行视为头元数据。
metadata_operators
列表是 stanza Operator 列表,用于从头解析元数据。从嵌入的 Operator pipeline 创建的任何属性将应用于文件中的所有日志条目。
例如,您可以使用 regex_parser
来处理由 pattern
表达式标识的头行。以下示例展示了一个虚构的头行,以及将从中解析 environment
属性的 header
块。
HEADER_IDENTIFIER env="production"
...
otelcol.receiver.filelog "default" {
...
header {
pattern = '^HEADER_IDENTIFIER .*$'
metadata_operators = [
{
type = "regex_parser"
regex = 'env="(?P<environment>.+)"'
}
]
}
}
multiline
multiline
块配置用于拆分传入日志条目的逻辑。支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
line_end_pattern | string | 匹配日志条目结尾的正则表达式。 | 是* | |
line_start_pattern | string | 匹配日志条目开头的正则表达式。 | 是* | |
omit_pattern | bool | 从拆分的日志条目中省略开始/结束模式。 | false | 否 |
multiline
块必须包含 line_start_pattern
或 line_end_pattern
之一。
如果未设置 multiline
块,日志条目将不会被拆分。
ordering_criteria
ordering_criteria
块配置发现的日志文件的处理顺序。支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
group_by | string | 用于预排序分组的 regex 属性中的命名捕获组。 | "" | 否 |
regex | string | 用于捕获日志文件元素以进行排序计算的正则表达式。 | "" | 否 |
top_n | int | 使用文件排序时要跟踪的顶部日志文件数量。 | 1 | 否 |
sort_by
sort_by
可重复块配置 ordering_criteria
块中解析的字段应用于排序发现的日志文件的方式。支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
sort_type | string | 要应用的排序类型。 | 是 | |
ascending | bool | 是否按升序排序。 | true | 否 |
layout | string | 从命名 regex 捕获组中解析的时间戳布局。 | "" | 否 |
location | string | 时间戳的位置。 | UTC | 否 |
regex_key | string | 用于排序的 regex 属性中的命名捕获组。 | "" | 否 |
sort_type
必须是 numeric
、lexicographic
、timestamp
或 mtime
中的一个。使用 numeric
、lexicographic
或 timestamp
sort_type
时,必须在 regex_key
中提供 ordering_criteria
中 regex
属性定义的命名捕获组。使用 mtime
sort_type
时,将使用文件的修改时间进行排序。
location
和 layout
参数仅在 sort_type
为 timestamp
时适用。
location
参数指定一个时区标识符。可用位置取决于本地 IANA 时区数据库。请参考维基百科中的 tz database 时区列表获取非详尽列表。
retry_on_failure
retry_on_failure
块配置 receiver 在 pipeline 下游遇到错误时的重试行为。失败后会使用退避算法延迟重试。支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | bool | 如果设置为 true 且发生错误,receiver 将暂停读取日志文件并重新发送当前批次的日志。 | false | 否 |
initial_interval | duration | 第一次失败后重试等待的时间。 | 1s | 否 |
max_elapsed_time | duration | 数据被丢弃前消息的最长存活时间。 | 5m | 否 |
max_interval | duration | 应用退避逻辑后等待的最长时间。 | 30s | 否 |
如果 max_elapsed_time
设置为 0
,数据将永远不会被丢弃。
导出的字段
otelcol.receiver.filelog
不导出任何字段。
组件健康状况
只有在配置无效时,才会报告 otelcol.receiver.filelog
的健康状况为不健康。
Debug 指标
otelcol.receiver.filelog
不暴露任何组件特定的 debug 指标。
示例
此示例使用 otelcol.receiver.filelog
receiver 读取日志条目,并通过 otelcol.exporter.debug
组件将其记录。它期望日志以 ISO8601 兼容的时间戳开头,并使用 regex_parser
operator 从日志中解析它。
otelcol.receiver.filelog "default" {
include = ["/var/log/*.log"]
operators = [{
type = "regex_parser",
regex = "^(?P<timestamp>\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3,6}Z)",
timestamp = {
parse_from = "attributes.timestamp",
layout = "%Y-%m-%dT%H:%M:%S.%fZ",
location = "UTC",
},
}]
output {
logs = [otelcol.exporter.debug.default.input]
}
}
otelcol.exporter.debug "default" {}
兼容组件
otelcol.receiver.filelog
可以接受来自以下组件的参数
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正确建立连接。请参考链接的文档了解更多详情。