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日志格式

ef454f451b50e4527e692ed74c9fdeea.png

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。

总体而言对性能影响较小,注意对带宽的影响。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值