Linux-系统管理-日志管理

14 篇文章 0 订阅

日志管理

1. 常用日志

日志服务:rsyslogd
/var/log
常见的日志文件:

日志文件说明
/var/log/cron记录系统定时任务相关信息
/var/log/cpus记录打印信息的日志
/var/log/dmesg记录系统再开机是内核自检的信息,也可以通过dmesg目录查看
/var/log/btmp记录等罗错误日志,这是个二进制文件,只能通过命令lastb查看
/var/log/lastlog记录系统中所有用户最后一次等罗时间的日志,二进制文件,通过lastlog命令查看
/var/log/maillog记录邮件信息
/var/log/message记录系统重要信息的日志,如果系统出问题,首先要检查这个日志
/car/log/secure记录验证和授权的信息,只要涉及账户和密码的程序都会记录
/var/log/wtmp永久记录所有用户的注销、登录信息,启动、重启、关机等,二进制,使用last命令查看
/var/run/wtmp记录当前已经登录的用户信息,二进制,通过w、who、users等命令查询

配置文件etc/rsyslog

2. 日志轮替

/etc/logrotate

先来个题外话:
kill -HUP pid号,可以再不重启的情况下重新加载配置文件

如果我们想把日志加入到轮替当中,有两个办法:

  • 直接在这个配置文件中加入配置项即可
  • 在/etc/logrotate.d目录下面自己创建脚本文件,注意要按照对应格式来。

logrotate的一些配置项:

参数参数说明
daily日志的轮替周期是每天,相当于每天会重新生成一个日志文件
weekly日志的轮替周期是每周
monthly日志的轮替周期为每个月
rotate 数字表示保留的文件个数
compress日志轮替时,旧的日志进行压缩
create mode owner group建立新的日志,指定权限、用户、组,mode代表权限,比如:
create 0600 root utmp
missingok如果日志不存在,则忽略该日志的警告信息
notifempty如果日志为空,组不进行日志轮替
minsize 大小日志轮替的最小值,也就是日志一定要达到这个最小值才会轮替,否则时间到了也不会轮替
size 大小日志只有大于指定大小才会进行轮替,而不是按照时间轮替
dateext使用日期做为日志轮替的文件后缀,比如:message-20220107
sharedscripts执行一次这个关键字后面的脚本
prerotate/endscript在日志轮替之前执行脚本命令
postrotate/endscript在日志轮替之后执行脚本命令

有了上面的配置说明,我们来解读一下一些基本的配置:

[wuqian@localhost ~]$ vim /etc/logrotate.conf 

# 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 {
    monthly
    # 每月轮替,注意,如果在这里加入了日志轮替周期,则上面的全局限制会失效
    create 0664 root utmp
    # 创建权限为0664,属主为root,数组为utmp的日志文件
        minsize 1M
        # 日志要超过1M才会轮替
    rotate 1
    # 轮替一次
}

/var/log/btmp {
    missingok
    # 若不存在,忽略警告
    monthly
    # 每月轮替
    create 0600 root utmp
    # 见上
    rotate 1
    # 轮替一次
}

# system-specific logs may be also be configured here.

再看一个apache的轮替:

[root@localhost httpd]# vim /etc/logrotate.d/httpd 

  1 /var/log/httpd/*log {
  # 该目录下所有log文件生效
  2     missingok
  # 若时间不存在,忽略警告
  3     notifempty
  # 若日志文件为空,则不进行轮替
  4     sharedscripts
  # 执行脚本
  5     delaycompress
  # 将压缩推迟到下一个环节,但是必须要与compress组合才有效,也就是我们的配置文件中必须有compress配置项
  6     postrotate
  # 在论题完成之后执行脚本
  7         /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
  # 该脚本意思为重新加载apache服务,源文件中没有提及需要重新加载rsyslog服务,但是最好执行一下,不然日志会往旧的文件里写
  			bin/kill-HUP $(/bin/cat/var/run/syslogd.pid 2>/dev/null) &>/dev/null
  			# 重新加载rsyslog才生效
  8     endscript
  # 脚本结束
  9 }

3. 将自己的日志加入轮替

我们之前自己建立了一个日志文件:/var/log/mytest,log

[root@localhost httpd]# vim /etc/rsyslog.conf 
                ....
                ....
 93 *.err                            /var/log/mytest.log
 				...

在配置文件中加入以下内容

		...
 /var/log/mytest.log{
      monthly
      rotate 5
      create
  }

4. logrotate命令

-l :显示日志轮替过程
-f:强制进行日志轮替
运行命令看我们的执行结果如何:

[root@localhost httpd]# logrotate -vf /etc/logrotate.conf
    ...
rotating pattern: /var/log/mytest.log forced from command line (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/mytest.log
  log needs rotating
rotating log /var/log/mytest.log, log->rotateCount is 5
dateext suffix '-20220106'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /var/log/mytest.log to /var/log/mytest.log-20220106
creating new /var/log/mytest.log mode = 0600 uid = 0 gid = 0

在这里插入图片描述
如上所示,执行完成。
所以我们通过源码包按照的程序也可以通过logrotate来进行轮替。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值