Linux计划任务
日志管理
日志进程
rsyslog是系统中的一个程序,用来记录操作系统的一言一行,它主要关心的是哪类程序,产生了什么日志,放到什么地方。
日志的分类
- 第一类
处理绝大部分的日志记录,主要是与操作系统有关的信息,比如登录信息,程序启动关闭信息,错误信息。 - 第二类
比如:httpd/nginx/mysql:处理各类的应用程序,可以以自己的方式记录日志
观察rsyslogd程序
ps aux | grep rsyslogd
查看它的进程号,如果有一天程序不记录日志了,这就说明了这个进程有问题,找到它并且让它重新启动就可以了。
/usr/sbin/rsyslogd -n
常见的日志文件一般存放在/var/log/
中。
cd /var/log/
这里绝大部分的文件都会带有一个后缀名.log
这些文件中有一个文件叫messages
是这个计算机的主日志文件,记录了计算机运行时候的大事小情,所以要查看这个文件。
这个文件行数很多,所以建议使用tail来进行查看。
tail -1 /var/log/messages
这行记录可以给我们提供的信息是:
Dec 2 15:34:02代表时间
localhost systemd:代表主机名
剩下的代表消息
打开多个终端,一个终端使用tail -f /var/log/messages
或者是tailf /var/log/messages
,一个终端可以随意敲击一些命令,观察messages的终端,会发现一件事,随着敲击的命令时,messages文件中也会多出多行信息,由此可以看出这个文件可以记录我们在计算机中的操作。
tailf /var/log/yum.log # 记录yum在操作时的日志
tailf /var/log/secure # 记录认证,安全方面的日志,比如授权,登录
tailf /var/log/maillog # 记录跟邮件postfix相关的日志
tailf /var/log/cron # 记录跟crond、at进程产生的日志
tailf /var/log/dmesg # 记录和系统启动相关的日志
rsyslogd配置
- 如果发现你自己的centos7计算机中的rsyslog有问题,可以通过重新安装进行修复一下
yum reinstall rsyslog logrotate
- 启动该程序
systemctl start rsyslog.service
- 相关文件
查询这个程序软件包的相关信息
rpm -q rsyslog
列出所有已经安装过的包的信息
rpm -qa
列出rsyslog的所有文件
rpm -ql rsyslog
查看已经安装过的程序的配置文件
rpm -qc rsyslog
接下来简单介绍一下这些配置文件:
/etc/rsyslog.conf这是rsyslogd的主配置文件
/etc/sysconfig/rsyslog这是rsyslogd的相关文件,定义级别
/etc/logrotate.d/syslog这是和日志轮转相关的文件
在linux中如果使用命令 --help
查询还是没有收获的话,可以推荐使用man 命令
来进行查询命令的相关信息。
man rpm
这样这个命令的详细信息就看到了。
在今后会学习很多的程序,他们的配置文件有个共同的特征,都在/etc/程序名.conf
中。
讲解一下rsyslog的主配置文件
可以访问它的官网
在这个配置文件中,有许多选项,按钮,如果你想把它打开就将#去掉,关闭就加上#
在这个配置文件中,到第46行,代表规则,主要讲了哪些程序产生了哪些日志存放在哪些地方。
随便找一行,比如第64行:
cron.* 调度程序
/var/log/cron这是调度程序存放的位置
在cron.*
中的星号代表任何级别(日志的重要性,越往下越低):OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
- RULES
在这个rsyslogd主配置文件中,有一个参数RULES特别重要
RULES代表规则,有三部分组成,是一套生成日志和存储日志的策略。
(规则由设备+级别+存放位置)组成
(RULES由FACLITY+LEVEL+FILE)组成。
例如:
authpriv.* /var/log/secure(ssh信息)
mail.* /var/log/maillog(发邮件)
cron.* /var/log/cron(创建任务)
- faclity是什么?
grep Facility /etc/ssh/sshd_config
Syslog中的sys代表的是system系统,log是日志,syslog是系统日志,Facility是设备,AUTHPRIV:代表认证提供的设备。
常见的设备
log_syslog这是syslog自身产生的日志
log_authpriv安全认证
log_cron 调度程序
log_mail邮件系统
log_user用户相关
facility是系统对某种类型的APP事件的定义,比如authpriv是安全事件,用来收集同类日志。
可以使用man 3 syslog
进行查看。
- level是什么?
*
代表任意级别
log_emerg 紧急,致命,服务无法继续运行,比如配置文件丢失
log_alert报警,需要立即处理
log_crit致命行为
log_err错误行为
log_warning警告信息
log_notice普通的,重要的标准信息
log_info标准信息
log_debug调试信息,排错所需,一般不建议使用。
(级别从下到上依次减少,内容依次减少)
mail.* -/var/log/maillog
(这里的-
代表的是异步,在网络中有同步和异步的说法,同步指的是同时,异步是在不同的时间)
查看rsyslog进程的相关信息
ps aux | grep rsyslog
重新装载rsyslog程序的配置文件
kill -1 1110
举例:
在Linux软件安装的时候,我们安装了一个httpd,这是一个网站的应用程序
可以使用systemctl start httpd
启动一下程序,之后访问网站:127.0.0.1
,同时在命令行中输入tailf /var/log/httpd/assecc_log
来查看httpd的日志
当我们按下刷新时,这个日志也会跟着增长。
日志轮转
日志轮转的简介
日志记录了程序运行时的各种信息,通过日志可以分析用户的行为,记录运行轨迹,查找程序问题,可惜磁盘的空间是有限的,日志轮转就像飞机中的黑匣子,记录的信息再重要也只可以记录最后一段时间发生的事情,为了节省空间和整理方便,日志文件经常按时间或者大小等维度分成多份,删除时间比较久远的文件。
按照配置进行轮转
- 配置文件的种类
主配置文件:/etc/logrotate.conf
(决定每一个日志文件如何轮转)
子文件夹:/etc/logrotate.d/*
- 观察主文件和子文件
观察yum的主配置文件和子配置文件
cd /etc/yum
ls -d -l /etc/yum.conf /etc/yum.repos.d
yum.conf代表的是主配置文件,yum.repos.d是子配置文件夹
观察日志轮转的主配置文件和子配置文件夹
ls /etc/logrotate.conf /etc/logrotate.d
查看日志轮转的主配置文件
vim /etc/logrotate.conf
日志轮转的主配置文件的内容如下,
# see "man logrotate" for details,可以使用man logrotate详细查看
# rotate log files weekly
weekly# weekly代表轮转的周期,是一周轮转
# keep 4 weeks worth of backlogs
rotate 4# 代表保留4份
# create new (empty) log files after rotating old ones
create# 代表轮转后创建新的文件
# use date as a suffix of the rotated file
dateext# dateext有两个部分,date时间extend扩展,总结起来就是以时间作为文件的扩展名
# uncomment this if you want your log files compressed
# compress代表压缩,将文件在轮转之后再压缩一下。
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d# include代表包含,include 包含子配置文件夹
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
# /var/log/wtmp和系统登录的用户有关系,系统当中登录过哪些用户就记录再用户登录日志文件,wtmp存储的是当前的用户的登录,可以用w(who)命令查看
# 我们可以在配置文件中书写日志的名字和大括号,就可以独立设定该日志的轮转规则,也就是明确要求的日志轮转周期就按明确要求的去轮转,没有明确要求的就按全局的周期去轮转。
monthly# 一个月轮转一次
create 0664 root utmp# 创建一个新的日志文件,0664代表的权限,root代表属主,utmp代表属组,总结就是创建的一个新的日志文件的权限是0664主人是root组是utmp。
minsize 1M# 最小达到1M才轮转,如果不到1M是不会切的,这里是两个条件都要达到才可以切。
rotate 1# 保留1份
# {}代表的是范围。
}
/var/log/btmp {
missingok# missing代表丢失,意思是丢失不提示
monthly
create 0600 root utmp# 轮转后创建新的文件并且设置权限
rotate 1
}
# system-specific logs may be also be configured here.
日志轮转的主配置文件中有这么一段代码:
rotate 4# 代表保留4份
什么叫保留4份?
可以拿/etc/log/yum.log
来进行说明
我们在安装centos7的时候就已经有了yum.log,当日志多了之后,就会对日志进行切割,怎么切割呢?对日志文件进行重命名操作,不是重新创建一个日志文件。
也就是:
mv yum.log yum.log-20201228
当日志文件逐渐增多时,比如说有6个日志文件,系统会将老的日志文件给丢弃掉,将最近的4份日志文件保留下来。
主配置文件是程序启动必须要运行的文件。
轮转周期有两大维度,时间和大小。
接下来用对yum日志轮转进行举例
- 创建一个日志文件
vim /etc/logrotate.d/yum
对这个日志文件进行修改调试:
/var/log/yum.log {
missingok
daily
rotate 3
create 0600 root root
}
保存并且退出。
使用cat查看一下。
接下来测试:
接下来要修改时间,手动的去触发轮转
date 040110000# 使用date修改时间,月日时分,每个两位数。
开始日志轮转了
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
查看轮转的结果
ls /var/log/yum* -l
日志文件出现了多个,这表明轮转成功了。
可以使用cat查看一下
cat /var/lib/logrotate/logrotate.status
Linux网络管理