- 首页 >
- 问答 >
-
智能运维 >
- Linux中FetchLinux的日志管理如何进行
Linux中FetchLinux的日志管理如何进行
小樊
40
2025-11-28 20:51:40
FetchLinux日志管理实操指南
一 核心组件与日志位置
- 现代 Linux 使用 systemd-journald 统一采集日志,配合 rsyslog 写入持久化文件,常见路径与用途如下:
- 系统日志:/var/log/syslog(Debian/Ubuntu),/var/log/messages(RHEL/CentOS)
- 安全认证:/var/log/auth.log(Debian/Ubuntu),/var/log/secure(RHEL/CentOS)
- 内核日志:/var/log/kern.log,以及 dmesg 查看内核环缓冲区
- 服务与应用:各自配置写入 /var/log/ 下对应目录(如 nginx、apache2、mysql 等)
- 说明:若系统采用 journald,默认运行时日志位于 /run/log/journal;若启用持久化存储,会在 /var/log/journal 保留历史日志。
二 查看与检索日志
- 使用 journalctl(systemd 日志)
- 查看全部:journalctl
- 按服务:journalctl -u <service_name>
- 实时跟踪:journalctl -f
- 按时间:journalctl --since “2025-11-28 09:00:00” --until “2025-11-28 18:00:00”
- 按进程:journalctl _PID=
- 按关键字:journalctl | grep “keyword”
- 故障定位常用:journalctl -xe
- 查看传统日志文件
- 实时查看:tail -f /var/log/syslog
- 分页查看:less /var/log/messages
- 关键字检索:grep -i error /var/log/messages
- 查看内核日志
- 小技巧
- 结合时间过滤与关键字定位异常最有效率(如先限定时间段,再 grep 关键字)。
三 日志轮转与保留策略
- 使用 logrotate 做按日/按大小轮转、压缩与保留
- 常见配置片段(/etc/logrotate.d/ 应用名):
- /var/log/myapp.log {
- daily
- rotate 7
- compress
- missingok
- notifempty
- create 0644 root root
- postrotate
- systemctl reload myapp >/dev/null 2>&1 || true
- endscript
- }
- 若使用 journald 持久化,可配置 /etc/systemd/journald.conf
- 常用项:Storage=persistent(持久化到磁盘)、SystemMaxUse=、MaxRetentionSec=(控制占用与保留时长)
- 使配置生效:sudo systemctl restart systemd-journald
- 清理旧日志的兜底方案(不建议替代 logrotate)
- 示例:删除 30 天前 的自定义日志并压缩大文件
- find /var/log/custom_logs -name “*.log” -type f -mtime +30 -delete
- find /var/log/custom_logs -name “*.log” -type f -size +100M -exec gzip {} ;
四 日志级别与采集路由
- rsyslog 日志级别(由低到高,数值越小越详细)
- 0 debug、1 info、2 notice、3 warning、4 err、5 crit、6 alert、7 emerg
- 配置示例:将 warning 及以上 的内核日志单独记录
- 在 /etc/rsyslog.conf 或 /etc/rsyslog.d/*.conf 添加:kern.warning /var/log/kernel_warn.log
- 生效:sudo systemctl restart rsyslog
- 应用级日志级别
- 示例(Nginx):在 /etc/nginx/nginx.conf 中设置 error_log /var/log/nginx/error.log debug; 并重启服务
- 其他程序通常在自身配置文件或环境变量中设置日志级别。
五 集中式日志与审计扩展
- 远程日志(rsyslog)
- 服务端(接收):在 /etc/rsyslog.conf 启用模块与端口
- module(load=“imudp”);input(type=“imudp” port=“514”)
- module(load=“imtcp”);input(type=“imtcp” port=“514”)
- 按主机归档模板:$template RemoteHost,“/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log”;. ?RemoteHost
- 客户端(发送):echo “. @@log-server.example.com:514” | sudo tee -a /etc/rsyslog.conf(TCP),或 @ 表示 UDP
- 大规模分析与可视化
- ELK Stack(Elasticsearch、Logstash、Kibana) 或 Filebeat + ES/Kibana 做解析、索引与展示
- 用户行为与文件访问审计
- 登录审计:在 /var/log/auth.log 中检索 Failed password、统计 sshd 登录次数与来源
- 文件访问审计:使用 auditd
- 跟踪文件打开:sudo auditctl -a exit,always -F arch=b64 -S open -F auid!=unset -k open_file
- 查看审计日志:ausearch -k open_file