Rsyslog与logrotate服务
Rsyslog是一个syslogd的多线程增强版本,现在fedora和ubuntu,centos默认日志系统都是rsyslog了。
Rsyslog负责写入日志,logrotate负责备份和删除日志,以及更新日志文件。
一、rsyslog服务
查看当前服务状态:systemctl status rsyslog
进程查看:ps auxf|grep rsyslogd
从上面命令的输出结果看到rsyslog执行时使用的参数是-c 4.
它的意思是指定rsyslog运行(兼容)版本号,这个参数必须是第一个参数,当然也可以省略,默认为-c0(命令行兼容sysklogd),这个参数是在文件/etc/sysconfig/rsyslog中指定.
格式:
日志设备(类型).(连接符号)日志级别 日志处理方式(action)
日志设备:可以理解为日志类型
auth –pam产生的日志
authpriv –ssh,ftp等登录信息的验证信息
cron –时间任务相关
kern –内核
lpr –打印
mail –邮件
mark(syslog)–rsyslog服务内部的信息,时间标识
news –新闻组
user –用户程序产生的相关信息
uucp –unix to unix copy, unix主机之间相关的通讯
local 1~7 –自定义的日志设备
连接符号:
.xxx: 表示大于等于xxx级别的信息
.=xxx:表示等于xxx级别的信息
.!xxx:表示在xxx之外的等级的信息
日志级别:
None -什么都不记录
0 emerg -内核崩溃等严重信息
1 alert -需要立刻修改的信息
2 crit -严重级别,阻止整个系统或者整个软件不能正常工作的信息
3 err -错误级别,阻止某个功能或者模块不能正常工作的信息
4 waring -经过信息
5 notice -最具有重要性的条件的信息
6 info -一般信息的日志,最常用
7 debug -有调试信息的,日志信息最多
日志定义相关符号:配置中常见符号解释
. 用来分割服务和日志级别
* 任何服务或者级别
= 有等号表示等于某一级别
! 排除操作,前面有相同服务的表达式,这个操作才有意义。
; 用于分隔不同的 服务.级别 组合
, 用于分隔不同的服务
- 用于指定目标文件是异步写入
Action:
- 记录到普通文件或设备文件::
*.* /var/log/file.log # 绝对路径
*.* /dev/pts/0
2. 转发到远程::
*.* @192.168.0.1 # 使用UDP协议转发到192.168.0.1的514(默认)端口
*.* @@192.168.0.1:10514 # 使用TCP协议转发到192.168.0.1的10514(默认)端口
3. 发送给用户(需要在线才能收到)::
*.* root
*.* root,kadefor,up01 # 使用,号分隔多个用户
*.* * # *号表示所有在线用户
4. 忽略,丢弃::
local3.* ~ # 忽略所有local3类型的所有级别的日志
5. 执行脚本::
local3.* ^/tmp/a.sh # ^号后跟可执行脚本或程序的绝对路径
rule配置:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
#所有服务产生的日志,除了mail/验证/任务计划相关相关日志都记录到/var/log/messages
authpriv.* /var/log/secure
#记录所有验证相关日志
mail.* -/var/log/maillog
#记录所有邮件相关日志
cron.* /var/log/cron
#记录跟任务计划相关的日志
*.emerg :omusrmsg:*
把所有级别为emerg的信息发送给所有等到系统上的用户
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
#记录所有跟启动相关的日志信息
local0.* /var/log/keepalived.log
#记录keepalived日志信息
二、Logrotate服务
Logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为转储。我们可以根据日志的大小或者根据其使用的天数来转储。
Logrotate的执行由crond服务实现,在/etc/cron.daily目录中,有个文件logrotate,它实际上是个shell script,用来启动Logrotate。
Logrotate程序每天由cron在指定时间(/etc/crontab)启动。(没有相关配置,是默认0点启动吗??)
因此,使用ps是无法查看到logrotate的,如果它没有起来,就要查看一下crond服务有没有运行。
在执行logrotate时,需要指定其配置文件/etc/logrotate.conf.
Weekly : 每周轮转一次
Rotate : 保留4个
Create : rotate后,创建一个新的空文件
Compress :默认是不压缩的
Include /etc/logrotate.d包含放在/etc/logrotate.d目录下的配置文件,不可或缺。如果你安装了一个新的服务,它的日志转储规则可以建立一个专门的配置文件,放在/etc/logrotate.d下面,在logrotate服务启动时被读取。
每个放在/etc/logrotate.d目录里的文件,都有上面格式的配置信息。在{}中定义的规则,如果与logroate.conf中的冲突,以/etc/logrotate.d中文件定义的为准。