接口测试 Fluentd 日志收集配置

牛马搬砖君 · 2021年02月17日 · 2703 次阅读

建议阅读顺序

Spring Boot 项目日志平台对接使用
之后再阅读本章节

Fluentd 是什么

Fluentd 是一个开源的数据收集器,专为处理数据流设计,使用 JSON 作为数据格式。它采用了插件式的架构,具有高可扩展性高可用性,同时还实现了高可靠的信息转发。加入 Fluentd 来收集日志。加入后的 EFK 架构如图所示

在这个图中,上下两个框分别表示使用 Fluentd 前后的日志收集。在第二个框中,Consul 能够使用灵活的 key/value 仓库去存储动态配置。而 confd 能够使用从 consul 来的模版管理本地配置

Fluentd 的常用配置

一.td-agent 配置

/etc/td-agent/td-agent.conf

1.source:数据来源

每个 source 指令必须包含 @type 参数。@type 参数指定了何种输入插件将被使用。
Fluentd 的标准输入插件包括 http 和 forward。http 监听 HTTP 端口,并接受从 HTTP 来的日志消息。forward 让 fluentd 监听 TCP 端口,并接受 TCP 包。当然,两者可以同时开启(可以添加任意多需要的源)。

<source>
  @type forward
  port 24224
</source>
2.match:告诉 fluentd 该干什么!

match 用来指定动作,通过 tag 匹配 source,然后执行指定的命令来分发日志,最常见的用法就是将 source 收集的日志转存到数据库。

# 将标记为 myapp.access 的日志转存到文件
<match myapp.access>
  @type file
  path /var/log/fluent/access
</match>

myapp.access 就是 tag,tag 有好几种匹配模式:

:匹配任意一个 tag;
*
:匹配任意数量个 tag;
a b:匹配 a 或 b;
{X,Y,Z}:匹配 X, Y, Z 中的一个。

<match a.*>
<match **>
<match a.{b,c}>
<match a.* b.*>

fluentd 按照 match 出现的顺序依次匹配,一旦匹配成功就不会再往下匹配,所以如果你先写了一个 match **,然后后面的所有的 match 都会被忽略。

3.filter:事件处理管道

filter 和 match 的语法几乎完全一样,但是 filter 可以串联成 pipeline,对数据进行串行处理,最终再交给 match 输出。

<filter myapp.access>
  @type record_transformer
  <record>
    host_param "#{Socket.gethostname}"
  </record>
</filter>

收到事件 {“event”: “data”} 后,先扔到 filter: record_transformer 中,record_transformer 在事件中添加了"host_param" 字段并且继续向后传,{“event”:“data”,“host_param”:“webserver1”},事件最终到达 file 输出插件。

4.match 模板

下列 match 模板可以用于 和中的 tag:

  • 匹配单个 tag 部分。 例如:模板 a.* 匹配 a.b,但不能匹配 a 与 a.b.c ** 匹配 0 个或多个 tag 部分 例如:a.** 匹配 a, a.b 和 a.b.c {X,Y,Z} 匹配 X, Y, 或 Z, 这里 X, Y 和 Z 都是匹配模板 例如:模板 {a,b} 匹配 a 和 b,但不匹配 c 这种方法可以用于组合 * 和 ** 模板。例如: a.{b,c}.* 和 a.{b,c.} 当多个模板同时在单个 tag 中列出时(由一个或多个空格分隔),将匹配所列出的任意一个模板。例如: 模板 匹配 a 和 b 模板 <match a. b.*> 匹配 a, a.b, a.b.c (匹配到前一个模板) 和 b.d (匹配到后一个模板)
5.匹配顺序

Fluentd 尝试以模板在配置文件中出现的顺序进行匹配
myapp.access 永远都匹配不到。更宽松的匹配模板应定义在更严格的匹配模板之后

<match **>
  @type blackhole_plugin
</match>

<match myapp.access>
  @type file
  path /var/log/fluent/access
</match>

二.Fluentd 插件

https://www.fluentd.org/plugins

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册