日志工具 - Fluentd 入门指南

2020-06-16  本文已影响0人  Kassadar

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

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

上一篇下一篇

猜你喜欢

热点阅读