Fluentd是用來處理其他系統(tǒng)產(chǎn)生的日志的,它本身也會產(chǎn)生一些運行時日志。我們一起來了解一下Fluentd本身的日志機制。
Fluentd包含兩個日志層:全局日志和插件級日志。每個層次的日志都可以進(jìn)行單獨配置。 日志級別 Fluentd的日志包含6個級別:fatal、error、warn、info、debug和trace。級別依次遞增,高級別的日志包含低級別的日志。默認(rèn)為info,所以默認(rèn)情況下,日志中包含info、warn、error、fatal這4個級別的日志。 全局日志 Fluentd內(nèi)核使用全局日志配置,若插件沒有單獨設(shè)置自己的日志配置項,插件也共用全局日志配置項??赏ㄟ^命令行或配置文件進(jìn)行設(shè)置。 命令行 -v、-vv用于增加日志級別,-q、-qq用于降低日志級別。 $ fluentd -v ... # debug level $ fluentd -vv ... # trace level
$ fluentd -q ... # warn level $ fluentd -qq ... # error leve 使用命令行可以在不改變配置文件的情況下調(diào)整日志級別,方便調(diào)試。- 也可以在配置文件中設(shè)置<system>的log_level來配置全局日志級別。
<system> # equal to -qq option log_level error </system>
- 可通過@log_level對每個插件單獨設(shè)置日志級別,這個級別將覆蓋全局日志級別。
<source> @type tail @log_level debug path /var/log/data.log ... </source> <source> @type http @log_level fatal </source> 上邊這個片段中,我們對兩個不同的輸入源分別設(shè)置了各自的日志級別。 - 如今天第一篇文章中所述,F(xiàn)luentd的日志支持text和json兩種格式,默認(rèn)使用text,可在<system>中進(jìn)行設(shè)定。
<system> <log> format json time_format %Y-%m-%d </log> </system> 2017-07-27 06:44:54 +0900 [info]: #0 fluentd worker is now running worker=0 {"time":"2017-07-27","level":"info","message":"fluentd worker is now running worker=0","worker_id":0} - Fluentd默認(rèn)將其日志輸出到stdout,可通過-o將日志輸出到文件中。
$ fluentd -o /path/to/log_file 若將日志寫入文件,默認(rèn)情況下Fluentd不會進(jìn)行日志輪轉(zhuǎn),即會向指定的文件中不斷寫入日志,這可能會導(dǎo)致日志文件過大??赏ㄟ^命令行參數(shù)開啟日志輪轉(zhuǎn)功能。 - 這里AGE為整數(shù)或字符串,需要和下邊的rotate-size配合使用。整數(shù)表示輪轉(zhuǎn)文件個數(shù);字符串表示輪轉(zhuǎn)頻率,可為daily、weekly或monthly。
- BYTES為輪轉(zhuǎn)文件的大小,達(dá)到此字節(jié)數(shù)即開始寫入新的文件。當(dāng)rotate-age值為整數(shù)時,通過此配置項控制日志的輪轉(zhuǎn)。
$ fluentd -c fluent.conf --log-rotate-age 5 --log-rotate-size 104857600
- Fluentd使用fluent作為自身日志的tag,我們可以通過<label @FLUENT_LOG>來處理Fluentd自身的日志。
# Add hostname for identifying the server <label @FLUENT_LOG> <filter fluent.*> @type record_transformer <record> host "#{Socket.gethostname}" </record> </filter>
<match fluent.*> @type monitoring_plugin # parameters... </match> <label> 這樣做的一個用處是用來監(jiān)控Fluentd運行情況。
|