<p>Apache需通过logger管道将日志送入rsyslog,再由rsyslog转发至远程服务器;配置包括修改ErrorLog/CustomLog为logger命令、在rsyslog.d中添加local6.* @@IP:514转发规则、远程端启用imtcp与端口监听,并开放防火墙514端口。</p>

Apache 本身不直接支持 syslog 协议传输日志,需借助 logger 工具将日志通过管道(|)送入系统 syslog 守护进程(如 rsyslog),再由 rsyslog 负责转发至远程服务器。核心在于“Apache → logger → rsyslog → 远程 syslog 服务器”的链路配置。
修改 Apache 日志输出方式为管道
编辑 Apache 主配置文件(如 /etc/httpd/conf/httpd.conf 或虚拟主机配置),将默认文件写入改为调用 logger:
-
ErrorLog 改为:
ErrorLog "|/usr/bin/logger -t apache_error -p local6.err" -
CustomLog 改为:
CustomLog "|/usr/bin/logger -t apache_access -p local6.info" combined
说明:-t 指定日志标识符便于识别;-p local6.* 使用自定义 facility(推荐 local0–local7 中未被系统占用的,如 local6),避免与系统日志冲突;确保 logger 命令路径正确(可用 which logger 确认)。
配置 rsyslog 转发到远程服务器
在 /etc/rsyslog.d/ 下新建配置文件(如 apache-remote.conf),添加转发规则:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 若使用 TCP(推荐,可靠、防丢包):
local6.* @@192.168.10.100:514 - 若使用 UDP(轻量但不可靠):
local6.* @192.168.10.100:514
其中 192.168.10.100 替换为你的远程 syslog 服务器 IP,端口默认为 514。注意双 @ 表示 TCP,单 @ 表示 UDP。保存后执行 systemctl restart rsyslog 生效。
确保远程服务器已启用接收功能
远程 syslog 服务器(运行 rsyslog)需开启网络接收:
- 编辑
/etc/rsyslog.conf,取消以下两行注释: -
$ModLoad imtcp和$InputTCPServerRun 514(TCP) - 或
$ModLoad imudp和$UDPServerRun 514(UDP) - 重启远程 rsyslog:
systemctl restart rsyslog
防火墙需放行 UDP/TCP 514 端口(如 firewall-cmd --add-port=514/udp --permanent)。
验证与排错要点
发送测试日志并检查链路是否通畅:
- 手动触发一条日志:
logger -t test -p local6.info "apache test log" - 在客户端执行
journalctl -u rsyslog -n 20 -f查看本地 rsyslog 是否收到 - 在远程服务器执行
tail -f /var/log/messages或对应接收路径,确认是否抵达 - 检查 Apache 错误日志(
/var/log/httpd/error_log)有无管道执行失败报错,例如 “Permission denied” 可能因 SELinux 限制,可临时设为 permissive 测试

















