每天一个新知识之Linux的日志管理

Linux日志管理与轮替
本文介绍Linux系统中常见的日志文件及其作用,详细解析rsyslogd日志服务的配置与自定义日志,以及logrotate进行日志轮替的方法。包括日志文件的格式、rsyslogd配置、日志轮替的命名规则和配置参数。

一、常见的日志文件

日志文件说明
/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			显示指令执行过程。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值