文章目录
一、常见的日志文件
| 日志文件 | 说明 |
|---|---|
| /var/log/cron | 系统定时任务相关日志 |
| /var/log/cups/ | 记录打印信息的日志 |
| /var/log/dmes | 记录系统在开机时内核自检的信息 |
| /var/log/btmp | 记录错误登录日志.日志格式为二进制文件不能当作文本查看,需要使用lastb命令查看 |
| /var/log/lastlog | 记录所有用户最后一次登录时间的日志,二进制文件需要使用lastlog命令查看 |
| /var/log/maillog | 记录邮件信息 |
| /var/log/message | 记录系统重要信息的日志,linux中绝大多数重要的日志信息都会被写入这个日志文件 |
| /var/log/secure | 记录验证和收权信息,涉及账户和密码的程序都会被记录 |
| /var/log/wtmp | 永久记录所有用户的登录\注销信息,同时记录系统的启动\重启\关机时间.二进制文件需要使用last命令来查看. |
| /var/run/utmp | 记录当前已经登录的用户信息,无法直接查看需要使用w,who,users等命令拉查询 |
| /var/log/httpd/ | RPM包安装的apache服务的默认日志目录 |
| /var/log/mail/ | RPM包安装的邮件服务的额外日志目录 |
| /var/log/samba/ | RPM包安装的samba服务的日志目录 |
| /var/log/sssd/ | 守护进程安全服务目录 |
二、日志服务rsyslogd
自CentOS6.X开始,Linux的日志服务已经由rsyslogd取代了原来的syslogd服务。
2.1日志文件的格式
在Linux中只要是由日志服务rsyslogd记录的日志文件,基本格式包含以下4列:
- 事件产生的时间
- 发生时间的服务器的主机名
- 产生时间的服务名或程序名
- 事件的具体信息
2.2 rsyslogd日志服务的配置文件
2.2.1配置文件格式(/etc/rsyslog.conf)
[root@localhost ~]# cat /etc/rsyslog.conf
...
local7.* /var/log/boot.log
#服务名称[连接符号]日志等级 日志记录的位置
...
- 常用的服务名称
| 服务名称 | 说明 |
|---|---|
| auth(LOG_AUTH) | 安全内核认证的相关消息 |
| authpriv(LOG_AUTHPRIV) | 安全和认证的相关消息(私有) |
| cron(LOG_CRON) | 系统定时任务cront和at产生的日志 |
| daemon(LOG_DAEMON) | 和各个守护进程相关的日志 |
| ftp(LOG_FTP) | ftp守护进程产生的日志 |
| kern(LOG_KERN) | 内核产生的日志(非用户进程产生的日志) |
| local0-local7(LOG_LOCAL0-7) | 本地使用预留的服务 |
| lpr(LOG_LPR) | 打印产生的日志 |
| mail(LOG_MAIL) | 邮件收发的消息 |
| news(LOG_NEWS) | 与新闻服务器相关的日志 |
| syslog(LOG_SYSLOG) | 由syslogd服务产生的日志消息 |
| user(LOG_USER) | 用户等级类别的日志消息 |
| uucp(LOG_UUCP) | uucp子系统的日志信息 |
-
连接符号
连接符号 说明 . 代表只要比后面的等级高的日志信息都记录下来 .= 代表之记录所需等级的日志,其余等级日志不记录 .! 除了该等级的日志外,其余日志都记录 -
日志等级
日志等级 说明 debug(LOG_DEBUG) 一般的调试信息说明 info(LOG_INFO) 基本的通知信息 notice(LOG_NOTICE) 普通信息,但是由一定的重要性 warning(LOG_WARNING) 警告信息,但是还不会影响到服务或系统的运行 err(LOG_ERR) 错误信息,可以影响到服务或系统的运行 crit(LOG_CRIT) 临界状况信息,比err等级还要严重 alert(LOG_ALERT) 警告状态信息,比crit还要严重 emerg(LOG_EMERG) 疼痛等级信息,系统已经无法使用了 * 代表所有的日志等级
2.2.2 自定义日志
[root@localhost ~]# cat /etc/rsyslog.conf
# rsyslog configuration file
...
*.crit /var/log/alert.log #把所有临界日志都保存在/var/log/alert.log中
[root@localhost ~]# service rsyslog restart
Redirecting to /bin/systemctl restart rsyslog.service
三、日志轮替
3.1 日志文件轮替的命名规则
日志轮替最主要的作用就是把旧的日志文件移动并重命名,同时建立新的空日志文件,当旧的日志问价你超出保存范围之后就会进行删除。在此过程中对旧的日志文件重命名需要遵循一定的规则,该规则主要依赖于/etc/logrotate.conf配置文件中的dateext参数:
- 如果配置文件中由dateext参数,那么日志会用日期来作为日志文件的后缀
- 如果配置文件中没有dateext参数,那么日志文件将会自动该命,以数字填充进行重命名。
3.2 logrotate配置文件
[root@localhost ~]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly #日志文件每周进行一次轮替
# keep 4 weeks worth of backlogs
rotate 4 #保存4个日志文件,也就是说如果进行了5次轮替将会删除第一个备份的日志文件
# create new (empty) log files after rotating old ones
create #日志轮替时自动创建新的日志文件
# use date as a suffix of the rotated file
dateext #使用日期作为日志轮替文件的后缀
# uncomment this if you want your log files compressed
#compress #日志文件是否压缩
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d #读取这个目录中所有子配置文件
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp { #以下参数支队/var/log/wtmp有效
monthly #每月进行一次日志轮替
create 0664 root utmp #建立新的日志文件,权限是0664,所有者root,所属组utmp
minsize 1M #日志文件最小轮替大小1MB,只有超过1MB的日志文件才会进行轮替
rotate 1 #仅保留统一个日志备份
}
/var/log/btmp {
missingok #如果日志不存在,则忽略该日志的告警信息
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
3.3 lograotate配置文件主要参数
| 参数 | 说明 |
|---|---|
| daily | 日志的切轮替周期是每天 |
| weekly | 日志的轮替周期是每周 |
| monthly | 日志的轮替周期是每月 |
| totate 数字 | 保留日志文件备份的个数,0表示不备份 |
| compress | 日志轮替时是否压缩旧日志文件 |
| create mode owner group | 建立新日志,同时指定新日志的权限与所有者和所属组 |
| mail address | 当日志论题是,输出内容通过邮件发送到指定的邮件地址 |
| missingok | 如果日志文件不存在则忽略该日志的告警信息 |
| notifempty | 如果日志文件为空,则不进行日志轮替 |
| minsize 大小 | 日志文件轮替的最小值 |
| size | 日志只有大于指定大小才进行日志轮替而不是按照时间轮替 |
| dateext | 使用日期作为日志轮替文件的后缀 |
| sharedscripts | 使用此关键字后脚本只执行一次 |
| prerotate/endscript | 在日志轮替之前执行脚本命令,endscript表示prerotate脚本结束 |
| postrotate/endscript | 在日志轮替之后执行的脚本命令。 |
3.4 自定义日志轮替
[root@localhost ~]# chattr +a /var/log/alert.log
[root@localhost ~]# vi /etc/logrotate.d/alter
[root@localhost ~]# cat /etc/logrotate.d/alter
/var/log/alert.log{
weekly #每周轮替一次
rotate 6 #保留6个备份
sharedscripts #以下命令只执行一次
prerotate #日志轮替之前执行
/usr/bin/chattr -a /var/log/alert.log
endscript #脚本借宿
sharedscripts
postrotate
/usr/bin/chattr +a /var/log/alert.log
sharedscripts
postrotate
/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) &>/dev/null
endscript
#重启rsyslog服务
}
3.5 logrotate命令
Linux logrotate命令用于管理记录文件。使用logrotate指令,自动替换,压缩,删除和邮寄记录文件,每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。
logrotate [选项] 配置文件名
#选项
-d 详细显示指令执行过程,便于排错或了解程序执行的情况。
-f 强行启动记录文件维护操作,纵使logrotate指令认为没有需要亦然。
-s<状态文件> 使用指定的状态文件。
-v 显示指令执行过程。
Linux日志管理与轮替
本文介绍Linux系统中常见的日志文件及其作用,详细解析rsyslogd日志服务的配置与自定义日志,以及logrotate进行日志轮替的方法。包括日志文件的格式、rsyslogd配置、日志轮替的命名规则和配置参数。
1012

被折叠的 条评论
为什么被折叠?



