日志进程rsyslog
1、日志管理
简介
任务一:rsyslog系统日志管理
关心问题:
哪类问题—>
产生的什么日志—>
放到什么地方—>
任务二:logrotate直至轮转
将大量的日志,分割管理,删除旧日志
任务一详解
一、处理日志的进程
第一类:
rsyslog:系统专职日志程序。
处理绝大部分日志
操作系统有关的信息,如登录信息,程序启动关闭信息,错误信息
第二类:
httpd、nginx、mysql:各类应用程序,可以以自己的方式记录日志,讲解对应程序时会逐步介绍
观察rsyslogd程序:
ps aux | grep rsyslogd
[root@bogon /]# ps aux | grep rsyslogd
root 1145 0.0 0.2 222764 5536 ? Ssl 13:19 0:01 /usr/sbin/rsyslogd -n
root 2231 0.0 0.0 112816 972 pts/0 S+ 16:02 0:00 grep --color=auto rsyslogd
二、常见的日志文件(系统、进程、应用程序)
tail -10 /var/log/messages
#系统主日志文件
tail -f /var/log/messages
#动态查看日志文件的尾部
tail -f /var/log/secure
#认证、安全
tail /var/log/yum.log
#yum
tail /var/log/maillog
#跟邮件postfix相关
tail /var/log/cron
#crond、at进程产生的日志
tail /var/log/dmesg
#和系统启动相关
了解:
tail /var/log/audit/audit.log
#系统审计日志
tail /var/log/mysqld.log
#MySQL
tail /var/log/xferlog
#和访问FTP服务器相关
tail /var/log/wtmp
#当前登录的用户(命令:w)
tail /var/log/btmp
#最近登录的用户(命令:last)
tail /var/log/lastlog
#所有用户的登录情况(命令:lastlog)
三、rsyslogd配置
1、相关程序
yum install -y rsyslog logrotate
默认安装
2、启动程序
systemctl start rsyslog.service
3、相关文件
rpm -qc rsyslog
查询软件包的安装情况
-q 安装包
-c 配置文件
[root@bogon ~]# rpm -qc rsyslog
/etc/logrotate.d/syslog
/etc/rsyslog.conf
/etc/sysconfig/rsyslog
/etc/rsyslog.conf
/etc/sysconfig/rsyslog
/etc/logrotate.d/syslog
观察日志程序的配置文件
四、主配置文件
告诉rsyslog进程是什么日志,应该存到哪里
vim /etc/rsyslog.conf
RULES
即规则,是一套生成日志,以及存储日志的策略
规则由三部分组成:设备+级别+存放位置组成
RULES由FACILITY+LEVEL+FILE组成
authpriv.* /var/log/secure(SSH信息)
mail.* -/var/log/maillog(发邮件)
这里有一个-符号,表示是使用异步的方式记录,因为日志一般会比较大。
cron.* /var/log/cron(创建任务)
*.info;mail.none;authpriv.none;cron.none /var/log/messages
系统日志排除了邮件,认证,计划日志。
FACILITY&LEVEL
facility设备
facility
是系统对某种类型APP事件的定义。如AUTHPRIV是安全事件,CRON是计划任务事件。
用来收集同类程序日志。
man 3 syslog
设备类型
LOG_SYSLOG syslogd自身产生的日志
LOG_AUTHPRIV 安全认证
LOG_CRON 调度程序(cron and at)
LOG_MAIL 系统邮件mail subsystem
LOG_USER(default) 用户相关
LOG_DAEMON 后台进程
LOG_FTP 文件服务器ftp daemon
LOG_KERN 内核设备kernel messages
LOG_LPR 打印机
LOG_LOCAL0 through LOG_LOCAL7 用户自定义设备
程序类型示例
关于程序和设备的联系问题,程序自身会决定将日志交给哪类设备。
如SSH程序安全类设备,这一点由程序开发者定义。
grep FACILITY /etc/ssh/sshd_config
SyslogFacility AUTHPRIV
请问这个程序是属于哪个设备呢?
认证设备
level级别
信息级别越低,数量越多,信息级别越高,数量越少。
LOG_EMERG 紧急,致命,服务无法继续运行,如配置文件丢失
LOG_ALERT 报警,需要立即处理,如磁盘空间使用95%
LOG_CRIT 致命行为
LOG_ERR 错误行为
LOG_WARNING 警告信息
LOG_NOTICE 普通,重要的标准信息
LOG_INFO 标准信息
LOG_DEBUG 调试信息,排错所需,一般不建议使用
规则示意图
目的:通过绘图的形式来理解日志的工作机制。
图示:如图一台服务器
日志轮转logrotate
简介
日志记录了程序运行时各种信息。
通过日志可以分析用户行为,记录运行轨迹,查找程序问题。
可惜磁盘的空间是有限的
日志轮转就像飞机里的黑匣子,记录的信息再重要也只能记录最后一段事件发生的事。
为了节省空间和整理方便,日志文件经常需要按!时间或!大小等维度分成多份,删除时间久远的日志文件。
工作原理
按照配置进行轮转
配置文件种类
主文件:/etc/logrotate.conf(决定每个日志文件如何轮转)
子文件夹:/etc/logrotate.d/* 自定义 好删
观察主文件和子文件
[root@localhost ~]# ls /etc/logrotate.conf /etc/logrotate.d/
/etc/logrotate.conf
/etc/logrotate.d/:
bootlog syslog wpa_supplicant yum
主配置文件介绍
# see "man logrotate" for details
详细的日志轮转使用man logrotate
# rotate log files 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 #使用日期作为后缀
# 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 #轮转后创建新文件,并设置权限
minsize 1M #最小达到1M才轮转,monthly and minisize
rotate 1 #保留1份
}
/var/log/btmp {
missingok #丢失不提示
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
yum日志轮转实例
轮转的目标文件/var/log/yum.log
/var/log/yum.log
配置轮转规则
/var/log/yum.log {
missingok #丢失不执行
# notifempty #空文件不轮转
# maxsize 30k #达到30k轮转,daily or size
# yearly #或者一年一轮转
daily #缩小周期到一天一轮转
rotate3 #轮转保留3词
create 0600 root root #轮转后创建新文件,并设置权限
}
测试
错误示范
# /usr/sbin/logrotate /etc/logrotate.conf
#手动轮转
# ls /var/log/yum*
/var/log/yum.log
正确示范
修改时间,手动触发轮转
# date 04011000
月日时间,4月1日10点0分
# /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
# ls /var/log/yum*
日志文件已经出现多个
关于时间
# grep 'yum' /var/lib/logrotate/logrotate.status
#记录所有日志文件最近轮转的时间
"/var/log/yum.log" 2019-3-31-10:0:23