NXLog中文文檔(3):配置


NXLog使用Apache風格的配置文件,啟動的時候它會去默認的位置加載這份配置文件,也可以使用-c參數指定配置文件的路徑。配置文件由塊和指令組成,塊是包含多個指令的XML文件。指令是不區分大小寫的,但是指令里面的參數是區分大小寫的,如果里面的值太長的話,可以用 \ 來進行換行

文件引用

使用include指令可以引用其他的配置文件,SpoolDir指令會在配置文件讀取完后才生效

 

例1:引用指定配置文件

include modules/module1.conf

 

例2:使用通配符引用配置文件

include /etc/nxlog.d/*.conf

 

使用宏

define指令可以定義宏變量,在一個值在多個地方都用到的時候,這個指令就非常有用

 

例3:使用宏

define BASEDIR /var/log
define IGNORE_DEBUG if $raw_event =~ /debug/ drop();

<Input messages>
    Module      im_file
    File        '%BASEDIR%/messages'
</Input>

<Input proftpd>
    Module      im_file
    File        '%BASEDIR%/proftpd.log'
    Exec        %IGNORE_DEBUG%
</Input>

 

例4:在宏中使用多條語句

define ACTION { log_warning("dropping message"); drop(); }

 

全局指令

ModuleDir 模塊目錄,默認是nxlog二進制文件所在目錄的module目錄
PidFile pid文件存放位置,對Windows和NXLog-Processor無效
LogFile Nxlog日志文件存放位置
LogLevel 日志級別,以下為可選項CRITICAL, ERROR, WARNING, INFO, DEBUG
SuppressRepeatingLogs 有一些極端情況下,一旦配置出錯會由於重復的日志把磁盤一下就寫滿了,這個指令可以讓日志在2秒內出現多行重復行的時候,后面的日志設置為last message repeated x times,默認為true
NoCache 有些模塊會寫臨時文件,例如im_file會記錄上次讀到的位置,默認是False,假如設成true的話,以im_file為例,它就會從頭開始讀起了
CacheDir 存放configcache.dat臨時文件的目錄
User 啟動用戶,對Windows和NXLog-Processor無效
Group 啟動用戶組,對Windows和NXLog-Processor無效
RootDir 根目錄,對Windows和NXLog-Processor無效
SpoolDir 工作目錄,對Windows和NXLog-Processor無效
Threads 使用多少個線程來處理日志消息
FlowControl 默認為True,用於設定是不是所有的輸入和處理模塊都使用流程控制
NoFreeOnExit 默認是False,用於設定退出之后是否釋放資源,一般調試的時候會用
IgnoreErrors 默認為True,如果設為False即使配置文件出錯了還繼續啟動
Panic 調試用的參數,一般不用管

模塊

    nxlog會加載在配置文件中定義的模塊,例如

<Input instancename>
    Module      im_module
    ...
</Input>

每個實例的名字都必須是唯一的,會在后面的route里面用到

模塊的通用指令

Module:模塊名稱

 

FlowControl:是否啟用流程控制,建議在使用im_uds模塊從/dev/log采集本地syslog 的時候禁用掉,不然syslog會阻塞所有寫入的動作,假如輸出隊列還滿掉了,系統可能就不響應了

 

Schedule:用於定義作業,具有以下幾個選項

  • When:什么時候開始執行,和Crontab用法一樣,也有一些自帶的指令,例如

              @yearly        Run once a year, "0 0 1 1 *".
              @annually      (same as @yearly)
              @monthly       Run once a month, "0 0 1 * *".
              @weekly        Run once a week, "0 0 * * 0".
              @daily         Run once a day, "0 0 * * *".
              @midnight      (same as @daily)
              @hourly        Run once an hour, "0 * * * *".
  • Every:每xx秒/分這樣的表示方法,可用單位為sec, min, hour, day, week,默認為秒

  • First:設置首次執行時間,使用datetime類型的值

  • Exec:執行的命令內容

 

例5:同時存在2個調度

<Input in>
    Module	im_tcp
    Port	2345

    <Schedule>
	Every	1 sec
	First   2010-12-17 00:19:06
	Exec	log_info("scheduled execution at " + now());
    </Schedule>

    <Schedule>
	When	1 */2 2-4 * *
	Exec	log_info("scheduled execution at " + now());
    </Schedule>
</Input>

<Output out>
    Module	om_file
    File	"tmp/output"
</Output>

<Route 1>
    Path	in => out
</Route>


例6:條件判斷

Exec	if $Hostname = 'myhost';

 

例7:語句換行

Exec	if $Message =~ /something interesting/       \
           log_info("found something interesting");  \
        else                                         \
           log_debug("found nothing interesting");


例8:分號進行語句換行

Exec	log_info("first"); \
        log_info("second");
# The above is the same as the following:
Exec	log_info("first");
Exec    log_info("second");

 

例9:使用Exec塊進行語句換行

Exec	log_info("first"); \
        log_info("second");

# The above is the same as the following:
<Exec>
	log_info("first");
        log_info("second");
</Exec>	

 

Processors:這個指令廢棄掉了

 

InputType:用於指定輸入類型

  • LineBased:一行為一個日志,用\n或者\r\n區分

  • Dgram:一旦Buffer用完了,考慮合成一份日志,im_udp模塊的時候是默認選項,因為UDP syslog 是分批到達的

  • Binary:轉成Nxlog二進制格式

 

例10:輸入輸出

<Input in>
    Module	im_tcp
    Port	2345
    InputType	Binary
</Input>

<Output out>
    Module	om_file
    File	"tmp/output"
</Output>

<Route 1>
    Path	in => out
</Route>

 

OutputType:這個指令用於把原始日志格式化后送到指定的輸出里面,只能用於:om_file,om_exec,om_ssl,om_tcp,om_udp,om_uds里面,輸出類型可以指定以下類型

  • LineBased:一行為一個日志

  • Dgram:一旦緩沖滿了就把緩沖數據作為一行日志,om_udp輸出默認是開着的

  • Binary:用nxlog binary格式化輸出

 

例11、使用Binary格式化

<Input in>
    Module	im_file
    File	"tmp/input"
</Input>

<Output out>
    Module	om_tcp
    Port	2345
    Host	localhost
    OutputType	Binary
</Output>

<Route 1>
    Path	in => out
</Route>

 

Routes

路由定義了日志流的處理方式

<Route example>
    Path	in1, in2 => proc => out1, out2
</Route>	

 

Priority

日志路由的優先級,可選范圍為1-100,默認是10,數值越低,優先級越高

<Input tcpin>
    Module	im_tcp
    Host	localhost
    Port	514
</Input>

<Input udpin>
    Module	im_udp
    Host	localhost
    Port	514
</Input>

<Output tcpfile>
    Module	om_file
    File	"/var/log/tcp.log"
</Output>

<Output udpfile>
    Module	om_file
    File	"/var/log/udp.log"
</Output>

<Route udp>
    Priority	1
    Path	udpin => udpfile
</Route>

<Route tcp>
    Priority	2
    Path	tcpin => tcpfile
</Route>

 

Path

    Path指定了路由的方式

<Input in1>
    Module	im_null
</Input>

<Input in2>
    Module	im_null
</Input>

<Processor p1>
    Module	pm_null
</Processor>

<Processor p2>
    Module	pm_null
</Processor>

<Output out1>
    Module	om_null
</Output>

<Output out2>
    Module	om_null
</Output>

<Route 1>
    # no processor modules
    Path	in1 => out1
</Route>

<Route 2>
    # one processor module
    Path	in1 => p1 => out1
</Route>

<Route 3>
    # multiple modules
    Path	in1, in2 => p1 => p2 => out1, out2
</Route>

 


免責聲明!

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



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