CentOS日志消息如何管理
小樊
37
2025-12-09 17:05:29
CentOS 日志消息管理
一 核心组件与日志位置
- 系统日志由 rsyslog 负责写入本地文件,常见文件包括:/var/log/messages(一般系统消息)、/var/log/secure(认证与安全事件)、/var/log/cron(定时任务)、/var/log/maillog(邮件)、以及服务目录如 /var/log/httpd/、/var/log/nginx/。部分系统还可能使用 /var/log/syslog。内核环缓冲由 dmesg 查看。使用 journalctl 可统一查询 systemd 日志(如:journalctl -u nginx.service、journalctl -f 实时跟踪)。审计日志位于 /var/log/audit/audit.log(若启用 auditd)。
二 查看与检索
- 常用命令速查:
- 查看全部系统日志:journalctl
- 按服务查看:journalctl -u <service_name>
- 实时跟踪:journalctl -f
- 查看本次启动:journalctl -b
- 按时间过滤:journalctl --since “2025-12-09 00:00:00”
- 查看内核消息:dmesg | less
- 查看传统日志文件:tail -f /var/log/messages、tail -f /var/log/secure
- 审计日志:tail -f /var/log/audit/audit.log
- 建议结合时间窗口与关键字(如 error、fail、timeout)进行定位,必要时配合 grep 过滤。
三 配置与转发
- rsyslog 规则与分类:主配置 /etc/rsyslog.conf 与 /etc/rsyslog.d/*.conf。典型规则示例:
- 将除邮件、认证、定时任务外的信息级日志写入 messages:
- *.info;mail.none;authpriv.none;cron.none /var/log/messages
- 认证相关单独记录:
- authpriv. /var/log/secure*
- 自定义按程序名分流(示例:将 httpd 的错误日志单独保存并停止后续处理):
- if $programname == ‘httpd’ and $syslogseverity <= ‘error’ then /var/log/httpd/httpd_errors.log
- & stop
- 远程日志:将日志发送到集中服务器(UDP/TCP 514)。示例:
- UDP:“. @remote_log_server:514”
- TCP(更可靠):“. @@remote_log_server:514”
- 修改后重启服务:systemctl restart rsyslog
- 安全与合规:对敏感信息进行脱敏,传输与存储加密(如 rsyslog 的 TLS 转发),访问权限最小化(RBAC),并保留审计追踪所需的完整性。
四 轮转与清理
- 使用 logrotate 做自动轮转与压缩(全局 /etc/logrotate.conf,应用配置 /etc/logrotate.d/)。示例(messages):
- /var/log/messages {
- daily
- rotate 7
- compress
- delaycompress
- missingok
- notifempty
- create 0640 root utmp
- postrotate
- /usr/bin/killall -HUP syslogd
- endscript
- }
- 手动触发轮转(调试/应急):logrotate -vf /etc/logrotate.conf 或针对某应用:logrotate -vf /etc/logrotate.d/nginx
- 清理 systemd 日志(journald):
- 查看占用:journalctl --disk-usage
- 按时间保留:journalctl --vacuum-time=7d
- 按大小保留:journalctl --vacuum-size=500M
- 限制总大小:在 /etc/systemd/journald.conf 设置 SystemMaxUse=100M,然后 systemctl restart systemd-journald
- 应急清理单个大日志(尽量使用不中断写入的方式):
- 清空内容但保留 inode 与权限:> /var/log/messages 或 truncate -s 0 /var/log/messages
- 谨慎删除后重建:rm -f file && touch file(确保服务会自动重开日志文件)
- 风险提示:清理前先备份关键日志;避免直接删除正在写入的日志文件;生产环境优先依赖 logrotate/journald 策略而非手工删除。
五 集中化与可视化
- 小规模集中:使用 rsyslog 将日志统一发到远程日志服务器,便于统一留存与审计。
- 大规模与检索分析:部署 ELK Stack(Elasticsearch、Logstash、Kibana) 或 Grafana Loki 等方案,实现日志的采集、索引、搜索与可视化;ELK 功能全面但资源占用较高,Loki 更轻量,适合云原生场景。