Nxlog配置

2025-11-24 22:26:05 7270

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部分

一些前期引入的操作

Module xm_syslog

Module xm_json

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

Module xm_charconv

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

3.Processor部分

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

此部分模板如下

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";

说明:

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

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

IP: 采集端IP地址

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

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

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

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

①windows系统处理样例

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";

②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";

③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";

④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";

4.Input部分

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

windows日志获取模板

Module im_msvistalog

# For windows 2003 and earlier use the following:

# Module im_mseventlog

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

样例说明(windows2008主机):

Module im_msvistalog

文件日志获得模板

Module im_file

File "FILE_PATH"

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

说明:

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

FILE_PATH:文件路径

①mysql error 日志文件样例

Module im_file

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

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

②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");

③apache access 日志文件样例

Module im_file

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

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

5.Output部分

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

发送windows系统日志

加密模式模板

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();

说明:

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

DST_PORT: 为发送目的主机端口

CA_CERT:为CA证书路径

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

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

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

样例

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();

非加密模板

Module om_tcp

Host DST_IP

Port DST_PORT

Exec $raw_event = to_json();

说明:

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

DST_PORT: 为发送目的主机端口

样例

Module om_tcp

Host 192.168.161.96

Port 1514

Exec $raw_event = to_json();

发送文件类型日志

加密模板

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();

说明:

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

DST_PORT: 为发送目的主机端口

CA_CERT:为CA证书路径

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

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

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

样例

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();

非加密模板

Module om_tcp

Host DST_IP

Port DST_PORT

Exec $msg = $raw_event;

Exec $raw_event = to_json();

说明:

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

DST_PORT: 为发送目的主机端口

样例

Module om_tcp

Host 192.168.161.96

Port 1514

Exec $msg = $raw_event;

Exec $raw_event = to_json();

6.Route部分

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

此部分模板如下:

Path IN_NAME => PRO_NAME => OUT_NAME

说明:

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

IN_NAME:Input模块名称

PRO_NAME:Processor模块名称

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

①windows系统output样例

Path in_win_system => pro_win_system => out

②apache access output样例

Path in_apache_access => pro_apache_access => out1

③msyql error output样例

Path in_mysql_error => pro_mysql_error => out1

④tomcat access output样例

Path in_tomcat_access => pro_tomcat_access => out1

Copyright © 2022 世界杯积分_上一届世界杯冠军 - f0cai.com All Rights Reserved.