1.日志进程rsyslog
//处理日志的进程
第一类:rsyslog:系统专职日志程序
处理绝大部分日志记录
系统操作有关的信息,如登录信息,程序启动关闭信息,错误信息
第二类:hhtpd/nginx/mysql:各类应用程序,可以以自己的方式记录日志
观察rsyslog程序:
[root@localhost tmp]# ps aux | grep rsyslogd
root 7396 0.0 0.1 233128 1884 ? Ssl 7月07 0:44 /usr/sbin/rsyslogd -n
//常见的日志文件(系统、进程、应用程序)
#tail -10 /var/log/messages //系统主日志文件
#tail -f /var/log/messages //动态查看日志文件的尾部
#tailf /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/mysql.log //MySQL
#tail /var/log/xferlog //和访问FTP服务器相关
#tail /var/log/wtmp //当前登录的用户(命令:w)
#tail /var/log/btmp //最近登录的用户(命令:last)
#tail /var/log/lastlog //所有用户的登录情况(命令:lastlog)
//rsyslogd配置
相关程序:yum install rsyslog logrotate (默认已安装)
启动程序:systemctl start rsyslog.service
相关文件:rpm -qc rsyslog
观察日志程序的配置文件:
/etc/logrotate.d/syslog 和日志办轮转(切割)相关
/etc/rsyslog.conf rsyslogd的主配置文件
/etc/sysconfig/rsyslog rsyslogd相关文件,定义级别
//主配置文件
告诉rsyslogd进程什么日志,应该存到哪里
#vim /etc/rsyslog.conf
RULES:即规则,是一套生成日志,以及存储日志的策略
规则由设备+级别+存放位置组成
RULES由FACILITY+LEVEL+FILE组成
#
authpriv.* /var/log/secure (SSH信息)
mail.* -/var/log/maillog (发邮件)
cron.* /var/log/cron (创建任务)
#这里由一个 - 符号,表示是使用异步的方式记录,因为日志一般会比较大
FACILITY&LEVEL
facility:是系统对某种类型APP事件的定义。用来收集同类程序日志。
设备类型:LOG_SYSLOG syslogd自身产生的日志
LOG_AUTHPRIV 安全认证
LOG_CRON 调度程序(cron and at)
LOG_MAIL 邮件系统mail subsystem
LOG_UESR(default) 用户相关
LOG_DAEMON 后台进程
LOG_FTP 文件服务器ftp daemon
LOG_KERN 内核设备kernel messages
LOG_LPR 打印机设备 printer subsystem
LOG_LOCAL0 through LOG_LOCAL7 用户自定义设备
关于程序和设备的联系问题,程序自身会决定将日志交给哪类设备。这一点由开发者定义。
level级别:LOG_EMERG 紧急,致命,服务器无法继续运行
LOG_ALERT 报警,需要立即处理
LOG_CRIT 致命行为
LOG_ERR 错误行为
LOG_WARNING 警告信息
LOG_NOTICE 普通,重要的标准信息
LOG_INFO 标准信息
LOG_DEBUG 调试信息,排错所需,一般不建议使用
2.日志轮转logrotate
//简介
日志记录了程序运行时各种信息
通过日志可以分析用户行为,记录运行轨迹,查找程序问题
可惜磁盘的空间时有限的
日志轮转就像飞机里的黑匣子,记录的信息再重要也只能记录最后一段时间发生的事
为了节省空间和整理方便,日志文件经常需要按!时间或!大小等维度分为多份,删除时间久远的日志文件
//工作原理:按照配置进行轮转
配置文件种类
主文件:/etc/logrotate.conf(决定每个日志文件如何轮转)
子文件:/etc/logrotate.d/* (自定义配置,便于管理)
观察主文件和子文件
[root@localhost tmp]# ls /etc/logrotate.conf /etc/logrotate.d/
/etc/logrotate.conf
/etc/logrotate.d/:
bootlog cups iscsiuiolog libvirtd.qemu ppp samba wpa_supplicant
chrony httpd libvirtd numad psacct syslog yum
//主配置文件介绍
[root@localhost tmp]# vim /etc/logrotate.conf
======================全局变量======================
weekly //轮转的周期,一周轮转
rotate 4 //保留4份
create //轮转后创建新文件
dateext //使用日期作为后缀
#compress //是否压缩
include /etc/logrotate.d //包含该目录下的子文件
----------------------------------------------------
/var/log/wtmp { //对某日志文件设置轮转的方法
monthly //一月轮转一次
minsize 1M //最小达到1M才轮转,monthly and minsize
create 0664 root utmp //轮转后创建新文件,并设置权限
rotate 1 //保留一份
}
----------------------------------------------------
/var/log/btmp {
missingok //丢失不提示
monthly //每月轮转一次
create 0600 root utmp //轮转后创建新文件,并设置权限
rotate 1 //保留一份
}
//yum日志轮转实例
轮转的目标文件/var/log/yum.log
配置轮转规则
#vim /etc/logrotate.d/yum
/var/log/yum.log {
missingok //丢失不执行
# notifempty //空文件不轮转
# maxsize 30k //达到30k轮转,daily or size
# yearly //或者一年一轮转
daily //缩小周期到1天
rotate 3 //轮转保留3次
create 0777 root root
}
测试
错误示范:#/usr/sbin/logrotate /etc/logrotate.conf //手动轮转
#ls /var/log/yum*
/var/log/yum.log 文件只有一个。因为日期没变
正确示范:修改时间,手动触发轮转
#date 月日时分(每个两位数)
#/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.cinf
#ls /var/log/yum* 日志文件已经出现
关于时间:#grep 'yum' /var/lib/logrotate/logrotate.status //记录所有日志文件最近轮转的时间
"/var/log/yum.log" 2024-7-16-10:0:4