首先检查rsyslog(CentOS默认的Syslog实现)服务是否处于运行状态。使用以下命令查看服务状态:
sudo systemctl status rsyslog
若服务未运行(显示“inactive”或“failed”),需启动服务并设置开机自启:
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
启动后再次确认状态,确保服务正常运行。
Syslog的核心配置文件为/etc/rsyslog.conf及/etc/rsyslog.d/目录下的子配置文件(如50-default.conf)。需重点核查以下内容:
*.* @remote_host:514表示将所有日志通过UDP发送到远程主机),无多余字符或缺失参数;imudp(UDP)或imtcp(TCP)模块已启用(配置文件中无#注释);/var/log/messages、/var/log/secure)是否存在且可写。sudo systemctl restart rsyslog
若需将日志发送到远程服务器,需确保本地主机与远程服务器之间的网络连通性:
ping命令检查远程服务器IP是否可达;telnet或nc命令测试Syslog端口(默认UDP 514,TCP 514)是否开放:telnet remote_server_ip 514
# 或
nc -zv remote_server_ip 514
若端口不可达,需检查远程服务器防火墙设置或网络设备配置。
CentOS的防火墙(firewalld)可能阻止Syslog流量。需开放对应端口:
sudo firewall-cmd --permanent --add-port=514/udp
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --add-port=514/tcp
sudo firewall-cmd --reload
若使用iptables,需添加类似规则:
sudo iptables -A INPUT -p udp --dport 514 -j ACCEPT
sudo service iptables save
通过系统日志定位故障根源,常用命令:
sudo tail -f /var/log/messages # 一般系统日志
sudo tail -f /var/log/syslog # 部分系统可能使用此文件
sudo tail -f /var/log/secure # 认证相关日志
grep查找特定错误(如“error”“failed”):sudo grep "error" /var/log/messages
sudo grep "failed" /var/log/secure
sudo journalctl -xe # 查看最近日志及详细信息
sudo journalctl -u rsyslog # 查看rsyslog服务日志
磁盘空间不足会导致日志无法写入。使用以下命令检查磁盘使用情况:
df -h
若/var分区(通常存储日志)使用率超过80%,需清理无用文件(如旧日志):
# 清理/var/log目录下超过7天的日志
sudo find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
# 或使用logrotate工具(见下一步)
若系统启用SELinux,可能限制Syslog访问日志文件。需确认SELinux状态:
getenforce
rsyslog访问日志目录:sudo chcon -R -t var_log_t /var/log
audit2allow工具生成自定义策略:sudo ausearch -m avc -ts recent | audit2allow -M mypol
sudo semodule -i mypol.pp
通过logger命令生成测试日志,验证Syslog是否正常工作:
logger "This is a test log message from localhost"
然后查看日志文件是否记录该消息:
sudo tail -f /var/log/messages
若未记录,需重新检查服务状态、配置文件及权限设置。
日志轮转(logrotate)可防止日志文件过大,但配置错误可能导致日志丢失。检查/etc/logrotate.d/rsyslog文件(默认配置示例):
/var/log/messages {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
}
daily(每日轮转)、rotate 7(保留7天)、compress(压缩旧日志)、create(创建新日志文件并设置权限)。sudo logrotate -vf /etc/logrotate.d/rsyslog
若轮转失败,需调整配置或修复日志文件权限。