ELK-日志收集工具nxlog
ELK-日志收集工具nxlog
文章目錄
- ELK-日志收集工具nxlog
- 前言
- 安裝
- 語(yǔ)法
- 宏變量
- 通用模塊指令格式
- Module 模塊名
- FlowControl
- InputType:指定輸入類(lèi)型
- OutputType:指定輸出類(lèi)型
- Exec: 執(zhí)行命令
- Schedule:定時(shí)器
- Every
- First
- Exec
- When
- Route模塊
- Extension模塊
- Input
- output
- on_tcp/om_udp
- on_file
- on_ssl
- 修改輸出內(nèi)容
- 例子
- 讀取/var/log/message傳給logstash
- 讀取windows事件發(fā)送給logstash
前言
nxlog配置有6個(gè)可配置的部分,Extension,Processor,Input,Output,Route。其中Route是路由,不需要指定模塊,其它都有各自的模塊可指定。
官方文檔地址-英文
一些內(nèi)置函數(shù),左側(cè)的3.6章節(jié)
安裝
官網(wǎng)下載地址,下載nxlog-ce-2.10.2150.msi,點(diǎn)擊安裝。
64位默認(rèn)安裝路徑:C:\Program Files (x86)\nxlog,
32位默認(rèn)安裝路徑:C:\Program Files\nxlog,
日志文件默認(rèn)路徑:C:\Program Files (x86)\nxlog\data\nxlog.log。
配置文件路徑:C:\Program Files (x86)\nxlog\conf\nxlog.conf。
語(yǔ)法
默認(rèn)配置文件:
Panic Soft #NoFreeOnExit TRUEdefine ROOT C:\Program Files (x86)\nxlog define CERTDIR %ROOT%\cert define CONFDIR %ROOT%\conf define LOGDIR %ROOT%\data define LOGFILE %LOGDIR%\nxlog.log LogFile %LOGFILE%Moduledir %ROOT%\modules CacheDir %ROOT%\data Pidfile %ROOT%\data\nxlog.pid SpoolDir %ROOT%\data<Extension _syslog>Module xm_syslog </Extension> <Extension _charconv>Module xm_charconvAutodetectCharsets iso8859-2, utf-8, utf-16, utf-32 </Extension><Extension _exec>Module xm_exec </Extension><Extension _fileop>Module xm_fileop# Check the size of our log file hourly, rotate if larger than 5MB<Schedule>Every 1 hourExec if (file_exists('%LOGFILE%') and \(file_size('%LOGFILE%') >= 5M)) \file_cycle('%LOGFILE%', 8);</Schedule># Rotate our log file every week on Sunday at midnight<Schedule>When @weeklyExec if file_exists('%LOGFILE%') file_cycle('%LOGFILE%', 8);</Schedule> </Extension>宏變量
宏可以理解為定義一個(gè)變量并賦值。比如
define ROOT C:\Program Files (x86)\nxlogdefine指令可以定義宏變量,使用時(shí)用兩個(gè)%號(hào)包裹,比如%ROOT %
例子
配置文件默認(rèn)定義了很多宏,了解即可。
通用模塊指令格式
Module 模塊名
模塊名在C:\Program Files (x86)\nxlog\modules下以.dll后綴結(jié)尾(linux以.so格式結(jié)尾),前綴分別是im_, pm_, om_, or xm_。
im:input module縮寫(xiě),pm:processor module,om:output module,xm:extension module
FlowControl
是否啟用流程控制,建議在使用im_uds模塊從/dev/log采集本地syslog 的時(shí)候禁用掉,不然syslog會(huì)阻塞所有寫(xiě)入的動(dòng)作,假如輸出隊(duì)列還滿(mǎn)掉了,系統(tǒng)可能就不響應(yīng)了
InputType:指定輸入類(lèi)型
只對(duì)im_exec, im_ssl, im_tcp, im_udp, and im_uds模塊有效,一般不會(huì)特意設(shè)置
有效值如下
1. LineBased:一行為一個(gè)日志,用\n或者\(yùn)r\n區(qū)分
例如
<Input tcp>Module im_tcpPort 2345InputType Binary </Input>OutputType:指定輸出類(lèi)型
只能用于 om_file, om_exec, om_ssl, om_tcp, om_udp, and om_uds模塊
有效值如下:
1. LineBased:一行為一個(gè)日志
2. Dgram:一旦緩沖滿(mǎn)了就把緩沖數(shù)據(jù)作為一行日志,om_udp輸出默認(rèn)是開(kāi)著的
3. Binary:用nxlog binary格式化輸出
Exec: 執(zhí)行命令
每接收到一條日志信息都會(huì)執(zhí)行一次。在input, processor, and output模塊里完全支持,大部分extension模塊都不支持(除了 xm_multiline 和 xm_rewrite模塊)。每行是一條Exec指令,多行指令使用</kbd>換行,使用分號(hào)結(jié)尾,放在模塊的最后面。
比如單行指令:
Exec $Hostname = 'myhost';在每行記錄里定義了一個(gè)變量$Hostname
比如多行指令:
多行指令也可抱成塊形勢(shì),上面和下面語(yǔ)句意思一樣
<Exec>log_info("first");log_info("second"); </Exec>Schedule:定時(shí)器
Every
比如Every 1 sec表示每秒執(zhí)行。一個(gè)整型數(shù)字加上單位組成值,缺省單位是秒,有sec, min, hour, day, or week單位可選
First
設(shè)置首次執(zhí)行時(shí)間,使用datetime類(lèi)型的值,比如First 2010-12-17 00:19:06
Exec
執(zhí)行的指令
When
@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 * * * *".這些都是語(yǔ)法,例子
<Input in>Module im_tcpPort 2345<Schedule>Every 1 secFirst 2010-12-17 00:19:06Exec log_info("scheduled execution at " + now());</Schedule><Schedule>When 1 */2 2-4 * *Exec log_info("scheduled execution at " + now());</Schedule> </Input>Route模塊
這個(gè)是最簡(jiǎn)單模塊。指定路由方式。
語(yǔ)法
比如
<Input in_file>Module im_fileFile "D:\\jar\\dongli\\logs\\spring-boot.log"SavePos TRUEExec convert_fields("auto", "utf-8"); </Input><Output out_file>Module om_fileFile 'D:\666.log' </Output><Route 1>Path in_file => out_file </Route>Extension模塊
一些前期引入的操作
這個(gè)模塊一般我們不用動(dòng)它,默認(rèn)配置了幾個(gè)
將 xm_syslog換成xm_json表示系統(tǒng)日志格式為json。
<Extension charconv>Module xm_charconv</Extension>解決文件內(nèi)容中解析失敗問(wèn)題
Input
參考
數(shù)據(jù)輸入,可選模塊如下圖:
常用的是im_msvistalog和im_file
具體例子
im_file模塊:獲取springboot.log日志
注意文件使用\
比如文件存在多個(gè),使用,如:File "D:\jar\dongli\logs\.log"
支持的配置:
im_exec執(zhí)行命令:使用tail命令讀取文件
output
數(shù)據(jù)輸入,可選模塊如下圖:
模塊指定發(fā)送方式
om_tcp/om_udp:以tcp、udp方式發(fā)送
om_http:http方式發(fā)送
on_ssl:加密方式發(fā)送
on_file:輸出到文本
on_tcp/om_udp
<Output out_tcp>Module om_tcpHost 192.168.1.238Port 514 </Output>on_file
<Output out_file>Module om_fileFile 'D:\666.log' </Output>on_ssl
語(yǔ)法
<Output out>Module om_sslHost DST_IPPort DST_PORTCAFile CA_CERTCertFile CLIENT_CERTCertKeyFile CLENT_KETKeyPass PASSWORDAllowUntrusted TRUEExec $raw_event = to_json();</Output>說(shuō)明:
修改輸出內(nèi)容
使用$raw_event變量
比如,下面在輸出的日志狀況添加一個(gè)ip
例子
讀取/var/log/message傳給logstash
<Input messages>Module im_fileFile "/var/log/messages" </Input><Output tcp>Module om_tcpHost 192.168.1.238Port 514 </Output><Route messages_to_tcp>Path messages => tcp </Route>讀取windows事件發(fā)送給logstash
<Extension _syslog>Module xm_syslog </Extension><Input in>Module im_msvistalog # For windows 2003 and earlier use the following: # Module im_mseventlogReadFromLast FALSESavePos FALSEQuery <QueryList>\<Query Id="0">\<Select Path="Security">*</Select>\ #配置為只發(fā)送Security Log</Query>\</QueryList></Input><Output out>Module om_tcpHost 192.168.1.238Port 514Exec to_syslog_snare(); </Output><Route 1>Path in => out </Route>配置為同時(shí)接收多個(gè)事件日志
<Input in>Module im_msvistalog # For windows 2003 and earlier use the following: # Module im_mseventlogReadFromLast FALSESavePos FALSEQuery <QueryList>\<Query Id="0">\<Select Path="Application">*</Select>\<Select Path="System">*</Select>\<Select Path="Security">*</Select>\</Query>\</QueryList></Input>總結(jié)
以上是生活随笔為你收集整理的ELK-日志收集工具nxlog的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: photoshop cc 2018安装破
- 下一篇: eclipse和myeclipse集成X