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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM