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>