|
Fluentd是用來處理其他系統(tǒng)產生的日志的,它本身也會產生一些運行時日志。我們一起來了解一下Fluentd本身的日志機制。
Fluentd包含兩個日志層:全局日志和插件級日志。每個層次的日志都可以進行單獨配置。 日志級別 Fluentd的日志包含6個級別:fatal、error、warn、info、debug和trace。級別依次遞增,高級別的日志包含低級別的日志。默認為info,所以默認情況下,日志中包含info、warn、error、fatal這4個級別的日志。 全局日志 Fluentd內核使用全局日志配置,若插件沒有單獨設置自己的日志配置項,插件也共用全局日志配置項。可通過命令行或配置文件進行設置。 命令行 -v、-vv用于增加日志級別,-q、-qq用于降低日志級別。 $ fluentd -v ... # debug level$ fluentd -vv ... # trace level
$ fluentd -q ... # warn level$ fluentd -qq ... # error leve 使用命令行可以在不改變配置文件的情況下調整日志級別,方便調試。- 也可以在配置文件中設置<system>的log_level來配置全局日志級別。
<system> # equal to -qq option log_level error</system>
- 可通過@log_level對每個插件單獨設置日志級別,這個級別將覆蓋全局日志級別。
<source> @type tail @log_level debug path /var/log/data.log ...</source><source> @type http @log_level fatal</source>上邊這個片段中,我們對兩個不同的輸入源分別設置了各自的日志級別。 - 如今天第一篇文章中所述,F(xiàn)luentd的日志支持text和json兩種格式,默認使用text,可在<system>中進行設定。
<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默認將其日志輸出到stdout,可通過-o將日志輸出到文件中。
$ fluentd -o /path/to/log_file若將日志寫入文件,默認情況下Fluentd不會進行日志輪轉,即會向指定的文件中不斷寫入日志,這可能會導致日志文件過大??赏ㄟ^命令行參數開啟日志輪轉功能。 - 這里AGE為整數或字符串,需要和下邊的rotate-size配合使用。字符串表示輪轉頻率,可為daily、weekly或monthly。
- BYTES為輪轉文件的大小,達到此字節(jié)數即開始寫入新的文件。當rotate-age值為整數時,通過此配置項控制日志的輪轉。
$ 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運行情況。
|