您现在的位置是:首页 >技术教程 >linux的系统日志网站首页技术教程
linux的系统日志
目录
一、日志文件的产生
日志内容:内核、开机引导、守护进程启动运行的事件和输出
产生过程:系统的syslog组件产生,由rsyslong.srevice和systemd-journald.srevice这2个服务负责记录到轮转创建的日志文件里,然后处理
二、日志文件存放在哪儿
(1)文本日志
- 由rsyslong服务产生;
- 可以用cat、more、tail等命令查看
- 存放在:/var/log/
补充(上图)
/var/log/secure:包含登录相关的。比如用户登录失败的记录、原因
/var/log/wtmp:是二进制文件,用命令查看是乱码。只能用last命令才看得到
/var/log/utmp:是二进制文件,用命令查看是乱码。只能用w和who命令才看得到
/var/log/boot.log:开机时,系统启动服务时,相关的输出
/var/log/demsg:开机时,系统启用硬件时,相关的输出。是二进制文件,用命令查看是乱码,只能用dmesg命令才看得到
(2)二进制日志
- 由systemd-journald服务产生;
- 用cat、more、tail这些命令查看是乱码,只能用journaldctl命令查看;
- 存放在:/run/log/
/run/是内存映射的目录,重启后/run/log/会清空重建,二进制日志会丢失。不过在重启前系统会先把二进制日志记录到“文本日志存放目录/var/log/”下
三、日志存放规则的配置文件
作用:比如,与安全相关的日志都是存放到/var/log/secure文件。这个默认行为就是在配置文件里预设置好的
配置文件:/etc/rsyslog.conf(主配置文件)、/etc/rsyslog.d/*.conf(子配置文件)
主配置文件参数:
# rules #
*.info;mail.none;authpriv.none;cron.none /var/log/messages
#.none表示匹配所有优先级。所有优先级的与邮件、安全、定时任务相关日志信息,都会写到 /var/log/messages
#####除了none,其他优先级如下图
mail.* /var/log/maillog
#所有与邮件相关日志信息,都会写到 /var/log/maillog
authpriv.* /var/log/secure
#所有与安全相关日志信息,都会写到 /var/log/secure
cron.* /var/log/cron
#所有与定时任务相关日志信息,都会写到 /var/log/cron
*.emerg :omusrmsg:*
#所有紧急事件日志,都直接打印在控制台,不记录到日志文件
四、日志轮转
出现问题:系统日志一直都增加,由各种系统服务产生。时间久了,服务器肯定存不下。
比如:
- 定时任务相关的服务,5月15日产生一个日志文件cron-20230515,5月16日又产生cron-20230516;
- 服务启动相关的服务,5月15日产生一个日志文件boot.log-20230515,5月16日又产生boot.log-20230516
解决办法:linux引入了日志轮转的机制来解决这个问题。日志轮转,就是创建新日志文件,删除旧日志文件的过程
具体实现:定时任务cron这个系统服务,每天会运行一次logrotate脚本(/etc/cron.daily/logrotate),脚本调用/etc/logrotate.conf这个配置文件,实现日志轮转 //logrotate脚本运行时只有守护进程,不产生服务
日志轮转配置文件/etc/logrotate.conf:
该文件设置了轮转规则
weekly:每周轮转一次(还有monthly、day、daily)
rotate4:同一个文件最多轮转4次,4次之后就删除该文件(这儿是只保留最近4周的日志文件,之前的旧日志都删了)
dateteext:创建日志文件时,名字以日期命名XXXX-YYYYMD。如mail-20230516
create:删除旧日志时,创建一个新的空日志文件 //今天创建的,那么今天的日志内容会由rsyslong服务或systemd-journald服务写到该空日志文件里
compress:日志文件要压缩,不写表示不压缩
include:包含子配置文件/etc/logrotate.d。要引入自定义轮转规则配置文件,可以在下面加一条include /etc/自定义配置文件
自定义轮转规则:
更多轮转规则参数:
五、分析和监控日志
(1)分析日志
每一条日志文件的内容,都由4部分组成
- 日志记录时间(操作系统时间)
- 日志是那一台主机产生的
- 日志由哪个服务产生 //[1433]是服务对应进程的pid
- 日志详细内容(记录的什么事件)
最新的日志在末尾:每写入一条日志,都写到文件最后
(2)监控日志
tail -f /var/log/日志文件