美文网首页
日志工具 - Fluentd 入门指南

日志工具 - Fluentd 入门指南

作者: Kassadar | 来源:发表于2020-06-16 11:35 被阅读0次

    日志工具 - Fluentd 入门指南

    快速开始

    安装 Fluentd

    执行 install-redhat-td-agent3.sh 将自动在您的机器上安装 td-agent。这个 shell 脚本在 /etc/yum.repos.d/td.repo 上注册了一个新的 rpm repository,然后安装 td-agent rpm 包。

    curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
    

    由于 out_elasticsearch 插件从 v3.0.1 开始就包含在 td-agent 的标准发行版中,所以td-agent 用户不需要手动安装。否则:

    /usr/sbin/fluent-gem install fluent-plugin-elasticsearch
    

    配置 Fluent

    cp /etc/td-agent/td-agent.conf /etc/td-agent/td-agent.conf.bak
    
    vi /etc/td-agent/td-agent.conf
    <source>
      @type tail
      path /deploy/log/tidb.log
      pos_file /deploy/log/tidb.log.pos
      tag tidb01
      format /^\[(?<logtime>[^\]]*)\] \[(?<level>[^ ]*)\] \[(?<source>[^ ]*)\] \[(?<messages>.*)\]$/ 
    </source>
    <match tidb01>
      @type elasticsearch
      host 127.0.0.1
      port 9200
      include_tag_key true
      tag_key svr
      index_name tidblog
    </matc
    

    解释

    <source>    # 源
      @type tail    # tail 输入插件允许 Fluentd 从文本文件的尾部读取事件。它的行为类似于 tail -F命令。
      path /deploy/log/tidb.log # 要读取的路径。可以指定多个路径,用','分隔。path /path/to/a/*,/path/to/b/c.log
      pos_file /deploy/log/tidb.log.pos # 强烈建议使用此参数。Fluentd 将记录它最后读入这个文件的位置。
      tag tidb01 # 事件的标记。一般用来标记日志来源。
      format /^\[(?<logtime>[^\]]*)\] \[(?<level>[^ ]*)\] \[(?<source>[^ ]*)\] \[(?<messages>.*)\]$/  # format 日志的规则,使用正则表达式,型如 (?<name>[regex])。编写规则推荐 https://fluentular.herokuapp.com/
    </source>
    <match tidb01>  # 规则 & 目标
      @type elasticsearch   # out_elasticsearch 输出插件将记录写入到Elasticsearch 中。默认情况下,它通过批量写操作创建记录。这意味着当您第一次使用插件导入记录时,不会立即创建记录。
      host 127.0.0.1
      port 9200
      include_tag_key true  # 这将在JSON记录中添加 Fluentd 标记
      tag_key svr   # 这将在JSON记录中添加Fluentd标记
      index_name tidblog  # Elasticsearch 中的 index_name
    </match>
    

    启动 Fluentd

    systemctl start td-agent.service
    

    Kibana 中的结果

    简介

    Fluentd 试图尽可能多地构造 JSON 数据
    Fluentd 有一个灵活的插件系统,允许社区扩展其功能,500+ community-contributed plugins
    Fluentd 是用 C 语言和 Ruby 结合编写的,只需要很少的系统资源,runs on 30-40MB of memory and can process 13,000 events/second/core
    Fluentd 支持基于内存和文件的缓冲,以防止节点间数据丢失
    Fluentd 还支持健壮的故障转移,并且可以设置为高可用性

    插件组成

    Fluentd 有 7 种类型的插件: Input, Parser, Filter, Output, Formatter, Storage and Buffer.

    • Input 输入插件扩展了 Fluentd 来从外部源检索和提取事件日志。一个输入插件通常创建一个线程套接字和一个监听套接字。还可以编写它来定期从数据源中提取数据。
    • Output 输出插件可以支持所有模式,但可能只支持其中一种模式。如果配置中没有 Buffer,Fluentd会自动选择合适的模式。如果用户为不支持 Buffer 的输出插件指定了部分,Fluentd 将停止配置错误。
    • Filter 过滤器插件允许 Fluentd 修改事件流。通过 grep 一个或多个字段的值来过滤事件;通过添加新字段来丰富事件;为隐私和遵从性删除或屏蔽某些字段。
    • Parser 有时候,用于输入插件的指令(例如:in_tail、in_syslog、in_tcp和in_udp)不能解析用户的自定义数据格式。处理这类情况。Fluentd 有一个可插入的系统,允许用户创建自己的解析器格式。
    • Formatter 有时候,输出插件的输出格式不能满足用户的需要。Fluentd 有一个名为 Formatter 的插件,允许用户扩展和重用定制的输出格式。
    • Buffer 缓冲区插件由输出插件使用。例如,out_s3 默认使用 buf_file 在传输到 S3 之前临时存储传入流。
    • Storage 有时候,Input、Output、 和 Filter 插件应该保存到内存、存储或其他键值存储中。Fluentd 有一个名为 Storage 的插件,允许插件内部状态提取到内存、存储或其他键值存储中,并重用存储的键值对值。

    大致处理流程 Log -> Input -> Parser -> Filter -> Formatter -> Buffer -> Ouput -> ElasticSearch

    相关文章

      网友评论

          本文标题:日志工具 - Fluentd 入门指南

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