📙
iLogtail用户手册
1.8.4
1.8.4
  • 关于
    • 什么是iLogtail
    • 发展历史
    • 产品优势
    • 开源协议
    • 社区版和企业版的对比说明
  • 安装
    • 快速开始
    • Docker使用
    • Kubernetes使用
    • 守护进程
    • 发布记录
    • 支持的操作系统
    • 源代码
      • 下载
      • 编译
      • Docker镜像
      • 编译依赖
    • 镜像站
  • 概念
    • 关键概念
    • 数据流水线
  • 配置
    • 采集配置
    • 系统参数
    • 日志
  • 数据流水线
    • 概览
    • 插件版本管理
    • 输入
      • 文本日志
      • 脚本执行数据
      • 容器标准输出
      • 文本日志(debug)
      • MetricInput示例插件
      • 主机Meta数据
      • Mock数据-Metric
      • eBPF网络调用数据
      • 主机监控数据
      • MySQL Binlog
      • GO Profile
      • GPU数据
      • HTTP数据
      • ServiceInput示例插件
      • Journal数据
      • Kafka
      • Mock数据-Service
      • SqlServer 查询数据
      • OTLP数据
      • PostgreSQL 查询数据
      • Syslog数据
    • 处理
      • 添加字段
      • 添加云资产信息
      • 原始数据
      • 数据脱敏
      • 丢弃字段
      • 字段加密
      • 条件字段处理
      • 日志过滤
      • Go时间格式解析
      • Grok
      • Json
      • 日志转SLS Metric
      • 正则
      • 重命名字段
      • 分隔符
      • 键值对
      • 多行切分
      • 字符串替换
    • 聚合
      • 基础
      • 上下文
      • 按Key分组
      • 按GroupMetadata分组
    • 输出
      • Kafka(Deprecated)
      • kafkaV2
      • ClickHouse
      • ElasticSearch
      • SLS
      • 标准输出/文件
      • OTLP日志
      • Pulsar
      • HTTP
      • Loki
    • 加速
      • 分隔符加速
      • Json加速
      • 正则加速
  • 工作原理
    • 文件发现
    • 插件系统
  • 可观测性
    • 日志
  • 开发者指南
    • 开发环境
    • 日志协议
      • 协议转换
      • 增加新的日志协议
      • 协议
        • sls协议
        • 单条协议
    • 代码风格
    • 数据模型
    • 插件开发
      • 开源插件开发引导
      • Checkpoint接口
      • Logger接口
      • 如何开发Input插件
      • 如何开发Processor插件
      • 如何开发Aggregator插件
      • 如何开发Flusher插件
      • 如何生成插件文档
      • 插件文档规范
      • 纯插件模式启动
    • 测试
      • 单元测试
      • E2E测试
    • 代码检查
      • 检查代码规范
      • 检查文件许可证
      • 检查依赖包许可证
  • 贡献指南
    • 贡献指南
    • 开发者
    • 成就
  • 性能测试
    • 容器场景iLogtail与Filebeat性能对比测试
  • 管控工具
    • 使用介绍
    • 通信协议
    • 开发指南
  • Awesome iLogtail
    • 走近iLogtail社区版
    • iLogtail社区版使用入门
    • iLogtail社区版开发者指南
    • iLogtail社区版使用案例
Powered by GitBook
On this page
  • 简介
  • 版本
  • 配置参数
  • 基础参数
  • 高级参数
  • 样例
  • 样例1:iLogtail采集主机文件
  • 样例2:iLogtail以Daemonset的方式采集K8s容器文件
  1. 数据流水线
  2. 输入

文本日志

Previous输入Next脚本执行数据

Last updated 1 year ago

简介

file_log input插件可以实现从文本文件中采集日志。采集的日志内容将会保存在content字段中,后续对该字段进行处理,以实现日志格式的解析。此外,通过__tag__:__path__字段也可以查看日志的采集路径。

版本

配置参数

基础参数

参数
类型
是否必选
说明

Type

String

是

插件类型,指定为file_log。

LogPath

String

是

采集文本日志所在的目录,支持完整目录和通配符两种模式。

日志文件查找模式为多层目录匹配,即指定目录(包含所有层级的目录)下所有符合条件的文件都会被查找到。

FilePattern

String

是

采集文本日志的文件名,支持完整文件名和通配符两种模式。

MaxDepth

Integer

否

日志目录被监控的最大深度,范围:0~1000。如果未添加该参数,则默认使用0,代表只监控本层目录。

FileEncoding

String

否

日志文件编码格式,取值为utf8、gbk。 默认值为utf8。

EnableLogPositionMeta

Boolean

否

是否在日志中添加该日志所属原始文件的元数据信息,即新增__tag__:__inode__字段和__file_offset__字段,默认值为false。

DirBlackList

Array

否

目录(绝对路径)黑名单。支持使用通配符星号(*)匹配多个目录。

FilepathBlackList

Array

否

文件路径(绝对路径)黑名单。支持使用通配符星号(*)匹配多个文件。

ContainerFile

Boolean

是

iLogtail与待采集日志是否处于不同环境中。若待采集的日志和iLogtail在不同的容器中,请将参数值置为true,其余情况请置为false。

ContainerInfo

Map<String, Object>

否

容器相关参数,仅当ContainerFile参数为true时有效:

  • 若您的容器部署于K8s环境中,则可配置表1和表2所示参数来选择待采集容器;

  • 其它情况下,可配置表2所示参数来选择待采集容器。

除此以外,您还可以使用表3所示参数对日志标签进行富化。

ReaderFlushTimeout

Boolean

否

发送超时时间(秒),超时会强制读取剩余日志。默认为5秒。

表1:K8s容器发现相关参数

参数
类型
是否必选
说明

K8sContainerRegex

String

否

对于部署于K8s环境的容器,指定待采集容器的名称条件,支持正则匹配。如果未添加该参数,则默认为空字符串,表示采集所有容器。

K8sNamespaceRegex

String

否

对于部署于K8s环境的容器,指定待采集容器所在Pod所属的命名空间条件,支持正则匹配。如果未添加该参数,则默认为空字符串,表示采集所有容器。

K8sPodRegex

String

否

对于部署于K8s环境的容器,指定待采集容器所在Pod的名称条件,支持正则匹配。如果未添加该参数,则默认为空字符串,表示采集所有容器。

IncludeK8sLabel

Map<String, String>

否

对于部署于K8s环境的容器,指定待采集容器所在Pod的标签条件,多个条件之间为“或”的关系,即Pod标签满足任一条件即可匹配并被采集:

  • 如果Map中的Value为空,则Pod标签中包含以Key为键的Pod都会被匹配;

  • 如果Map中的Value不为空,则

    • 若Value以^开头并且以$结尾,则当Pod标签中存在以Key为标签名且对应标签值能正则匹配Value的情况时,相应的Pod会被匹配;

    • 其他情况下,当Pod标签中存在以Key为标签名且以Value为标签值的情况时,相应的Pod会被匹配。

    如果未添加该参数,则默认为空,表示采集所有容器。

ExcludeK8sLabel

Map<String, String>

否

对于部署于K8s环境的容器,指定需要排除采集容器所在Pod的标签条件,多个条件之间为“或”的关系,即Pod标签满足任一条件即可匹配并被排除采集:

  • 如果Map中的Value为空,则Pod标签中包含以Key为键的Pod都会被匹配;

  • 如果Map中的Value不为空,则

    • 若Value以^开头并且以$结尾,则当Pod标签中存在以Key为标签名且对应标签值能正则匹配Value的情况时,相应的Pod会被匹配;

    • 其他情况下,当Pod标签中存在以Key为标签名且以Value为标签值的情况时,相应的Pod会被匹配。

    如果未添加该参数,则默认为空,表示采集所有容器。

表2:普通容器发现相关参数

参数
类型
是否必选
说明

IncludeLabel

Map<String, String>

否

指定待采集容器的标签条件,多个条件之间为“或”的关系,即容器标签满足任一条件即可匹配并被采集:

  • 如果Map中的Value为空,则容器标签中包含以Key为键的容器都会被匹配;

  • 如果Map中的Value不为空,则

    • 若Value以^开头并且以$结尾,则当容器标签中存在以Key为标签名且对应标签值能正则匹配Value的情况时,相应的容器会被匹配;

    • 其他情况下,当容器标签中存在以Key为标签名且以Value为标签值的情况时,相应的容器会被匹配。

    如果未添加该参数,则默认为空,表示采集所有容器。

ExcludeLabel

Map<String, String>

否

指定需要排除采集容器的标签条件,多个条件之间为“或”的关系,即容器标签满足任一条件即可匹配并被排除采集:

  • 如果Map中的Value为空,则容器标签中包含以Key为键的容器都会被匹配;

  • 如果Map中的Value不为空,则

    • 若Value以^开头并且以$结尾,则当容器标签中存在以Key为标签名且对应标签值能正则匹配Value的情况时,相应的容器会被匹配;

    • 其他情况下,当容器标签中存在以Key为标签名且以Value为标签值的情况时,相应的容器会被匹配。

    如果未添加该参数,则默认为空,表示采集所有容器。

IncludeEnv

Map<String, String>

否

指定待采集容器的环境变量条件,多个条件之间为“或”的关系,即容器环境变量满足任一条件即可匹配并被采集:

  • 如果Map中的Value为空,则容器环境变量中包含以Key为键的容器都会被匹配;

  • 如果Map中的Value不为空,则

    • 若Value以^开头并且以$结尾,则当容器环境变量中存在以Key为环境变量名且对应环境变量值能正则匹配Value的情况时,相应的容器会被匹配;

    • 其他情况下,当容器环境变量中存在以Key为环境变量名且以Value为环境变量值的情况时,相应的容器会被匹配。

    如果未添加该参数,则默认为空,表示采集所有容器。

ExcludeEnv

Map<String, String>

否

指定需要排除采集容器的环境变量条件,多个条件之间为“或”的关系,即容器环境变量满足任一条件即可匹配并被排除采集:

  • 如果Map中的Value为空,则容器环境变量中包含以Key为键的容器都会被匹配;

  • 如果Map中的Value不为空,则

    • 若Value以^开头并且以$结尾,则当容器环境变量中存在以Key为环境变量名且对应环境变量值能正则匹配Value的情况时,相应的容器会被匹配;

    • 其他情况下,当容器环境变量中存在以Key为环境变量名且以Value为环境变量值的情况时,相应的容器会被匹配。

    如果未添加该参数,则默认为空,表示采集所有容器。

表3:日志标签富化相关参数

参数
类型
是否必选
说明

ExternalK8sLabelTag

Map<String, String>

否

对于部署于K8s环境的容器,需要在日志中额外添加的与Pod标签相关的tag。如果未添加该参数,则默认为空,表示不添加额外tag。

例如:在Map中添加app: k8s_label_app,则若Pod中包含app=serviceA的标签时,会将该信息iLogtail添加到日志中,即添加字段__tag__:k8s_label_app: serviceA;若不包含app标签,则会添加空字段__tag__:k8s_label_app:

ExternalEnvTag

Map<String, String>

否

需要在日志中额外添加的与容器环境变量相关的tag。如果未添加该参数,则默认为空,表示不添加额外tag。

例如:在Map中添加VERSION: env_version,则当容器中包含环境变量VERSION=v1.0.0时,会将该信息以tag形式添加到日志中,即添加字段__tag__:env_version: v1.0.0;若不包含VERSION环境变量,则会添加空字段__tag__:env_version:

高级参数

对于所有的日志采集场景,您还可以额外配置如下所示的高级参数:

参数
类型
是否必选
说明

TopicFormat

String

否

Topic生成方式。可选值如下: - none:不生成日志主题。 - 文件路径正则表达式:将日志文件路径的某一部分作为日志主题。 - customized://自定义主题名:使用静态自定义主题名。 如果未添加该参数,则默认使用none,表示不生成日志主题。

Preserve

Boolean

否

如果一个日志文件在30分钟内没有任何更新,是否继续监 控该文件。如果未添加该参数,则默认使用true,表示始终监控所选文件。

PreserveDepth

Integer

否

最大超时目录深度,仅当Preserve参数值为false时有效。如果未添加该参数,则默认使用1。

ForceMultiConfig

Boolean

否

是否允许该Logtail配置采集其他Logtail配置已匹配的文件。如果未添加该参数,则默认使用false,表示不允许。

TailSizeKB

Integer

否

新文件首次采集的大小,单位为KB。通过首次采集大小,可以确认首次采集的位置,即: - 首次采集时,如果文件小于该值,则从文件内容起始位置开始采集。 - 首次采集时,如果文件大于该值,则从距离文件末尾该值的位置开始采集。如果未添加该参数,则默认使用1024。

DelayAlarmBytes

Integer

否

当文件采集位置与当前日志产生位置之间的内容大小超过该值时,产生告警,单位为字节。 如果未添加该参数,则默认使用209715200,即200MB。

DelaySkipBytes

Integer

否

当文件采集位置与当前日志产生位置之间的内容大小超过该值时,直接丢弃落后的数据,单位为字节。如果未添加该参数,则默认使用0,表示不丢弃任何数据。

样例

样例1:iLogtail采集主机文件

采集/home/test-log/路径下的所有文件名匹配*.log规则的文件。

  • 输入

echo '{"key1": 123456, "key2": "abcd"}' >> /home/test-log/json.log

  • 采集配置

enable: true
inputs:
  - Type: file_log
    LogPath: /home/test-log/
    FilePattern: "*.log"
flushers:
  - Type: flusher_stdout
    OnlyStdout: true
  • 输出

{
    "__tag__:__path__": "/home/test-log/json.log",
    "content": "{\"key1\": 123456, \"key2\": \"abcd\"}",
    "__time__": "1657354763"
}

样例2:iLogtail以Daemonset的方式采集K8s容器文件

采集K8s命名空间default中以deploy为Pod名前缀、Pod标签包含version: 1.0且容器环境变量不为ID=123的所有容器中,/home/test-log/路径下的所有文件名匹配*.log规则的文件。

  • 输入

echo '{"key1": 123456, "key2": "abcd"}' >> /home/test-log/json.log

  • 采集配置

enable: true
inputs:
  - Type: file_log
    LogPath: /home/test-log/
    FilePattern: "*.log"
    ContainerInfo:
      K8sNamespaceRegex: default
      K8sPodRegex: ^(deploy.*)$
      IncludeK8sLabel:
        version: v1.0
      ExcludeEnv:
        ID: 123
flushers:
  - Type: flusher_stdout
    OnlyStdout: true
Stable