Linux log日志篇
Linux log日志篇
mengnankkzhou简介
是重要的系统信息文件,记录了重要的系统事件
一般保存在/var/log目录下
1 | vmware-vmsvc-root.1.log |
lastlog
直接使用
1 | lastlog |
查看最后登录用户的日志
1 | ❯ lastlog |
因为是二进制文件,所以不要用cat打印了
直接使用指令就行
boot.log
这里面是系统启动的一些日志
cron
这里面是关于系统定时任务的一些日志记录
message
系统出现故障,首先找这个日志,用来记录系统故障的日志
secure
这里面主要是安全性问题,系统登录ssh等一些列的有关安全的问题,包括密码等
utmp
记录当前登录用户的信息
w who等命令就是记录的他的信息
1 | ❯ w |
日志管理服务
我的localhost使用的是rsyslog
1 | ❯ ps aux | rg "rsyslog" |
使用该命令查看是否在运行
rsyslog是一个后台程序,就是一个日志
/etc/rsyslog.conf
在这个文件里记录要管理的日志有哪些
还有一些规则,日志类型等一系列的东西
在进行这个日志管理的时候,这个服务必须在运行才可以捏
1 | ❯ ps aux | rg "rsyslog"|rg -v "rg" |
反向再过滤一下,就只有我们
rg -v 是反向匹配(挑选出前面不包含的)
其实就相对于非
查看rsyslog服务是否是自启动的
1 | ❯ systemctl list-unit-files | rg "rsyslog" |
发现他是的捏
配置文件
/etc/rsyslog.conf这个文件
- debug
- info
- notice
- warning
- err
- crit
- alert
- emerg
- none
从下面上面,级别是由高到低的,记录的信息越来越多
emerg就是内核都崩溃了
none就是什么也不给记录
实例
修改配置文件
在/var/log/hsp.log下添加文件,看重启是否有信息显示
分类
auth
(Authentication Logs):
- 文件:
/var/log/auth.log
(Debian/Ubuntu) 或/var/log/secure
(RHEL/CentOS) - 作用:记录系统的认证事件,如用户登录、
sudo
提权、SSH 登录尝试等。
syslog
(System Logs):
- 文件:
/var/log/syslog
(Debian/Ubuntu) 或/var/log/messages
(RHEL/CentOS) - 作用:捕捉常规系统事件,除了认证信息外,记录各种系统进程输出的消息。
kern
(Kernel Logs):
- 文件:
/var/log/kern.log
- 作用:记录内核生成的日志信息,如硬件检测、模块加载、内核异常等。
cron
(Cron Jobs Logs):
- 文件:
/var/log/cron.log
(Debian/Ubuntu) 或/var/log/cron
(RHEL/CentOS) - 作用:记录由
cron
调度的任务执行信息,包括定时任务的成功与失败。
boot
(Boot Logs):
- 文件:
/var/log/boot.log
- 作用:记录系统启动过程中的信息,帮助排查启动时发生的问题。
dmesg
(Kernel Ring Buffer Logs):
- 文件:通过命令
dmesg
查看 - 作用:显示内核环缓冲中的信息,特别是与设备驱动、硬件相关的信息。
apache
/nginx
(Web Server Logs):
- 文件:
/var/log/apache2/access.log
,/var/log/nginx/access.log
,/var/log/apache2/error.log
,/var/log/nginx/error.log
- 作用:记录 Web 服务器的访问日志、错误日志,包含每次客户端请求的详细信息。
mysql
(MySQL Logs):
- 文件:
/var/log/mysql.log
或/var/log/mysqld.log
- 作用:记录 MySQL 数据库的查询日志、错误日志以及慢查询日志。
mail
(Mail Logs):
- 文件:
/var/log/mail.log
- 作用:记录邮件服务器的发送和接收信息,帮助管理员监控邮件通信。
Xorg
(X Window System Logs):
- 文件:
/var/log/Xorg.0.log
- 作用:记录与图形界面启动相关的信息,包括图形硬件的状态、驱动加载情况等。
日志轮替
按照一定的策略。保留日志文件。旧的就是删除
使用的是logrotate
配置文件在/etc/logrotate.conf
是一个全局日志轮替规则,当然也可以给某个日志文件指定策略
配置文件中有dateext参数那么就会用日期来做日志文件的参数,只需要删除就可以
没有dateext参数的时候,就会自动改名
比如secure1 secure2
轮替的时候,1会变成2,2又会变成1以此轮替
如果超过默认保存的个数,旧的就会删除掉
自定义的日志轮替规则是最高级的
我们可以自定义
1 | /var/log/wtemp{ |
也可以某个日志文件的轮替规则写到
/etc/logrotate.d目录下单独设置
1 | ❯ z /etc/logrotate.d |
查看例子
1 | ❯ bat bootlog |
发现了bootlog就是单独设置的捏
感觉一般写在这里是比较好的选择
常见的 logrotate
配置参数
-
daily
/weekly
/monthly
/yearly
- 说明:指定日志文件轮替的频率。
- 示例:
daily
表示每天轮替一次日志;weekly
表示每周轮替一次。
-
rotate <count>
- 说明:保留的旧日志文件数量,超出数量的日志文件将被删除。
- 示例:
rotate 5
表示最多保留 5 个历史日志文件。
-
compress
- 说明:启用压缩功能,轮替后的日志文件会使用
gzip
进行压缩。 - 示例:
compress
表示开启压缩,生成.gz
文件。
- 说明:启用压缩功能,轮替后的日志文件会使用
-
compresscmd <command>
- 说明:指定压缩时使用的命令,默认是
gzip
。 - 示例:
compresscmd bzip2
可以指定使用bzip2
进行压缩。
- 说明:指定压缩时使用的命令,默认是
-
uncompresscmd <command>
- 说明:指定解压缩时使用的命令。
- 示例:
uncompresscmd bunzip2
可以指定使用bunzip2
进行解压缩。
-
delaycompress
- 说明:推迟日志压缩,只有在下次轮替时才压缩之前的日志。
- 示例:
delaycompress
常与compress
一起使用,表示日志轮替后不会立即压缩,而是等到下一次轮替时再压缩上一个日志文件。
-
create <mode> <owner> <group>
- 说明:在日志轮替后创建新的日志文件,并指定其权限、所有者和所属组。
- 示例:
create 644 root adm
会创建一个权限为644
,所有者为root
,组为adm
的新日志文件。
-
notifempty
- 说明:如果日志文件为空,则不进行轮替。
- 示例:
notifempty
可避免对空日志文件进行轮替操作。
-
missingok
- 说明:如果日志文件不存在,则跳过而不报错。
- 示例:
missingok
防止logrotate
在找不到日志文件时产生错误。
-
size <size>
- 说明:当日志文件达到指定的大小时进行轮替。
- 示例:
size 100M
表示日志文件达到 100MB 时轮替。
-
dateext
- 说明:在轮替的日志文件名中添加日期后缀。
- 示例:
dateext
会让日志文件的后缀变为形如.20231005
。
-
dateformat <format>
- 说明:自定义日期后缀的格式(与
dateext
一起使用)。 - 示例:
dateformat -%Y%m%d
可以将后缀格式设定为-YYYYMMDD
。
- 说明:自定义日期后缀的格式(与
-
maxsize <size>
- 说明:指定日志文件的最大大小。如果文件超过此大小,会强制进行轮替。
- 示例:
maxsize 500M
表示日志文件超过 500MB 时轮替。
-
postrotate
/prerotate
/endscript
-
说明:定义轮替前(
prerotate
)或轮替后(postrotate
)执行的命令。endscript
用于结束postrotate
或prerotate
块。 -
示例:
1
2
3bash复制代码postrotate
systemctl reload nginx
endscript表示在日志轮替之后,重新加载
1
nginx
服务。
-
-
copytruncate
- 说明:复制当前日志文件,并截断原日志文件,适用于那些在打开日志文件时不能关闭的进程。
- 示例:
copytruncate
会在日志文件轮替时复制当前文件,然后将原文件截断为 0 字节。
-
olddir <directory>
- 说明:将轮替后的日志文件移动到指定的目录中。
- 示例:
olddir /var/log/old
表示轮替后的旧日志文件会被移动到/var/log/old
目录中。
-
mail <address>
- 说明:当日志文件轮替后,将该日志文件通过邮件发送到指定的电子邮箱。
- 示例:
mail admin@example.com
会将轮替后的日志发送给admin@example.com
。
-
nomail
- 说明:禁用邮件功能。
- 示例:
nomail
禁止发送日志文件邮件。
实例:
1 | /var/log/nginx/*.log { |
这个配置的含义:
- 每天轮替
/var/log/nginx/
目录下的日志文件。 - 如果日志文件不存在,跳过轮替,不报错。
- 最多保留 14 个日志文件。
- 轮替后的日志文件进行压缩,但推迟到下一次轮替时再压缩。
- 如果日志文件为空,则不轮替。
- 轮替后创建权限为
640
,所有者为www-data
,所属组为adm
的新日志文件。 - 轮替后执行
systemctl reload nginx
,重新加载 nginx 配置。
直接
1 | vim hsplog |
然后输入就可以了
机制
依赖于定时任务机制crond
在/etc/cron.daily下
1 | ❯ z /etc/cron.daily |
主要是执行logrotate这个
内存日志
是先写到内存里,没在日志文件里
重新启动的时候,内存日志会清空
journalctl
- 无参数查看全部
- -n num查看多少条
- –sine 19:00 --until 19:10:10 起始时间
- -o verbose 详细信息
- PID=1245 _COMM=sshd 查看这些
感觉直接筛选更好
1 | . |
直接出现
over