Linux笔记之系统日志
Linux系统日志是系统管理员监控、排查和调试的重要工具。日志记录系统和服务的运行信息,存储在系统的特定位置并通过工具进行管理。本章将详细讲解日志的查看与管理、日志轮转与压缩。
一、Linux系统日志概述
1、什么是系统日志
系统日志是Linux系统记录系统事件和服务运行信息的文本文件,主要包括以下内容:
- 内核日志:记录系统启动、硬件信息等(如
dmesg
)。 - 系统日志:记录系统服务和用户活动(如
syslog
)。 - 应用日志:记录应用程序运行的相关信息。
二、日志的存储位置
Linux的日志文件主要存储在/var/log
目录下:
- /var/log/syslog:存储通用系统日志信息(Debian/Ubuntu)。
- /var/log/messages:存储系统服务相关日志(Red Hat/CentOS)。
- /var/log/dmesg:存储内核启动信息。
- /var/log/auth.log:记录用户认证相关日志。
- /var/log/boot.log:记录系统启动日志。
- /var/log/kern.log:记录内核相关日志。
- /var/log/secure:记录安全相关事件(如登录、认证)。
三、日志查看与管理
1、查看日志文件
使用cat
、more
、less
等工具可以直接查看日志文件。例如:
-
查看
syslog
日志:sudo cat /var/log/syslog
-
分页查看
auth.log
日志:sudo less /var/log/auth.log
2、使用journalctl
查看日志
journalctl
是systemd
管理的系统日志查看工具,提供更强大的过滤和格式化功能。
基本命令
-
查看所有日志:
journalctl
输出结果示例:
-- Logs begin at Mon 2024-11-11 09:00:00 CST, end at Sat 2024-11-18 12:00:00 CST. -- Nov 18 12:00:01 hostname systemd[1]: Starting Session 1 of user root. Nov 18 12:00:01 hostname CRON[1234]: (root) CMD (/usr/bin/updatedb)
-
查看实时日志:
journalctl -f
过滤日志
-
按时间过滤:
查看当天的日志:journalctl --since "today"
-
按服务过滤:
查看nginx
服务的日志:journalctl -u nginx
-
按内核日志过滤:
journalctl -k
3、使用dmesg
查看内核日志
dmesg
用于查看内核环形缓冲区中的信息,通常包含启动信息和硬件日志。
-
查看完整内核日志:
dmesg
-
实时查看内核日志:
dmesg -w
-
筛选特定关键词:
查看与网络相关的日志:dmesg | grep -i net
四、日志轮转与压缩
1、什么是日志轮转
日志轮转是一种管理日志文件大小的机制。通过轮转,旧日志文件会被重命名或压缩,新的日志记录写入新的文件。
- 轮转文件命名规则:
/var/log/syslog.1
、/var/log/syslog.2.gz
。 - 压缩方式:旧日志通常压缩为
.gz
格式以节省空间。
2、日志轮转工具
Linux系统使用logrotate
工具自动实现日志轮转。
logrotate
配置文件
- 全局配置:位于
/etc/logrotate.conf
。 - 服务配置:位于
/etc/logrotate.d/
目录下。
3、logrotate
命令示例
配置文件内容示例
以/var/log/nginx
日志轮转为例:
/var/log/nginx/*.log {
daily # 每天轮转
rotate 7 # 保留7个日志文件
compress # 压缩旧日志
delaycompress # 延迟一轮后再压缩
missingok # 如果日志文件缺失,不报错
notifempty # 如果日志文件为空,不轮转
create 0640 nginx adm # 创建新日志文件
postrotate # 轮转后执行操作
systemctl reload nginx > /dev/null
endscript
}
手动执行日志轮转
-
测试配置文件:
sudo logrotate -d /etc/logrotate.conf
-
强制执行日志轮转:
sudo logrotate -f /etc/logrotate.conf
输出结果示例:
rotating pattern: /var/log/nginx/*.log after 1 days (7 rotations)
...
compressing log with: /bin/gzip
renaming /var/log/nginx/access.log.1 to /var/log/nginx/access.log.2.gz
五、小结
通过本章学习,你已经掌握了以下内容:
-
日志查看与管理:
- 使用
journalctl
、dmesg
、日志文件直接查看系统日志。 - 通过过滤条件精准定位特定日志信息。
- 使用
-
日志轮转与压缩:
- 使用
logrotate
实现自动化日志管理,避免日志占用过多磁盘空间。
- 使用
日志是Linux系统的重要组成部分,熟练掌握日志管理技能,可以更高效地维护和排查系统问题。