需先卸载rsyslog、禁用selinux及防火墙514端口限制,再按发行版安装syslog-ng,最后备份并重写精简配置文件以适配集中式日志管理。

如果您希望在Linux系统中部署Syslog-ng以实现集中式日志管理,则需完成安装、服务隔离、配置重写与网络收发适配等关键环节。以下是具体操作步骤:
一、卸载冲突服务并关闭防护机制
syslog-ng无法与rsyslog共存,且SELinux或防火墙可能阻断514端口通信。必须先解除这些限制。
1、停止并禁用rsyslog服务:systemctl stop rsyslog && systemctl disable rsyslog
2、临时关闭SELinux:setenforce 0
3、永久禁用SELinux:编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled
4、关闭firewalld或开放514端口:firewall-cmd --permanent --remove-port=514/tcp && firewall-cmd --permanent --remove-port=514/udp && firewall-cmd --reload
二、根据发行版安装Syslog-ng
不同包管理器对应不同安装命令,需匹配当前系统类型执行。
1、对于基于RHEL/CentOS/AlmaLinux/Rocky Linux的系统:yum install -y syslog-ng 或 dnf install -y syslog-ng
2、对于Debian/Ubuntu系统:apt update && apt install -y syslog-ng-core
3、验证安装结果:syslog-ng --version 应输出版本号(如3.38.1)
三、备份并重建主配置文件
默认配置文件功能冗余且不适用于集中场景,需覆盖为精简可维护结构。
1、备份原配置:mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.BAK
2、创建新配置文件:touch /etc/syslog-ng/syslog-ng.conf
3、写入基础框架头:echo '@version: 3.38' > /etc/syslog-ng/syslog-ng.conf
4、追加全局选项块:cat >> /etc/syslog-ng/syslog-ng.conf
options {
keep-hostname(yes);
chain-hostnames(no);
time-reap(30);
mark-freq(10);
use-dns(no);
dns-cache(no);
create-dirs(yes);
};
EOF
四、配置日志收集器(服务端)
服务端需监听TCP/UDP双协议514端口,接收来自各客户端的日志流,并按主机名分离存储。
1、追加网络源定义:cat >> /etc/syslog-ng/syslog-ng.conf
source s_network {
syslog(transport(tcp) port(514) max-connections(200));
syslog(transport(udp) port(514));
};
EOF
2、定义目标目录与文件模板:cat >> /etc/syslog-ng/syslog-ng.conf
destination d_byhost {
file("/var/log/syslog-ng/${HOST}/messages" create-dirs(yes) owner("root") group("root") perm(0644));
};
EOF
3、绑定源与目标:cat >> /etc/syslog-ng/syslog-ng.conf
log { source(s_network); destination(d_byhost); };
EOF
五、配置日志发送端(客户端)
客户端需将本地日志通过TCP协议转发至收集器IP,避免UDP丢包并提升可靠性。
1、确认服务端IP地址(例如192.168.10.100),然后追加远程目标定义:cat >> /etc/syslog-ng/syslog-ng.conf
destination log_server { tcp("192.168.10.100" port(514)); };
EOF
2、启用本地日志源并路由至远端:cat >> /etc/syslog-ng/syslog-ng.conf
source s_local { system(); internal(); };
log { source(s_local); destination(log_server); };
EOF
六、启动并验证服务状态
配置完成后需重载服务并检查监听端口与日志路径是否生效。
1、启动syslog-ng并设为开机自启:systemctl enable --now syslog-ng
2、确认514端口处于LISTEN状态:ss -tuln | grep ':514'
3、查看服务运行日志:journalctl -u syslog-ng -n 20 -f
4、手动触发一条测试日志:logger -p local0.info "syslog-ng client test"










