日志工具 - Fluentd 入门指南

日志工具 - 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

  @type tail
  path /deploy/log/tidb.log
  pos_file /deploy/log/tidb.log.pos
  tag tidb01
  format /^\[(?[^\]]*)\] \[(?[^ ]*)\] \[(?[^ ]*)\] \[(?.*)\]$/ 


  @type elasticsearch
  host 127.0.0.1
  port 9200
  include_tag_key true
  tag_key svr
  index_name tidblog

解释

    # 源
  @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 /^\[(?[^\]]*)\] \[(?[^ ]*)\] \[(?[^ ]*)\] \[(?.*)\]$/  # format 日志的规则,使用正则表达式,型如 (?[regex])。编写规则推荐 https://fluentular.herokuapp.com/

  # 规则 & 目标
  @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

启动 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 入门指南)