温馨提示×

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
  • 查看内核日志
    • 查看全部:dmesg
    • 实时跟踪:dmesg -w
  • 小技巧
    • 结合时间过滤与关键字定位异常最有效率(如先限定时间段,再 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 debug1 info2 notice3 warning4 err5 crit6 alert7 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

0