Linux系统服务日志管理


rsyslog:系统日志管理
rsyslog可以收集来自其他设施的日志信息
rsyslog可以将其内部的日志信息传输到远程的syslog服务器
logrotate:日志轮换
logrotate对生成大量日志文件的系统的管理。 它允许自动旋转,压缩,删除和邮寄日志文件。 每个日志文件可以每天,每周,每月或当它变得太大时处理。将大量的日志,分割管理,删除旧日志。

一. rsyslog

1. rsyslog处理日志的进程

  • 第一类
    系统专职日志程序,处理绝大部分日志记录。包含系统操作有关的信息,如登录信息,程序启动关闭信息,错误信息等。
  • 第二类
    httpd /nginx /mysql: 各类应用程序,可以以自己的方式记录日志.
    讲解对应程序时会逐步介绍
[root@localhost ~]# ps aux |grep rsyslogd
root 717 0.0 0.0 219752 3880 ? Ssl 09:05 0:00 /usr/sbin/rsyslogd -n

观察rsyslog

2. 常见的日志文件(系统、进程、应用程序)

(1). 常见日志

[root@localhost ~]# tail   -10   /var/log/messages    //系统主日志文件
[root@localhost ~]# tail -f /var/log/messages    //动态查看日志文件的尾部
[root@localhost ~]# tailf /var/log/secure    //认证、安全
[root@localhost ~]# tail /var/log/yum.log     //yum 
[root@localhost ~]# tail /var/log/maillog      //跟邮件postfix相关
[root@localhost ~]# tail /var/log/cron      //crond、at进程产生的日志
[root@localhost ~]# tail /var/log/dmesg       //和系统启动相关
[root@localhost ~]# tail /var/log/audit/audit.log        //系统审计日志
[root@localhost ~]# tail /var/log/mysqld.log           //MySQL
[root@localhost ~]# tail /var/log/xferlog        //和访问FTP服务器相关
[root@localhost ~]# tail  /var/log/wtmp           //当前登录的用户(命令:w)
[root@localhost ~]# tail  /var/log/btmp          //最近登录的用户(命令last)
[root@localhost ~]# tail  /var/log/lastlog        //所有用户的登录情况(命令lastlog )

(2). 网站日志管理

  • 安装
[root@localhost~]# yum install -y httpd   安装httpd
[root@localhost~]# systemctl  start  httpd      打开httpd
[root@localhost~]# systemctl stop  firewalld     关闭防火墙
  • 调整网络
    在这里插入图片描述
[root@localhost~]# systemctl  restart  network    重新启动网络
[root@localhost~]# ip a  查找自己的ip

在这里插入图片描述

  • 打开浏览其,输入你的服务器IP进行浏览
    观察日志
[root@localhost~]# tailf  /var/log/httpd/access_log
看有哪些人浏览了你的服务器

3. rsyslogd配置

(1). 相关程序

[root@localhost~]#  yum install rsyslog   logrotate
默认已安装

(2). 启动程序

[root@localhost~]# systemctl  start    rsyslog.service

(3). 相关文件

[root@localhost~]# rpm -qc rsyslog	
查看日志程序文件
[root@localhost~]# rpm -ql rsyslog
列出与程序文件相关的文件
[root@localhost~]# /etc/rsyslog.conf
rsyslogd的主配置文件
[root@localhost~]# /etc/sysconfig/rsyslog
rsyslogd相关文件,定义级别
[root@localhost~]# /etc/logrotate.d/syslog
和日志轮转(切割)相关

4. 主配置文件

(1). vim /etc/rsyslog.conf

  • PULES

RULES:即规则,是一套生成日志,以及存储日志的策略。
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是计划任务事件。用来收集同类程序日志。

设备类型

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     打印机设备  printer subsystem  
LOG_LOCAL0 through LOG_LOCAL7   用户自定义设备 

level级别

LOG_EMERG 		紧急,致命,服务无法继续运行,如配置文件丢失
LOG_ALERT 		报警,需要立即处理,如磁盘空使用95%
LOG_CRIT 		致命行为
LOG_ERR 		错误行为
LOG_WARNING	 警告信息
LOG_NOTICE 	普通,重要的标准信息
LOG_INFO 		标准信息
LOG_DEBUG 		调试信息,排错所需,一般不建议使用

从下到上,级别从低到高,记录的信息越来越少

  • 规则示意图
    通过绘图形式来理解日志工作机制。
    在这里插入图片描述

(2). 程序类型示例

关于程序和设备的联系问题,程序自身会决定将日志交给哪类设备。
如SSH程序会选择安全类设备。这一点由开发者定义。

扫描二维码关注公众号,回复: 11563549 查看本文章
[root@localhost~]# vim    /etc/ssh/sshd_config 
#SyslogFacility AUTHPRIV
SyslogFacility LOCAL5
修改ssh程序的设备类型
[root@localhost~]#vim /etc/rsyslog.conf
local5.*                                        /var/log/serverzz
修改rsyslog程序的规则
[root@localhost~]# systemctl restart rsyslog.service    sshd
重启rsyslog程序和ssh程序

最后使用其他终端,登录服务器,观察新日志文件。

二. logrotate

日志 记录了程序运行时各种信息。
通过日志可以分析用户行为,记录运行轨迹,查找程序问题。
可惜磁盘的空间是有限的
日志轮转就像飞机里的黑匣子,记录的信息再重要也只能记录最后一段时间发生的事。
为了节省空间和整理方便,日志文件经常需要按!时间或!大小等维度分成多份,删除时间久远的日志文件。

1. 工作原理

(1). 配置文件种类

主配置文件

/etc/logrotate.conf
决定每个日志文件如何轮转

子配置文件

/etc/logrotate.d/*
自定义配置,便于管理

(2). 观察主文件和子文件

[root@localhost ~]# ls /etc/logrotate.conf /etc/logrotate.d/
/etc/logrotate.conf
/etc/logrotate.d/:
acpid cups iscsiuiolog ppp rpm subscription-manager up2date wpa_supplicant
conman httpd mgetty psacct setroubleshoot syslog vsftpd.log yum

2. 主配置文件

[root@localhost ~]# 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 		//保留一份
}

3. yum日志轮转

轮转的目标文件 /var/log/yum.log

(1). 配置轮转规则

[root@localhost ~]# 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
}

(2). 测试

  • 错误示范
[root@localhost ~]# /usr/sbin/logrotate /etc/logrotate.conf    //手动轮转
[root@localhost ~]#  ls /var/log/yum*
/var/log/yum.log
文件只有一个  因为日期没变
  • 正确示范
[root@localhost ~]# date 04011000
修改时间  手动触发轮转
date  月日时分
把时间往后推迟  不然不会显示
[root@localhost ~]# /usr/sbin/logrotate  -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
[root@localhost ~]# ls /var/log/yum*
文件已经出来多个  说明成功
  • 关于时间
[root@localhost~] # /var/lib/logrotate/logrotate.status
# grep 'yum'     记录所有日志文件最近轮转的时间
[root@localhost~]# "/var/log/yum.log" 2019-3-31-10:0:23

如果没有轮转过,第一次只有记录

猜你喜欢

转载自blog.csdn.net/m0_48654420/article/details/107847752