美文网首页
Logstash-读取文件

Logstash-读取文件

作者: yc紫日 | 来源:发表于2018-10-22 18:46 被阅读0次

    file区段

    Logstash 使用一个名叫 FileWatch 的 Ruby Gem 库来监听文件变化。
    这个库支持 glob 展开文件路径,而且会记录一个叫 .sincedb 的数据库文件来跟踪被监听的日志文件的当前读取位置。所以,不要担心 logstash 会漏过你的数据。

    .sincedb 文件中记录了每个被监听的文件的 inode, major number, minor number 和 pos。

    Setting Input type Required Effect
    close_older number or string_duration No 文件输入将关闭上次读取指定持续时间的任何文件(如果指定了数字,则为秒).默认1hour。 这具有不同的含义,具体取决于文件是tailed或read。 如果是tailed,并且传入数据中存在大的时间间隔,则可以关闭文件(允许打开其他文件),但是在检测到新数据时将排队等待重新打开。 如果read,文件将在从读取最后一个字节后的closed_older秒后关闭。 如果将插件升级到4.1.0+,读取不拖尾并且不切换到使用读取模式,则保留此设置以实现向后兼容性。
    delimiter string No 设置新行分隔符,默认为“\ n”。 请注意,在读取压缩文件时,不使用此设置,而是使用标准的Windows或Unix行结尾。
    discover_interval number No 我们多长时间在路径选项中展开文件名模式以发现要观看的新文件。 该值是stat_interval的倍数,例如 如果stat_interval是“500 ms”,则可以每15 X 500毫秒 - 7.5秒发现新文件文件。
    exclude array No 排除(与文件名匹配,而不是完整路径)。 文件名模式在这里也是有效的。path => "/var/log/" \n exclude => ".gz"
    file_chunk_count number No 与file_chunk_size结合使用时,此选项设置在移动到下一个活动文件之前从每个文件中读取多少块(带或条带)。 例如,file_chunk_count为32,file_chunk_size为32KB,将处理每个活动文件的下一个1MB。 由于默认值非常大,因此在移动到下一个活动文件之前,文件会被有效地读取到EOF。
    file_chunk_size number No 以块或块的形式从磁盘读取文件内容,并从块中提取行。 请参阅file_chunk_count以查看默认情况下更改此设置的原因和时间。
    file_completed_action string, one of ["delete", "log", "log_and_delete"] No 在读取模式下,完成文件时应执行什么操作。 如果指定了删除,则将删除该文件。 如果指定了log,则将文件的完整路径记录到file_completed_log_path设置中指定的文件中。 如果指定了log_and_delete,则会执行上述两个操作。
    file_completed_log_path string No 应该将完整读取的文件路径附加到哪个文件。 当file_completed_action为log或log_and_delete时,仅指定文件的此路径。 重要提示:此文件仅附加到 - 它可能会变得非常大。 您负责文件轮换。
    file_sort_by string, one of ["last_modified", "path"] No 应该使用“监视”文件的哪个属性对其进行排序。 可以按修改日期或完整路径字母对文件进行排序。 以前,已发现并因此“监视”的文件的处理顺序取决于操作系统。
    file_sort_direction string, one of ["asc", "desc"] No 在排序“已观看”文件时,在升序和降序之间进行选择。 如果最早的数据首先是重要的,那么last_modified + asc的默认值是好的。 如果最新的数据首先更重要,那么选择last_modified + desc。 如果对文件完整路径使用特殊命名约定,那么path + asc可能有助于控制文件处理的顺序。
    ignore_older number or string_duration No 当文件输入发现在指定持续时间之前最后修改的文件(如果指定了数字,则为秒),将忽略该文件。 在发现之后,如果修改了被忽略的文件,则不再忽略它并读取任何新数据。 默认情况下,禁用此选项。 注意这个单位是几秒钟。
    max_open_files number No 此输入在任何时候消耗的最大file_handles数是多少。 如果需要处理的文件多于此数字,请使用close_older关闭某些文件。 这不应设置为OS可以执行的最大值,因为其他LS插件和OS进程需要文件句柄。 内部设置默认值4095。
    mode string, one of ["tail", "read"] No 您希望文件输入在什么模式下运行。关闭几个文件或读取许多内容完整的文件。 读取模式现在支持gzip文件处理。 如果指定“read”,则忽略以下其他设置:start_position(文件始终从头开始读取)close_older(达到EOF时文件自动关闭)如果指定“read”,则注意以下设置:ignore_older(不处理旧文件)file_completed_action(处理文件时应采取的操作)file_completed_log_path(应该将完成的文件路径记录到哪个文件)
    path array Yes 要用作输入的文件的路径。 您可以在此处使用文件名模式,例如/var/log/.log。 如果使用/var/log//.log这样的模式,将对所有* .log文件进行/ var / log的递归搜索。 路径必须是绝对的,不能是相对的。
    sincedb_clean_after number or string_duration No sincedb记录现在有一个与之关联的最后一个活动时间戳。 如果在过去N天内未在跟踪文件中检测到任何更改,则其sincedb跟踪记录将过期,并且不会保留。 此选项有助于防止inode回收问题。 Filebeat有一个关于inode回收的常见问题.
    sincedb_path string No 将写入磁盘的sincedb数据库文件的路径(跟踪受监视日志文件的当前位置)。 默认情况下会将sincedb文件写入<path.data> / plugins / inputs / file注意:它必须是文件路径而不是目录路径
    sincedb_write_interval number or string_duration No 使用受监视日志文件的当前位置编写自动数据库的频率(以秒为单位)。
    start_position string, one of ["beginning", "end"] No 选择Logstash最初开始读取文件的位置:开头或结尾。 默认行为将文件视为实时流,因此从最后开始。 如果您要导入旧数据,请将其设置为开头。
    stat_interval number or string_duration No 我们统计文件的频率(以秒为单位),以查看它们是否已被修改。 增加此间隔将减少我们进行的系统调用次数,但会增加检测新日志行的时间。
    # file区段配置示例
    input {
      file {
        path => ["/var/log/*.log", "/var/log/message"]
        type => "system"
        start_position => "beginning"
      }
    }
    

    附:file区段常用配置项及使用file区段的注意事项

    编码插件codec

    Codec 是 logstash 从 1.3.0 版开始新引入的概念(Codec 来自 Coder/decoder 两个单词的首字母缩写)。
    有了它,我们可以在输入期处理不同类型的数据。

    常见codec插件

    json


    nmap


    rubydebug


    multiline


    multiline codec插件折叠多行消息并将它们合并为一个事件。

    重要
    如果您使用的是支持多个主机的Logstash输入插件,例如beats输入插件,则不应使用多行编解码器来处理多行事件。 这样做可能会导致流混合和损坏的事件数据。 在这种情况下,您需要在将事件数据发送到Logstash之前处理多行事件。

    Setting Input type Required Effect
    auto_flush_interval number No 当看到匹配的新行或者在这么多秒内没有附加新数据时,多行的累积将转换为事件。 没有默认值。 如果未设置,则不执行auto_flush。 单位:秒
    charset string,可选范围见charset No 此输入中使用的字符编码。 例子包括UTF-8和cp1252
    max_bytes bytes No 如果未正确定义事件边界,则事件的累积可使logstash退出并出现内存不足错误。 此设置确保在达到多个字节后刷新多行事件,它与max_lines组合使用。
    max_lines number No 如果未正确定义事件边界,则事件的累积可使logstash退出并出现内存不足错误。 此设置确保在到达多行后刷新多行事件,它与max_bytes组合使用。
    multiline_tag string No 使用给定标记标记多行事件。 此标记仅添加到实际上包含多行的事件中。
    negate boolean No 否定正则表达式模式(如果不匹配)。默认false
    pattern string Yes 正则表达式
    patterns_dir array No Logstash默认带有一堆模式,因此除非您要添加其他模式,否则您不一定需要自己定义。
    what string, one of ["previous", "next"] Yes 如果模式匹配,事件是否属于下一个或上一个事件?

    Logstash——multiline 插件,匹配多行日志

    过滤插件filter

    扩展了进入过滤器的原始数据,进行复杂的逻辑处理,甚至可以无中生有的添加新的 logstash 事件到后续的流程中去!

    所有filter插件都支持的几个配置项

    Setting Input type Required Effect
    add_field hash No 向事件添加任意字段。 字段名称可以是动态的,并使用%{field}包含事件的一部分。
    add_tag array No 向事件添加任意标记。 标签可以是动态的,并使用%{field}语法包含事件的一部分。
    enable_metric boolean No 禁用或启用此特定插件实例的度量标准记录,默认情况下,我们会记录所有可用的度量标准,但您可以禁用特定插件的度量标准收集。
    id string No 为插件配置添加唯一ID。例如,如果您有2个date过滤器。 在这种情况下添加命名ID将有助于在使用监视API时监视Logstash。
    periodic_flush boolean No 定期调用过滤器刷新方法。 可选的。
    remove_field array No 从事件中删除任意字段。字段名称可以是动态的,并使用%{field}包含事件的一部分。
    remove_tag array No 从事件中删除任意标记。 标签可以是动态的,并使用%{field}语法包含事件的一部分。

    常见filter插件

    date


    日期筛选器用于解析字段中的日期,然后使用该日期或时间戳作为事件的logstash时间戳。

    Setting Input type Required Effect
    locale string No 区域设置主要用于解析月份名称(带MMM的模式)和工作日名称(带有EEE的模式)。
    match array No [ field, formats... ]
    tag_on_failure array No 没有成功匹配时,将值附加到标签字段
    target string No 将匹配的时间戳存储到给定的目标字段中。 如果未提供,则默认更新事件的@timestamp字段。
    timezone string No 时区ID。Joda.org available time zones page

    Logstash时区、时间转换,message重组

    grok


    • 使用正则表达式将非结构化事件数据解析为字段。
    • 解析任意文本并构造它。
    • 可以将非结构化日志数据解析为结构化和可查询的内容。

    提示:logstash6.4.2的grok的正则文件位置:${logstach_home}/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns

    mutate


    mutate过滤器允许您对字段执行常规突变。 您可以重命名,删除,替换和修改事件中的字段。
    logstash mutate split日志切分

    dissect


    使用分隔符将非结构化事件数据提取到字段中

    geoip


    添加有关IP地址的地理信息

    json


    解析json事件

    kv


    此过滤器有助于自动解析foo = bar种类的消息(或特定事件字段)。
    举例

    # string
    ip=1.2.3.4 error=REFUSED
    # filter
    filter {
      kv { }
    }
    # result
    ip: 1.2.3.4
    error: REFUSED
    
    # string
    pin=12345~0&d=123&e=foo@bar.com&oq=bobo&ss=12345
    # filter
    filter {
      kv {
        field_split => "&?"
      }
    }
    # result
    pin: 12345~0
    d: 123
    e: foo@bar.com
    oq: bobo
    ss: 12345
    

    相关文章

      网友评论

          本文标题:Logstash-读取文件

          本文链接:https://www.haomeiwen.com/subject/qwfizftx.html