菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow otelcolbreadcrumb arrow otelcol.receiver.filelog
公开预览

otelcol.receiver.filelog

公开预览:这是一个公开预览组件。公开预览组件可能会有重大变更,并可能被涵盖相同用例的等效功能取代。必须将 stability.level 标志设置为 public-preview 或更低才能使用此组件。

otelcol.receiver.filelog 从文件中读取日志条目,并将其转发给其他 otelcol.* 组件。

注意

otelcol.receiver.filelog 是对上游 OpenTelemetry Collector filelog receiver 的封装。错误报告或功能请求如有必要将重定向到上游仓库。

您可以通过为 otelcol.receiver.filelog 组件指定不同的标签来创建多个实例。

用法

alloy
otelcol.receiver.filelog "<LABEL>" {
  include = [...]
  output {
    logs    = [...]
  }
}

参数

您可以在 otelcol.receiver.filelog 中使用以下参数

名称类型描述默认值必需
includelist(string)要包含的文件的 glob 模式列表。
excludelist(string)要排除的文件的 glob 模式列表,这些文件原本会被 include 模式包含。[]
poll_intervaltime.Duration轮询文件以查找新条目的时间间隔。200ms
max_concurrent_filesint同时读取的最大文件数。10
max_batchesint同时处理的最大批次数。10
start_atstring开始读取文件的位置。end
fingerprint_sizeunits.Base2Bytes用于检测文件更改的指纹大小。1KiB
max_log_sizeunits.Base2Bytes日志条目的最大大小。1MiB
encodingstring日志文件的编码。utf-8
force_flush_periodtime.Duration即使缓冲区未满,也要刷新日志的周期。500ms
delete_after_readbool读取后是否删除文件。false
compressionstring日志文件使用的压缩类型。``
acquire_fs_lockbool读取文件时是否获取文件系统锁(仅限 Unix)。false
attributesmap(string)要添加到每个日志条目的属性映射。{}
resourcemap(string)与每个日志条目关联的资源属性映射。{}
exclude_older_thantime.Duration排除修改时间早于指定时长的文件。0s
include_file_record_numberbool日志条目中是否包含文件记录号。false
include_file_namebool日志条目中是否包含文件名。true
include_file_pathbool日志条目中是否包含文件路径。false
include_file_name_resolvedbool日志条目中是否包含解析后的文件名。false
include_file_path_resolvedbool日志条目中是否包含解析后的文件路径。false
include_file_owner_namebool日志条目中是否包含文件所有者的名称。false
include_file_owner_group_namebool日志条目中是否包含文件所有者的组名称。false
preserve_leading_whitespacesbool设置为 true 时保留消息中的前导空格。false
preserve_trailing_whitespacesbool设置为 true 时保留消息中的尾随空格。false
operatorslists(map(string)用于解析日志条目的 Operator 列表。[]

encoding 必须是 utf-8utf-16leutf-16beasciibig5nop 中的一个。请参考上游 receiver 文档了解更多详情。

start_at 必须是 beginningend 中的一个。只有当 start_at 设置为 beginning 时,才能使用 header 块。

compression 必须是 gzip

operators

operators 列表是 stanza Operator 列表,用于在读取日志条目后对其进行转换。

例如,如果正在收集容器日志,您可能希望利用 stanza container parser operator 向日志条目添加相关属性。

alloy
otelcol.receiver.filelog "default" {
    ...
    operators = [
      {
        type = "container"
      }
    ]
}

otelcol.receiver.filelog 的定义中支持以下块

层级描述必需
outputoutput配置将接收到的遥测数据发送到何处。
multilinemultiline配置日志消息的多行解析规则
headerheader配置日志头行解析规则
retry_on_failureretry_on_failure配置 receiver 在 pipeline 下游遇到错误时的重试行为。
debug_metricsdebug_metrics配置此组件用于监控其状态的指标。
ordering_criteriaordering_criteria配置处理日志文件的顺序。
ordering_criteria > sort_bysort_by配置 ordering criteria 中要排序的字段。

> 符号表示更深的嵌套层级。例如,ordering_criteria > sort_by 指的是在 ordering_criteria 块内定义的 sort_by 块。

output

必需

output 块配置一组组件,用于转发生成的遥测数据。

支持以下参数

名称类型描述默认值必需
logslist(otelcol.Consumer)发送日志的消费者列表。[]
metricslist(otelcol.Consumer)发送指标的消费者列表。[]
traceslist(otelcol.Consumer)发送 traces 的消费者列表。[]

您必须指定 output 块,但其所有参数都是可选的。默认情况下,遥测数据会被丢弃。请相应地配置 metricslogstraces 参数,以将遥测数据发送到其他组件。

debug_metrics

debug_metrics 块配置此组件用于监控其状态的指标。

支持以下参数

名称类型描述默认值必需
disable_high_cardinality_metricsboolean是否禁用某些高基数指标。true

disable_high_cardinality_metrics 是 Grafana Alloy 中相当于 OpenTelemetry Collector 中 telemetry.disableHighCardinalityMetrics 功能开关的功能。它会移除可能导致高基数指标的属性。例如,关于 HTTP 和 gRPC 连接的指标中带有 IP 地址和端口号的属性会被移除。

注意

如果配置了 disable_high_cardinality_metrics,它仅适用于 otelcol.exporter.*otelcol.receiver.* 组件。

header 块配置用于将日志头行解析为添加到每个日志条目的额外属性的逻辑。它只能在 start_at 设置为 beginning 时使用。支持以下参数

名称类型描述默认值必需
metadata_operatorslists(map(string)用于从头解析元数据的 Operator 列表。
patternstring匹配头行的正则表达式。

如果未设置 header 块,则不会将任何日志行视为头元数据。

metadata_operators 列表是 stanza Operator 列表,用于从头解析元数据。从嵌入的 Operator pipeline 创建的任何属性将应用于文件中的所有日志条目。

例如,您可以使用 regex_parser 来处理由 pattern 表达式标识的头行。以下示例展示了一个虚构的头行,以及将从中解析 environment 属性的 header 块。

text
HEADER_IDENTIFIER env="production"
...
alloy
otelcol.receiver.filelog "default" {
    ...
    header {
      pattern = '^HEADER_IDENTIFIER .*$'
      metadata_operators = [
        {
          type = "regex_parser"
          regex = 'env="(?P<environment>.+)"'
        }
      ]
    }
}

multiline

multiline 块配置用于拆分传入日志条目的逻辑。支持以下参数

名称类型描述默认值必需
line_end_patternstring匹配日志条目结尾的正则表达式。是*
line_start_patternstring匹配日志条目开头的正则表达式。是*
omit_patternbool从拆分的日志条目中省略开始/结束模式。false

multiline 块必须包含 line_start_patternline_end_pattern 之一。

如果未设置 multiline 块,日志条目将不会被拆分。

ordering_criteria

ordering_criteria 块配置发现的日志文件的处理顺序。支持以下参数

名称类型描述默认值必需
group_bystring用于预排序分组的 regex 属性中的命名捕获组。""
regexstring用于捕获日志文件元素以进行排序计算的正则表达式。""
top_nint使用文件排序时要跟踪的顶部日志文件数量。1

sort_by

sort_by 可重复块配置 ordering_criteria 块中解析的字段应用于排序发现的日志文件的方式。支持以下参数

名称类型描述默认值必需
sort_typestring要应用的排序类型。
ascendingbool是否按升序排序。true
layoutstring从命名 regex 捕获组中解析的时间戳布局。""
locationstring时间戳的位置。UTC
regex_keystring用于排序的 regex 属性中的命名捕获组。""

sort_type 必须是 numericlexicographictimestampmtime 中的一个。使用 numericlexicographictimestamp sort_type 时,必须在 regex_key 中提供 ordering_criteriaregex 属性定义的命名捕获组。使用 mtime sort_type 时,将使用文件的修改时间进行排序。

locationlayout 参数仅在 sort_typetimestamp 时适用。

location 参数指定一个时区标识符。可用位置取决于本地 IANA 时区数据库。请参考维基百科中的 tz database 时区列表获取非详尽列表。

retry_on_failure

retry_on_failure 块配置 receiver 在 pipeline 下游遇到错误时的重试行为。失败后会使用退避算法延迟重试。支持以下参数

名称类型描述默认值必需
enabledbool如果设置为 true 且发生错误,receiver 将暂停读取日志文件并重新发送当前批次的日志。false
initial_intervalduration第一次失败后重试等待的时间。1s
max_elapsed_timeduration数据被丢弃前消息的最长存活时间。5m
max_intervalduration应用退避逻辑后等待的最长时间。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 从日志中解析它。

alloy
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 可以接受来自以下组件的参数

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能正确建立连接。请参考链接的文档了解更多详情。