fluentd-简介

一、Fluentd简介

  1. Fluentd是一个完全免费且完全开源的日志收集器
  2. Fluentd将日志视为JSON

 

二、Fluentd特性

  1. 使用JSON统一日志结构:使用JSON后,下游的数据处理起来相当的容易,因为JSON结构在保留了灵活的模式的同时,可以被无障碍的使用
  2. 可插拔的架构
  3. 最低的资源需求:Fluentd是用C和Ruby组合编写的,需求非常少的系统资源。普通的实例内存占用在30-40MB,可以处理13000个事件/每秒/每核心
  4. 高可靠性:Fluentd支持基于内存和基于文件的缓冲区来避免内部节点的数据丢失。Fluentd还支持容错和设置高可用

三、配置文件

  1. source(数据源):决定从哪里读取日志,关键字type指定启用插件后配置相关参数
    注意:每个source必须包含一个@type参数,用于指定要使用的输入插件;标准输入插件:http、forward
  2. filter(过滤器):根据规则过滤觉得哪些采集哪些丢弃,或者添加指定内容
    注意:过滤器是从上往下顺序执行的
  3. match(输出目的地):查找具有匹配标签的事件并对其进行处理,最常见的用法是将事件输出到其他系统
    标准输出插件:file、forward
  4. label(标签):默认情况下事件是按照从上到下的顺序进行处理的(配置复杂的情况下不便于理解),“标签”指令将过滤器和输出分组以进行内部路由
    1)在source部分指定label,因此时间都只会在对应的label部分进行过滤,而没有label的将不生效
    2)应该在紧密匹配模式之后定义较宽的匹配模式(若labe **在label myapp.access之前,则匹配过**后不会匹配具体的标签;若**在 myapp.access之后则两个都会生效
    3)如果存在两个完全相同的label,则第二个永远不会生效,如果想将日志发送到多个输出端可以使用out_copy插件

    4)永远不要讲filter放在match之后,否则filter将不会生效
  5. system(设置系统范围)
  6. @include:调用其他文件,可以将公共配置写入include所调用的文件,这样可以实现配置的复用
    1)Fluentd将按标签在配置文件中出现的顺序进行匹配

<source>
    @type http
    port 8888
    bind 0.0.0.0
   @label @STAGING </source>
<system>
  log_level info  #日志登记
  without_source
  suppress_repeated_stacktrace
  emit_error_log_interval  #错误日志间隔时间
  suppress_config_dump  #禁止配置转储
  process_name  #进程名
<filter test.cycle> @type grep <exclude> key action pattern ^login$ </exclude> </filter> <label @STAGING> <filter test.cycle> @type grep <exclude> key action pattern ^logout$ </ exclude> </filter> <match test.cycle> @type stdout </match> </label>

@include config.d/*.conf

注解:此处因为source有使用label @STAGING,因此此处只会调用logout部分,而login的filter会被忽略
@include调用config.d/目录下的配置文件(为了明确目录下配置文件的调用顺序,最佳使用方式是使用@include多次调用)

 

四、正则表达式使用

  • *:匹配一个任意字符:a.*匹配a.b;但不匹配a或a.b.c
  • **:匹配任意个任意字符:a.**匹配以a开头的所有字符
  • {X,Y,Z}:匹配其中任意一个,可以与*和**一起使用。如{a,b} a满足,b也满足

五、数据类型

  • string:字符串(不带引号,带单引号,带双引号)
  • integer:整数
  • float:浮点数
  • size:字节
    k匹配kilobytes.
    m匹配megabytes
    g匹配gigabytes
    t匹配terabytes
    不带单位将匹配未字节
  • time:持续时间:整数型:s/秒、m/分、h/小时、d/天,不带单位将默认为浮点型,默认单位为秒
  • array:JSON数组:key1,key2
  • hash:JSON对象:key1:value1,key2:value2

六、配置检查

  fluentd --dry-run -c fluent.conf

posted @ 2020-02-17 16:39  jayce9102  阅读(3079)  评论(0编辑  收藏  举报