rsyslog 管理与配置

一:日志的重要性

日志分类:系统日志,进程日志,应用程序日志

记录日志的用处: 排错,追溯事件,统计流量,审计安全行为

rsyslogd:只负责绝大部分日志记录,和系统操作有关,安全,认证,计划任务…

处理分析日志:

1.少量日志使用vim cat tail grep awk这些文档处理程序查看和检索

2.大量日志可以用splunk、elk

日志存放位置: 存放本地 /var/log

日志服务启动:systemctl start rsyslog

日志配置文件:/etc/rsyslog.conf

[root@newrain ~]# ps aux |grep rsyslogd |grep -v grep root       

686  0.0  0.0 219752  8436 ?        Ssl  16:35   0:00 /usr/sbin/rsyslogd -n 

二:rsyslog日志管理

常见的日志文件(系统、进程、应用程序)
# ls /var/log/
# tail /var/log/messages		      //系统主日志文件
# tail -f /var/log/messages		      //动态查看日志文件的尾部
# tail -f /var/log/secure		            //认证、安全
# tail /var/log/cron			            //crond、at进程产生的日志
# tail /var/log/yum.log                   //yum

二进制日志:
# w					                             //当前登录的用户即: /var/log/wtmp日志
# last					                            //最近登录的用户 /var/log/btmp
# lastlog					                        //所有用户的登录情况 /var/log/lastlog

进程以自己的方式去记录日志
# tail /var/log/mysqld.log               //MySQL进程自己记录的日志
# tail /var/log/httpd/access_log         //Apache自己记录的日志
# tail /var/log/xferlog                  //和访问FTP服务器相关

案例1: 统计登录失败top 2 
# grep 'Fail' /var/log/secure |awk '{print $11}' |sort |uniq -c|sort -n -r |head -2
    366 140.205.225.186
    335 140.205.201.44

案例2: 统计登录成功 
# grep 'Accepted' /var/log/secure*

三: mysql存放rsyslog日志

yum install -y mariadb mariadb-server
yum install -y rsyslog-mysql  # 安装驱动
rpm -ql rsyslog-mysql # 找到sql文件

# 将sql文件导入到数据库中
mysql> GRANT ALL ON Syslog.* TO 'rsyslog'@'127.0.0.1' IDENTIFIED BY 'rsyspass';
mysql> GRANT ALL ON Syslog.* TO 'rsyslog'@'localhost' IDENTIFIED BY 'rsyspass';
mysql> FLUSH PRICVILEGES

# 配置rsyslog加载ommysql模块
#### MODULES ####
$ModLoad ommysql

# 配置RULES,将所期望的日志信息记录于mysql中
# 格式为 
facility.priority :ommysql:DBHOST,DB,DBUSER,DBUSERPASS
*.*:ommysql:127.0.0.1,Syslog,rsyslog,rsyspass

systemctl restart mariadb
systemctl restart rsyslog

四:集中式日志管理

自定义日志
自己定义日志的名字和位置
查看日志文件是否起来:systemctl status rsyslog

#vim /etc/rsyslog.conf -----> 日志的主配置文件  include 包含
*.info;mail.none;authpriv.none;cron.none      /var/log/messages 日志定义
      .之前叫做日志对象,要给谁记录日志
      .之后日志级别:级别越低,信息越多 
	  日志文件:存储日志的文件
日志级别	
        lpr: 打印相关的日志
        auth:认证相关的日志
        user:用户相关的日志
        cron:计划任务相关的日志
        kern:内核相关的日志
        mail:邮件相关的日志
        mark:标记相关的日志
        news:新闻相关的日志
        uucp:文件copy相关的日志
        daemon:系统服务相关的日志
        authpri: 授权相关的日志
        security:安全相关的日志	前的级别低,越详细,低的包含高的日志级别
debug:最低的,一般不用
info:安装信息,警告信息,错误信息   
notice:相当与提示
warn/warning:警告,错误                             
error/err:错误,严重错误 
alert:告警,表示已经出现问题
emerg:恐慌级别

eg:将内核日志文件自定义到/var/log/kern.log
touch /var/log/kern.log
vim /etc/rsyslog.conf ---->kern.info /var/log/kern.log    
查看都有哪些日志对象和日志级别
	#man 5 rsyslog.conf
local0 through local7:自己定义的日志文件
======================================

例:
	*.* 				/var/log/mylog
	kern.err 			/var/log/kernel.log
	*.info;mail.none    /var/log/big.log
	mail.info			/var/log/mail.log
    cron.info;cron.!err /var/log/newcron

======================================

local0-local7日志设备的使用:   ssh的配置文件:/etc/ssh/sshd_config
例:定义sshd日志:
    1.修改sshd服务主配置文件:
    将/etc/ssh/sshd_config 的#SyslogFacility AUTHPRIV改为 SyslogFacility local2
    SyslogFacility local5   //设置ssh的日志定义由local5设备来记录
    2.在rsyslog的主配置文件里加上
     local5.info /var/log/ssh
    3.重启服务

五:日志切割

logrotate日志轮转(切割)
========================================================
注:针对任何日志文件

logrotate (轮转,日志切割)
1. 如果没有日志轮转,日志文件会越来越大,最后导致日志打不开或者是打开时间过长
2. 将丢弃系统中最旧的日志文件,以节省空间
3. logrotate本身不是系统进程,即日志的轮转不会自动执行,它是通过写到相应的配置文件中使用计划任务crond每天执行 
4.对日志的切割,你只需要给他定义一个规则

[root@newrain ~]# rpm -qa |grep logrotate
logrotate-3.7.8-16.el6.x86_64

logrotate 配置文件:
/etc/logrotate.conf (决定每个日志文件如何轮转)
/etc/logrotate.d/*

主配置文件
[root@newrain ~]# vim /etc/logrotate.conf	
=========全局设置==========
weekly     			                 //轮转的周期,一周轮转
rotate 4				           //保留4份
create				                 //轮转后创建新文件
dateext                           		//使用日期作为后缀
#compress			                	//是否压缩
# RPM packages drop log rotation information into this directory  
# rpm安装的程序,按照下面目录规则进行轮转
include /etc/logrotate.d  		//包含该目录下的文件

# no packages own wtmp and btmp -- we'll rotate them here  
# 对于wtmp和btmp这样无主的日志,按照下面配置进行轮转
/var/log/wtmp {			      //对该日志文件设置轮转的方法
    monthly			                	//一月轮转一次
    minsize 1M			            //最小达到1M才轮转,即到了规定的时间未达到大小不会轮转
    create 0664 root utmp		//轮转后创建新文件,并设置权限属主和属组
    rotate 1			                  //保留一份
}

/var/log/btmp {
    missingok			            //丢失不提示
    monthly			                	//每月轮转一次
    create 0600 root utmp		//轮转后创建新文件,并设置权限
    rotate 1			                  //保留一份
}

[root@newrain ~]# vim /etc/logrotate.d/yum  	//原有的设置,没有说保存几份,看上面的全局设置
/var/log/yum.log {		        	//yum日志文件
    missingok			            //丢失不提示
    notifempty			            //如果为空,不轮转
    size 30k			                	//达到30k就轮转
    yearly				            //达到一年就轮转一次,两者满足一个就轮转
    create 0600 root root	  	//创建新文件
}

[root@newrain ~]# ls /etc/logrotate.d/
chrony  ppp    wpa_supplicant   syslog  yum

日志的轮转规则文件是在安装rpm包时就自动提供的,无需人为手动编写
只有自己创建的日志文件才需要自己编写日志轮转规则文件
[root@newrain ~]# yum -y install httpd
[root@newrain ~]# ls /etc/logrotate.d/
chrony  ppp    wpa_supplicant   syslog  yum httpd

[root@newrain logrotate.d]# yum -y install vsftpd
[root@newrain logrotate.d]# ls
chrony  httpd  ppp  syslog  vsftpd  wpa_supplicant  yum

说明:
当切割之后创建新文件,新文件有新的inode number 
如果希望进程如rsyslog、nginx进程会把新的日志写入新日志文件中,应该在日志切割后,告诉一下rsyslog、nginx进程reload 或 信号(1 or HUP)

你可能感兴趣的:(OP)