php+log+iis,利用nxlog以syslog方式发送iis日志
1、nxlog簡介
nxlog是個跨平臺日志傳輸插件,支持linux、windows平臺,支持window及linux內置的大部分系統日志及常見的web日志,支持tcp、udp、http(s)等協議傳輸。
2、配置目的
通過nxlog將iis日志按syslog以udp的方式發送到linux服務器中作為linux服務器的syslog。
特殊需求:is日志中日期和時間是兩個字段,需要合并成一個字段。
3、系統及軟件環境
OS:window server2008 r2 Enterprise
IIS:7.5
Nxlog:2.9.1347
4、iis日志格式
5、nxlog配置步驟
1)安裝nxlog
默認是安裝在C:\Program Files (x86)\nxlog路徑下。
2)修改nxlog.conf配置信息
位置:C:\Program Files (x86)\nxlog\conf\nxlog.conf
修改方式:請看下面【6、nxlog配置示例】
3)重啟服務【nxlog】
4)驗證
驗證去data目錄下看nxlog.log是否是否有異常,正常應該無異常,僅含啟動成功的日志信息
通過資源監視器,看nxlog發送的網絡流量是否存在,正常應該有
通過日志平臺來驗證日志是否發送成功。
?6、nxlog配置示例?
1)當日志文件都放在一個文件夾,nxlog.conf配置如下
define?ROOT?C:\Program?Files?(x86)\nxlog
define?CERTDIR?%ROOT%\cert
Moduledir?%ROOT%\modules
CacheDir?%ROOT%\data
Pidfile?%ROOT%\data\nxlog.pid
SpoolDir?%ROOT%\data
LogFile?%ROOT%\data\nxlog.log
Module?xm_csv
Fields?$datetime,?$s-ip,?$cs-method,?$cs-uri-stem,?$cs-uri-query,?$c-ip,?$csUser-Agent,?$cs-Referer,?$cs-host,?$sc-status,?$sc-substatus,?$sc-win32-status,?$time-taken
FieldTypes?string,?string,?string,?string,?string,?string,?string,?string,?string,?string,?string,?string,?string
Delimiter?'?'
QuoteChar?'"'
EscapeControl?TRUE
UndefValue?-
Module?xm_syslog
Module???im_file
#iis日志目錄,文件名支持通配符,文件夾不支持
File????"D:\iislog\W3SVC1\u_ex*.log"
SavePos??TRUE
#合并iis日志中的時間與日志字段為一個字段
Exec?if?$raw_event?=~?/^#/?drop();?\
else?\
{?\
$raw_event?=?replace($raw_event,?'?',?'@',1);????????\
w3c->parse_csv();?\
$raw_event?=?replace($raw_event,?'?',?"\t");?????????\
$raw_event?=?replace($raw_event,?'@',?'?',1);????????\
}
Module?om_udp
Host?192.168.108.2
Port?514
Exec?to_syslog_bsd();
Path?in?=>?out
2)日志文件都放在多個文件夾【支持跨服務器】,nxlog.conf配置如下
define?ROOT?C:\Program?Files?(x86)\nxlog
define?CERTDIR?%ROOT%\cert
Moduledir?%ROOT%\modules
CacheDir?%ROOT%\data
Pidfile?%ROOT%\data\nxlog.pid
SpoolDir?%ROOT%\data
LogFile?%ROOT%\data\nxlog.log
Module?xm_csv
Fields?$datetime,?$s-ip,?$cs-method,?$cs-uri-stem,?$cs-uri-query,?$c-ip,?$csUser-Agent,?$cs-Referer,?$cs-host,?$sc-status,?$sc-substatus,?$sc-win32-status,?$time-taken
FieldTypes?string,?string,?string,?string,?string,?string,?string,?string,?string,?string,?string,?string,?string
Delimiter?'?'
QuoteChar?'"'
EscapeControl?TRUE
UndefValue?-
Module?xm_syslog
Module???im_file
#iis日志目錄,文件名支持通配符,文件夾不支持
File????'D:\iislog\W3SVC2\u_ex*.log'
SavePos??TRUE
#合并iis日志中的時間與日志字段為一個字段
Exec?if?$raw_event?=~?/^#/?drop();?\
else?\
{?\
$raw_event?=?replace($raw_event,?'?',?'@',1);????????\
w3c->parse_csv();?\
$raw_event?=?replace($raw_event,?'?',?"\t");?????????\
$raw_event?=?replace($raw_event,?'@',?'?',1);????????\
}
Module???im_file
#iis日志目錄,文件名支持通配符,文件夾不支持
File????'\\192.168.108.3\d$\iislog\W3SVC2\u_ex*.log'
SavePos??TRUE
#合并iis日志中的時間與日志字段為一個字段
Exec?if?$raw_event?=~?/^#/?drop();?\
else?\
{?\
$raw_event?=?replace($raw_event,?'?',?'@',1);????????\
w3c->parse_csv();?\
$raw_event?=?replace($raw_event,?'?',?"\t");?????????\
$raw_event?=?replace($raw_event,?'@',?'?',1);????????\
}
Module?om_udp
Host?192.168.108.2
Port?514
Exec?to_syslog_bsd();
Path?in_machine_a,in_machine_b?=>?out
3)支持多個數據源和多個輸出
配置多個in及out,可以共用一個path配置輸出。
7、nxlog配置過程中出現過的問題
1)nxlog2.8版本發送異常的問題
問題現象
2015-03-11 21:27:31 ERROR if-else failed at line 50, character 246 in C:\Program Files (x86)\nxlog\conf\nxlog.conf. statement execution has been aborted; procedure 'parse_csv' failed at line 50, character 103 in C:\Program Files (x86)\nxlog\conf\nxlog.conf. statement execution has been aborted; Not enough fields in CSV input, expected 14, got 0 in input ''
導致整個進程無法繼續輸出日志
解決方法
替換使用2.9.1347版本的nxlog
參考
8、性能分析
從使用來看,單臺服務器一天內大約會發送4到6G大小的日志到遠程linux中,nxlog進程占用的資源如下:cpu占用率一般在0%到3%【40核】之間;占用帶寬300k-600k/s之間;內存一般小于10M。
總體而言對性能影響較小,注意對帶寬的影響。
總結
以上是生活随笔為你收集整理的php+log+iis,利用nxlog以syslog方式发送iis日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nxlog管理配置linux,IIS服务
- 下一篇: iOS 远程推送