当前位置: 首页 > 工具软件 > nxlog > 使用案例 >

Nxlog配置

景靖琪
2023-12-01

Nxlog的配置文件只有一个,即无论多少种日志采集文件都只有一个配置文件。对于nxlog配置文件可以分为六个部分 :“定义模块”“Extension” “Processor”“Input” “Output”“Route”,这六个部分在nxlog的顺序也是如上的,看下面按照顺序说明每个模块

 

样例来源windows2012测试主机 

IP:192.168.161.63

密码: Xx123456

 

1.定义模块模板如下

#define ROOT C:\Program Files\nxlog

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

 

说明:安装时就已经提供了该模块

            前两行

#define ROOT C:\Program Files\nxlog

define ROOT C:\Program Files (x86)\nxlog

根据操作系统的是32位还是64决定

define CERTDIR %ROOT%\cert  

是自己添加的加密文件路径,cert路径本身nxlog就存在,只需要将对应的文件放入目录即可

其他都是配置文件默认的

2.Extension部分

一些前期引入的操作

<Extension _syslog>

    Module      xm_syslog

</Extension>

 

<Extension _json>

    Module      xm_json

</Extension>

#解决文件内容中解析失败问题

<Extension charconv>

    Module      xm_charconv

</Extension>

 

只有这两种,暂时不需要添加(可能支持日志的类型增多,回会增加处理函数)

3.Processor部分

此部分主要是对日志的一个简单处理,增加必要的字段

此部分模板如下

<Processor PRO_NAME>

    Module      pm_transformer

    Exec          $uuid = "UUID";                                           

    Exec                    $log_type = "LOG_TYPE";

    Exec                    $parser_rule = "PARSER_RULE";

    Exec                    $collector_type = "COLLECTOR_TYPE";

    Exec          $log_path = "LOG_PATH";

    Exec            $ip = "IP";        

</Processor>

说明:

PRO_NAME: 为此处理模块命名,在同一配置文件中命名唯一

UUID:  唯一标识,之前定的命名规则应为 “项目标示_采集端标示”必须整个系统唯一

IP: 采集端IP地址

                  LOG_TYPE: 采集的日志类型,详见准备支持的日志解析规则以及日志源 的数据源类型列表中的“数据源命名列”

                  PARSER_RULE:  日志解析规则,详见准备支持的日志解析规则以及日志源 的数据源类型列表中的"日志解析规则列"

                  COLLECTOR_TYPE: 日志收集方式类型,可选值  “nxlog”、“rsyslog”、“agent”,在此位置已经固定为“nxlog”

                  LOG_PATH: 日志文件路径,对于windows主机无路径,此位置直接用“eventlogpath”代替。

              ①windows系统处理样例

<Processor pro_win_system>

    Module      pm_transformer

    Exec        $uuid = "windows_2012_0002";                                           

    Exec        $log_type = "win_event_log";

    Exec        $parser_rule = "nxlog_win_event_rule";

    Exec        $collector_type = "nxlog";

    Exec        $log_path = "eventlogpath";

    Exec        $ip = "192.168.161.63";                

</Processor>

②apache access处理样例

<Processor pro_apache_access>

    Module      pm_transformer

    Exec                $uuid = "windows_2012_0002";                                           

    Exec         $log_type = "apache_access_log";

    Exec         $parser_rule = "nxlog_apache_access_rule";

    Exec                       $collector_type = "nxlog";

    Exec             $log_path = "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\access.log";

    Exec         $ip = "192.168.161.63";        

</Processor>

③mysql error 处理样例

<Processor pro_mysql_error>

    Module      pm_transformer

    Exec             $uuid = "windows_2012_0002";                                           

    Exec                        $log_type = "mysql_error_log";

    Exec         $parser_rule = "nxlog_mysql_error_rule";

    Exec                       $collector_type = "nxlog";

    Exec             $log_path = "C:\ProgramData\MySQL\MySQL Server 5.5\data\cloudzmb-11.err";

    Exec            $ip = "192.168.161.63";        

</Processor>

 

④tomcat access 处理样例

<Processor pro_tomcat_access>

    Module      pm_transformer

    Exec            $uuid = "windows_2012_0002";                                           

    Exec                      $log_type = "tomcat_access_log";

    Exec                     $parser_rule = "nxlog_tomcat_access_rule";

    Exec                     $collector_type = "nxlog";

    Exec           $log_path = "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.*.txt";

    Exec             $ip = "192.168.161.63";        

</Processor>

4.Input部分

此部分完成日志的获取,不同类型的日志需要有不同的获取方式,目前存在两种获取模板,windows系统日志获取和文件类型日志获取模板

 windows日志获取模板

<Input in_win_system>

    Module      im_msvistalog

# For windows 2003 and earlier use the following:

#   Module      im_mseventlog

</Input>

说明:模板基本不会变, im_msvistalog支持的是2003之后的版本,  im_mseventlog支持的是2003之前版本,包括2003

   样例说明(windows2008主机):

<Input in_win_system>

    Module      im_msvistalog

</Input>

 

           文件日志获得模板

<Input IN_NAME>

    Module      im_file

    File                      "FILE_PATH"        

     Exec             convert_fields("GB2312", "utf-8");        

</Input>

说明:

     IN_NAME:input模块的唯一命名,全文件不相同即可

     FILE_PATH:文件路径

 

①mysql error 日志文件样例

<Input in_mysql_error>

    Module      im_file

    File        "C:\ProgramData\MySQL\MySQL Server 5.5\data\cloudzmb-11.err"

     Exec          convert_fields("GB2312", "utf-8");                

</Input>

②tomcat access 日志文件样例

<Input in_tomcat_access>

    Module      im_file

    File                      "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\logs\localhost_access_log.*.txt"

    Exec          convert_fields("GB2312", "utf-8");                

</Input>

③apache access 日志文件样例

<Input in_apache_access>

    Module      im_file

    File                       "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\access.log"

     Exec          convert_fields("GB2312", "utf-8");                

</Input>

 

5.Output部分

output部分样例目前只支持两种,根据目前的调研情况只需要支持两种,发送windows系统日志,发送文件类型日志,但是会有两种模式,SSL加密和非加密模式。

 发送windows系统日志

加密模式模板

<Output out>

    Module             om_ssl

    Host                  DST_IP

    Port                   DST_PORT

    CAFile                CA_CERT

    CertFile              CLIENT_CERT

    CertKeyFile        CLENT_KET

    KeyPass             PASSWORD

    AllowUntrusted     TRUE

    Exec        $raw_event = to_json();

</Output>

说明:

DST_IP:为发送的目的主机IP地址,或者也可以是域名

DST_PORT: 为发送目的主机端口

CA_CERT:为CA证书路径

 CLIENT_CERT:为在服务端为客户机生成的证书

 CLIENT_KEY:为在服务端为客户主机生成的key

 PASSWORD:证书密码,默认设置为“123456”可修改,根据证书生成时的密码决定

样例

<Output out>

    Module       om_ssl

    Host             192.168.161.96

    Port              1514

    CAFile           %CERTDIR%\ca-cert.pem

    CertFile         %CERTDIR%\client-cert.pem

    CertKeyFile %CERTDIR%\client-key.pem

    KeyPass       123456

    AllowUntrusted     TRUE

    Exec               $raw_event = to_json();

</Output>

非加密模板

<Output out>

    Module            om_tcp

     Host             DST_IP

    Port              DST_PORT

    Exec                $raw_event = to_json();

</Output>

说明:

DST_IP:为发送的目的主机IP地址,或者也可以是域名

DST_PORT: 为发送目的主机端口

样例

<Output out>

    Module      om_tcp

    Host        192.168.161.96

    Port        1514

    Exec        $raw_event = to_json();

</Output>

发送文件类型日志

加密模板

<Output out1>

     Module             om_ssl

    Host                  DST_IP

    Port                   DST_PORT

    CAFile                CA_CERT

    CertFile              CLIENT_CERT

    CertKeyFile        CLENT_KET

    KeyPass             PASSWORD

    AllowUntrusted     TRUE

    Exec          $msg = $raw_event;

    Exec          $raw_event = to_json();

</Output>

说明:

DST_IP:为发送的目的主机IP地址,或者也可以是域名

DST_PORT: 为发送目的主机端口

CA_CERT:为CA证书路径

 CLIENT_CERT:为在服务端为客户机生成的证书

 CLIENT_KEY:为在服务端为客户主机生成的key

 PASSWORD:证书密码,默认设置为“123456”可修改,根据证书生成时的密码决定

样例

<Output out1>

    Module      om_ssl

    Host        192.168.161.96

    Port        1514

    CAFile      %CERTDIR%\ca-cert.pem

    CertFile    %CERTDIR%\client-cert.pem

    CertKeyFile %CERTDIR%\client-key.pem

    KeyPass     123456

    AllowUntrusted     TRUE

    Exec          $msg = $raw_event;

    Exec          $raw_event = to_json();

</Output>

 

非加密模板

<Output out>

    Module            om_tcp

     Host             DST_IP

    Port              DST_PORT

     Exec          $msg = $raw_event;

    Exec          $raw_event = to_json();

</Output>

说明:

DST_IP:为发送的目的主机IP地址,或者也可以是域名

DST_PORT: 为发送目的主机端口

样例

<Output out>

    Module      om_tcp

    Host            192.168.161.96

    Port             1514

     Exec             $msg = $raw_event;

    Exec             $raw_event = to_json();

</Output>

6.Route部分

Route部分主要是处理日志的处理顺序的一个模块,对于不同的日志需要有一个单独的Route。

此部分模板如下:

<Route ROUTE_NAME>

    Path       IN_NAME => PRO_NAME => OUT_NAME

</Route>

说明:

ROUTE_NAME:Route部分的命名,需要全文唯一

IN_NAME:Input模块名称

PRO_NAME:Processor模块名称

OUT_NAME:Output模块名称,在上面Output模块中未对此命名,直接使用“out”和“out1”必要时也可为其命名

①windows系统output样例

<Route win_system>

    Path        in_win_system => pro_win_system => out

</Route>

②apache access output样例

<Route apache_access>

    Path        in_apache_access => pro_apache_access => out1

</Route>

③msyql error output样例

<Route mysql_error>

    Path        in_mysql_error => pro_mysql_error => out1

</Route>

④tomcat access output样例

<Route tomcat_access>

    Path        in_tomcat_access => pro_tomcat_access => out1

</Route>

 

 类似资料: