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

nxlog以syslog方式发送日志的更多相关文章

  1. logstash快速入门 (这篇文章很不错 ) | 两种方式往logstash传输数据实例:Apache 日志(从文件获取)、Syslog方式

    原文地址:http://www.2cto.com/os/201411/352015.html 原文地址:http://logstash.net/docs/1.4.2/tutorials/getting ...

  2. 通过syslog接收远程日志

    通过syslog接收远程日志   通过syslog接收远程主机的日志,需要做一些环境配置.   客户机A通过syslog将日志信息发送到服务主机B(或称日志采集服务器).以下说明配置过程(我的实验环境 ...

  3. ES系列十八、FileBeat发送日志到logstash、ES、多个output过滤配置

    一.FileBeat基本概念 简单概述 最近在了解ELK做日志采集相关的内容,这篇文章主要讲解通过filebeat来实现日志的收集.日志采集的工具有很多种,如fluentd, flume, logst ...

  4. 在android用Get方式发送http请求

    烦人的日子终于过去啦,终于又可以写博客啦,对自己的android学习做个总结,方便以后查看...... 一.在android用Get方式发送http请求,使用的是java标准类,也比较简单. 主要分以 ...

  5. C#带cookie Post和Get方式发送数据,保持cookie

    在实际编程中,可能需要读取特定网页的信息,但很多网站需要用户登录后,才能够获取相关的页面内容,这就需要编程者先临时存储当前的cookie,在C#中可以使用CookieContainer 对象来保存登录 ...

  6. WebClient以POST方式发送Web请求

    本例使用WebClient以POST方式发送Web请求并下载一个文件,难点是postData的构造,发送Web请求时有的网站要求可能要求 Cookies前后一致.其中application/x-www ...

  7. 来一手 AOP 注解方式进行日志记录

    系统日志对于定位/排查问题的重要性不言而喻,相信许多开发和运维都深有体会. 通过日志追踪代码运行状况,模拟系统执行情况,并迅速定位代码/部署环境问题. 系统日志同样也是数据统计/建模的重要依据,通过分 ...

  8. EBS中使用JAVA方式发送HTML格式邮件

    转自huan.gu专栏:http://blog.csdn.net/gh320/article/details/17174769 EBS中使用JAVA方式发送HTML格式邮件 一.开发工具:JDevel ...

  9. AJAX方式发送远程请求报错:No 'Access-Control-Allow-Origin' header

    AJAX GET方式发送远程请求,chrome开发者工具console中报错:XMLHttpRequest cannot load http://www.shikezhi.com/ajax/getDa ...

随机推荐

  1. 了解和分析iOS Crash

    WeTest 导读 北京时间凌晨一点,苹果一年一度的发布会如期而至.新机型的发布又会让适配相关的同学忙上一阵子啦,并且iOS Crash的问题始终伴随着移动开发者.本文将从三个阶段,由浅入深的介绍如何 ...

  2. 第一模块·开发基础-第1章 Python基础语法

    Python开发工具课前预习 01 Python全栈开发课程介绍1 02 Python全栈开发课程介绍2 03 Python全栈开发课程介绍3 04 编程语言介绍(一) 05 编程语言介绍(二)机器语 ...

  3. pyhon文件操作典型代码实现(非常经典!)

    1. 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: 实现代码: import os all_files = os.listdir(os.chdir("D:\\" ...

  4. 初学Direct X(9) ——文字的显示

    初学Direct X(9) --文字的显示 本次学习如何使用ID3DXFont创建字体,使得我们可以在任何安装了Windows系统中TrueType字体来打印文字,不过最好使用标准字体,这样文字在每一 ...

  5. Nginx与Ribbon的区别

    服务器端负载均衡 Nginx Nginx 基于C语言,快速,性能高5w/s. Redis 5w/s,RibbatMQ 1.2w/s ApacheActiveMQ 0.6w/s 业务系统,kafka 2 ...

  6. php导出excel表格的使用

    网站后台有很多列表数据,常常都会有导出excel表格的需求,和大家分享一个实用的导出excel表格方法: 不多说,上代码: /** * @param array $data 要导出的数据 * @par ...

  7. 【scroll-view】 可滚动视图组件说明

    scroll-view 可滚动视图容器 原型: <scroll-view scroll-x="[Boolean]" scroll-y="[Boolean]" ...

  8. Python全栈 Web(边框、盒模型、背景)

    原文地址 https://yq.aliyun.com/articles/634926 ......................................................... ...

  9. [Clr via C#读书笔记]Cp15枚举和位标识

    Cp15枚举和位标识 枚举类型 本质是结构,符号名称-值:好处显而易见:System.Enum;值类型: 编译的时候,符号会转换为常量字段: 枚举支持很多方法和成员: 位标识bit flag 判断和设 ...

  10. 关于C#中如何使用wmi获得操作系统信息?

    最近项目中用到了windows server 2012操作系统中的存储池和ISCSI Disk的技术.前期,我们整个操作都是用power shell脚本去实现了.带来了不方便,后期要使用wmi API ...