日志工具 - 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
网友评论