操作步骤
Server端配置syslog-ng
- 安装syslog-ng
sudo yum install epel-release -y && sudo yum install syslog-ng -y
- 配置syslog-ng
在syslog-ng的配置文件中,有5种不同的项目,每个项目以1个特殊关键词开头:
- options
- 用来调节syslog-ng的守护进程。
- source
- 告知syslog-ng从什么地方收集日志。source内容可以包括Unix套接字、TCP或UDP套接字、文件或管道。
- destination
- 用来决定syslog-ng将向哪些地方发送日志,可以指定为文件、管道、Unix套接字、TCP或UDP套接字、TTY或程序等。
- filter
- 结合source、destination和filter使用,选择syslog程序和日志级别。
- log
- 将以上关键字和log结合使用,可以精确定义消息日志保存的地方。
- 将以上关键字和log结合使用,可以精确定义消息日志保存的地方。
cd /etc/syslog-ng && sudo cp syslog-ng.conf syslog-ng.conf.old
sudo vi syslog-ng.conf
# add
# add a log source
source s_remote {
tcp(ip("192.168.0.104") port(20514) max-connections(500));
};
# collect log from remote host
destination d_remote {
# write log file to hostname path,log file named by y.m.d.log
file("var/log/syslog-ng/${HOST}/${YEAR}.${MONTH}.${DAY}.log" perm(0644));
};
# add to log
log [
source(s_remote);
destination(d_remote);
};
- 修改日志路径的SELinux策略
semanage fcontext -a -t syslog-ng "/var/log/syslog-ng(/.*)?" && restorecon /var/log/syslog-ng
- 添加防火墙
firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.1/24 port port=20514 protocol=tcp accept' --permanent
- 启动服务
sudo systemctl start syslog-n
- 如果启动失败
使用命令/usr/sbin/syslog-ng -F -p /var/run/syslogd.pid
查看具体的错误提示
Agent端配置syslog-ng
安装
sudo yum install epel-release -y && sudo yum install syslog-ng -y
修改配置文件
cd /etc/syslog-ng/ && sudo cp syslog-ng.conf syslog-ng.conf.old
sudo vi syslog-ng.conf
# add
# add a log source
source s_net {
# tell syslog-ng read log from /dev/log;/dev/log link to /var/run/log
unix-dgram("/dev/log");
# if use systemctl start syslog-ng start faild,use this
# unit-stream("/dev/log");
# create message by internal
internal();
};
# send log to remote syslog server
destination d_net {
tcp("192.168.0.104" port(20514) max-connections(10));
};
# add to log
log [
source(s_net);
destination(d_net);
};
- 启动服务
sudo systemctl start syslog-ng
配置加密服务
为保证日志传输的安全性,为syslog-ng日志的传递设置加密服务。
使用服务器生成的公钥,对client端传送的日志文件进行加密,所有client端使用相同的公钥进行加密。
- 在server端生成加密证书和私钥
# cert dir
cd /etc/syslog-ng && sudo mkdir cert && cd cert
sudo openssl -x509 -nodes -days 365 -newkey rsa:2048 -outkey syslog_pri.key -out syslog_pub.crt
- 配置server的syslog-ng.conf文件
# destination在tcp或udp条目中添加
tcp(ip("192.168.0.104") port(20514) tlc(key-file("/etc/syslog-ng/cert/syslog_pri.key") cert-file("/etc/syslog-ng/cert/syslog_pub.crt") peer-verify(optional-untrusted)));
- 将公钥分别复制到client端的 /etc/syslog-ng/cert 目录中,并生成哈希名的链接
openssl -x509 -noout -hash -in syslog_pub.crt && ln -s syslog_pub.crt xxxx.0
- 配置client端的syslog-ng.conf文件
tcp("192.168.0.104" port(20514) tlc(ca-dir("/etc/syslog-ng/cert")));
- 配置完成后,对server和client分别重启syslog-ng服务
sudo systemctl restart syslog-ng
注意
如果系统开启了SELinux,在使用tcp或udp进行日志传输时,选择端口时要注意SELinux中对syslog-ng端口的设定,如果使用自定的端口,还需要将端口加入到SELinux中。
semanage port -a -t syslogd_port_t -p tcp 30514