一:日志的重要性 日志分类:系统日志,进程日志,应用程序日志
记录日志的用处: 排错,追溯事件,统计流量,审计安全行为
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)