====syslog-ng特性====
1.传输可靠(TCP)
2.支持TLS安全传输日志
3.数据库接入
4.日志过滤和分类
5.日志解析和重写
6.支持IPV6
7.工作模式(客户端,服务端,转发)
====工作机制====
source driver: 源驱动器,收集源日志的方式
source: 源驱动器集合
destination driver: 目的驱动器,发送日志到目的地的方式
destion: 目的驱动器的集合
filter: 选择特定消息的表达式,用于获取特定消息
macro: 用于标识消息体特定的部分,用于引用消息
parser: 分析消息的规则
rewrite rule: 更改消息段的规则
log paths: 定义日志处理规则
template: 重构消息格式的模板
option: 配置的全局选项
====日志格式====
格式文档: RFC3164、RFC5424
传统格式: PRI HEADER MSG(消息长度小于1024)
PRI值计算: facility * 8 + severity
HEADER格式: timestamp hostname
MSG的格式: program[pid]: message text
IETF格式: header structured-data msg
header必须是明文的ASCII格式
structured-data必须是UTF-8编码格式
msg建议UTF-8编码格式
IETF header格式:
<pri>VERSION ISOTIMESTAMP HOSTNAME APPLICATION PID MESSAGEID
注意一些字段必须小于一定字节数,大于该字节数,会被截断:
APP-NAME <= 48
PROC-ID(PID) <= 128
MSGID <= 32
HOSTNAME <= 255
IETF structured-data格式:
[id name=vaule [name=vaule] ... ]
包含一个块ID,多个name=vaule
说明:
1.syslog-ng只会处理上面的两种格式信息,如果遇到未知格式就会导致不预期的错误
2.如果想要保留原始信息,源驱动器加上选项flags(no-parse),destination使用
template只包含$MSG宏
====安装步骤====
下载两个源代码包eventlog-xxx.tar.gz和syslog-ng-xxx.tar.gz
tar -zxvf eventlog-x.x.x.x.tar.gz
./configure
make
make install
tar -zxvf syslog-ng-x.xx.tar.gz
export KG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
./configure [--compile-time-option-name]
make
make install
====配置说明====
配置文件第一行必然是:@version: 3.3的格式,3.3代表版本号
$HOST宏一般都是发送主机的IP地址,不一定是原始日志的
主机地址,除非syslog-n配置keep_hostname(yes)
source dirvers
source <identifier> { source-driver(params); source-driver(params); ... };
syslog-ng自己的信息日志
internal():信息级别info以上,日志设备syslog
从文件收集日志
file(filename):即使文件重命令,或是转存了都能正确分析,syslog-ng将文件分析
记录到syslog-ng.persist文件中,跟踪分析状态
no-multi-line: 分割多行为单行
no-parse: 不进行日志分析
从管道获取日志
pipe(filename)
从linux accounting logs收集日志
1.编译启用了--enable-pacct
2.pacctformat插件自动加载
配置如下:
@include "scl.conf"
pacct()
从外部程序收集日志
program(filename)
按照IETF格式收集日志
syslog(ip() port() transport() options());
获取本地系统的日志信息
generate-system-source.sh脚本产生配置
system()
从网络收集日志
tcp(), tcp6(), udp() and udp6()
从Unix套接字收集日志
unix-stream(filename [options]);
unix-dgram(filename [options]);
目的地配置
destination drivers
destination <identifier> {
destination-driver(params); destination-driver(params); ... };
目的地驱动器
file()
pipe()
program()
sql()
syslog()
tcp() / tcp6()
udp() / udp6()
unix-dgram()
unix-udram()
usertty()
日志规则配置
log {
source(s1); source(s2); ...
optional_element(filter1|parser1|rewrite1);...
optional_element(filter2|parser2|rewrite2);...
destination(d1); destination(d2); ...
flags(flag1[, flag2...]);
};
LOG FIFO大小计算
log_fifo_size() >= number_of_sources*log_iw_size()
使用日志过滤
filter <identifier> { <filter_type>("<filter_expression>"); };
exp1:
filter demo_filter { host("example1") or host("example2"); };
exp2:
filter <filter-id>
{"<macro-or-template>" operator "<value-or-macro-or-template>"};
exp3:
filter f_pid {"$HOST$PID" eq "$HOST"};
过滤函数
facility()
filter()
host()
level()
match()
message()
netmask()
program()
source()
tags()