fluentd安裝和配置,收集docker日志


安裝fluentd

參考文檔:

官方文檔    https://docs.fluentd.org/v0.12/categories/installation

fluentd配置 https://www.ixdba.net/archives/2018/01/1116.htm

 

 

curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh

查看已安裝fluentd版本

/opt/td-agent/embedded/bin/gem list|grep fluentd

fluentd (1.2.4)建議1.2.4版本以上,因為之前的版本日志切割的時候會有問題

(https://github.com/fluent/fluentd/pull/2054)

更新版本

/opt/td-agent/embedded/bin/gem update fluentd

卸載之前的版本

/opt/td-agent/embedded/bin/gem uninstall fluentd --version=1.2.2

 

systemctl start td-agent  fluentd啟動

systemctl enable td-agent  開機自啟動

 

 

安裝Fluentd 必要插件

# 從 rpm 安裝的話, # 比如要使用下例的 mongo,需要安裝 # $ sudo td-agent-gem install fluent-plugin-mongo $ sudo td-agent-gem 

# 從 gem 安裝的話 $ sudo gem install 

安裝完成后可以用以下命令測試是否成功,

curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test

td-agent的日志默認路徑是:

/var/log/td-agent/td-agent.log

 

不過安裝的環境可能是沒網的環境,可以直接去gem官網找安裝包,然后gem install 安裝,以下插件是flutend成功將消息推送到elasticsearch的關鍵

(1)安裝fluent-plugin-elasticsearch

/usr/sbin/td-agent-gem install fluent-plugin-elasticsearch

(2)安裝fluentd type 插件

/usr/sbin/td-agent-gem install fluent-plugin-typecast

(2)安裝secure-forward 插件(非必須但常用)

/usr/sbin/td-agent-gem install fluent-plugin-secure-forward

 

插件安裝完成后,就可以修改td-agent的配置文件,將你所要收集的日志推送到

 

td-agent的配置文件路徑默認為:

/etc/td-agent/td-agent.conf ,修改配置文件前將配置文件備份是個好習慣

cp /etc/td-agent/td-agent.conf  /etc/td-agent/td-agent.conf-ori

 

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

<source>

  @type  forward

  @id    input1

  @label @mainstream

  port  24224

</source>

 

<filter **>

  @type stdout

</filter>

 

 

<label @mainstream>

  <match alloc-order>   ← 指定標簽

    @type file         ← 指定out_file插件

    @id   output_auth-server

    path         /data/alloc-order/docker.*.log     ← 指定輸出文件

    append       true

    message_key log

    format single_value

    time_slice_format %Y%m%d           ← 文件添加日期信

    time_slice_wait   10m ← 文件添加日期信息

  </match>

 

  <match **>

    @type file

    @id   output1

    path         /data/data.*.log

    #symlink_path /data/data.log

    append       true

    time_slice_format %Y%m%d

    time_slice_wait   10m

    time_format       %Y%m%dT%H%M%S%z

    #format single_value

    #message_key log

  </match>

</label>

 

1、source:確定輸入源

match: 確定輸出目的地

filter:確定 event 處理流

label:將內部路由的輸出和過濾器分組

2、Fluentd 的標准輸入插件包含 http(監聽 9880) 和 forward 模式(監聽 24224),分別用來接收 HTTP 請求和 TCP 請求。

http:使 fluentd 轉變為一個 httpd 端點,以接受進入的 http 報文。

forward:使 fluentd 轉變為一個 TCP 端點,以接受 TCP 報文。

3、match 指令查找匹配 “tags” 的事件,並處理它們。match 命令的最常見用法是將事件輸出到其他系統(因此,與 match 命令對應的插件稱為 “輸出插件”)。每個match指令必須包括一個匹配模式和type參數。match模式是用來過濾事件。只有事件與tag匹配,這個模式將被發送到輸出目的地。type參數指定輸出插件使用。Fluentd 嘗試按照它們在配置文件中出現的順序,從上到下來進行 "tags" 匹配 

append:默認值 false,即刷新日志到不同的文件;若為 true 則輸出到同一文件,直到觸發 time_slice_format

當滿足 time_slice_format 條件時,將創建該文件。 要更改輸出頻率,請修改 time_slice_format 值。%Y%m%d  每天切割一次收集的日志

time_slice_wait   事件發生時間和fluentd接收事件信息時間有時會發生時差,因此會出現輸出文件日期和實際內容不相符的情況。例如23:55發生的事件信息的接收事件是0:01,這時用日期切換輸出文件可能會導致該事件信息的丟失。這時可指定 time_slice_wait 參數,該參數是out_file插件根據日期分割輸出文件之后,等待多長時間之后向新文件輸出信息,在這里10m是10分鍾。

message_key log和format single_value將json格式中log字段提取出來

參考文檔:http://www.imekaku.com/2016/09/18/fluentd-remove-time-tag-to-only-value/

Fluentd提取發送日志中的value-SingleValue – Imekaku-Blog 

 


docker run -d --log-driver fluentd --log-opt fluentd-address=localhost:24224 --log-opt tag="alloc-order" --log-opt fluentd-async-connect

 --log-driver: 配置log驅動

--log-opt: 配置log相關的參數

fluentd-address: fluentd服務地址fluentd-async-connect:fluentd-docker異步設置,避免fluentd掛掉之后導致Docker容器也掛了

 

 

 

 




免責聲明!

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



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