nxlog以syslog方式发送日志
1、nxlog简介
nxlog是个跨平台日志传输插件,支持linux、windows平台,支持window及linux内置的大部分系统日志及常见的web日志,支持tcp、udp、http(s)等协议传输。
安装包、指导手册及常用配置下载:http://pan.baidu.com/s/1qWTc2g0
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
修改方式:请看下面
3)重启服务
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
<Extension w3c>
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 -
</Extension>
<Extension syslog>
Module xm_syslog
</Extension>
<Input in>
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); \
}
</Input>
<Output out>
Module om_udp
Host 192.168.108.2
Port 514
Exec to_syslog_bsd();
</Output>
<Route 1>
Path in => out
</Route>
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
<Extension w3c>
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 -
</Extension>
<Extension syslog>
Module xm_syslog
</Extension>
<Input in_machine_a>
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); \
}
</Input>
<Input in_machine_b>
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); \
}
</Input>
<Output out>
Module om_udp
Host 192.168.108.2
Port 514
Exec to_syslog_bsd();
</Output>
<Route 1>
Path in_machine_a,in_machine_b => out
</Route>
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
参考
http://nxlog.org/question/690/if-else-failed-not-enough-fields
8、性能分析
从使用来看,单台服务器一天内大约会发送4到6G大小的日志到远程linux中,nxlog进程占用的资源如下:cpu占用率一般在0%到3%之间;占用带宽300k-600k/s之间;内存一般小于10M。
总体而言对性能影响较小,注意对带宽的影响。
原文链接:http://www.alliedjeep.com/138487.htm
最新文章
- CSS 3学习——animation动画
- 关于IOS的唯一标识总结
- [Android Tips] 23. How to fail/stop Gradle task immediately if some conditions are not met
- WCF传输大数据的设置
- C#高级编程笔记 Day 1, 2016年8月 30日 名词定义
- Oracle命令:授权-收回权限-角色
- SU Demos 03T-F Analysis-03Suphasevel
- 【C语言】01-函数
- win8 64位操作系统 Microsoft Visual Studio 2010在IIS上调试 “此任务要求应用程序具有提升的权限”等问题
- Probability theory
- Swift语言教程中文文档
- WebService使用JSON格式传递笔记+JQuery测试
- composer install 遇到问题 Problem 1 - phpunit/phpunit 5.7.5 requires php ^5.6 || ^7.0 ->; your PHP version (5.5.3 0) does not satisfy that requirement.
- kill -QUIT <;pid>;
- 【亲测】Python:解决方案:Python Version 2.7 required, which was not found in the registry
- 【原创】使用workstation安装Xenserver 6.5+cloudstack 4.10----本地存储模式
- 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)
- 与图论的邂逅04:LCT
- c#核心基础--类的构造方法
- 基于vs2015的rdlc报表运行环境部署
热门文章
- unity3d 角色头顶信息3D&;2D遮挡解决方案(二)
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 &ndash; 员工离职管理
- 03-JVM内存模型:堆与方法区
- keepalived+nginx实现高可用+tomcat
- SpriteKit手机游戏摇杆JoyStick的使用 -- by iFIERO游戏开发教程
- 【radio-group、radio】 单选项组件说明
- 211. String Permutation【LintCode by java】
- ubuntu server guide 学习笔记
- New Year and Old Property :dfs
- 20162328蔡文琛week02