一、日志的种类和记录方式
在CentOS 7中,系统日志消息由两个服务负责处理:systemd-journald和rsyslog。
1. 常见日志文件的作用 系统日志文件概述:/var/log目录保管由rsyslog维护的,存放的一些特定于系统和服务的日志文件。
日志文件 | 用途 |
/var/log/message | 大多数系统日志消息记录在此处。如与身份验证定期作业任务等 |
/var/log/secure | 安全和身份验证相关的消息和登录失败的日志文件 安全和身份验证相关的消息和错误的日志文件 |
/var/log/maillog | 与邮件服务器相关的消息日志文件 |
/var/log/cron | 与定期执行任务相关的日志文件 |
/var/log/boot.log | 与系统启动相关的消息记录 |
/var/log/dmesg | 与系统启动相关的消息记录(硬件相关) |
/var/log/wtmp也是一个二进制文件,记录每个用户的登录次数和持续时间等信息。 可以用last命令输出wtmp中内容:last显示到目前为止,成功登录系统的记录。 /var/log/btmp文件查看暴力破解系统的用户 /var/log/btmp文件是记录错误登录系统的日志。 |
2. 日志的记录方式:
日志的记录在rsyslog中由日志的“类别”和“级别”组成。
1)日志的分类(类别):
daemon | 后台进程相关 |
kern | 内核产生的信息 |
lpr | 打印系统产生的 |
cron | 定时相关 |
| 邮件相关 |
syslog | 日志服务本身的 |
news | 新闻系统 |
authpriv | 安全认证 |
local0~7 | 自定义的日志设备 |
local0-local7 | 8个系统保留,程序使用或者是用户自定义 |
2)日志的级别(轻-重)
编号 | 优先级 | 严重性 |
7 | debug | 信息对开发人员调试应用程序有用,在操作过程中无用 |
6 | info | 正常的操作信息,可以收集报告,测量吞吐量 |
5 | notice | 注意,正常但重要的事件 |
4 | warning | 警告,提示如果不采取行动。将会发生错误 |
3 | err | 错误,阻止某个模块或程序的功能不能正常使用 |
2 | crit | 关键的错误,已经影响了整个系统或软件不能正常工作的信息 |
1 | alert | 警报,需要立即修改的信息 |
0 | emerg | 紧急,内核崩溃等严重信息 |
3)补充命令:
1、grep以行为单位过滤数据,awk以列为单位过滤数据,uniq-c表示 x显示重复内容并且显示重复的次数。 2、将ens33网卡收到的来自于192.168.1.63的数据包丢弃,不再接收 iptables -A INPUT -i ens33 -s 192.168.1.63(暴力破解地址) -j DROP 3、随着运行时间增加,日志文件变得过大时。清空日志可选方式有: 方法1:[root@localhost ~]# > /var/log/btmp 方法2: rm -rf /var/log/btmp && touch /var/log/btmp 4、两者的区别? 方法一是以空进行覆盖;inode不变。不容易出现问题 二是先删除再创建;inode无法确定 |
4)如何防止删除日志:
chattr +a /var/log/日志文件名
#设定a隐藏属性
5)配置文件/etc/rsyslog.conf
# 日志服务的配置文件,记录了日志的类型和级别,以及对应日志文件的保存位置。当要将日志传输到服务器端保存时,在文件内添加:
日志类型.级别 @@服务器IP:514(@@表示tcp协议,@表示udp协议,514为对应端口)
*.info;mail.none;authpriv.none;cron.none /var/log/messages #点前面是级别,后面是类别,代表所有info级别以上的都要记,mail.none;authpriv.none;cron.none类别都不记,在下面独立记录 authpriv.* /var/log/secure mail.* -/var/log/maillog #加- 因为频繁产生日志 cron.* /var/log/cron *.emerg :omusrmsg:* #广播形式发送报错信息 uucp,news.crit /var/log/spooler local7.* /var/log/boot.log
注释: #$UDPServerRun 514 #允许514端口接收使用UDP协议转发过来的日志。 #$InputTCPServerRun 514 #允许514端口接收使用TCP协议转发过来的日志。 *.info;mail.none;authpriv.none;cron.none /var/log/messages 所有的类别级别是info以上 除了mail,authpriv,cron (产生的日志太多,不易于查看) 类别.级别 authpriv.* 认证相关日志 /var/log/secure mail.* 邮件相关的日志 -/var/log/maillog cron.* 计划任务相关的日志 /var/log/cron local7.* 开机时显示的信息à存放--> /var/log/boot.log 注: “- ”号:邮件的信息比较多,现将数据存储到内存,达到一定大小,全部写到硬盘.有利于减少I/O进 程的开销 数据存储在内存,如果关机不当数据消失。 日志输入的规则
例:.=info 只记录info级别的日志
例.!err 除了err外记录所有
例:mail.none 所有mail类别的日志都不记录 |
3、日志切割
可以对日志进行指定大小的切割 日志轮替的主要作用是把旧日志文件移动并改名,同时建立新的空日志文件。当旧日志文件数量超出保存范围后就进行删除。 配置文件: /etc/logrotate.conf和/etc/logrotate.d/目录下的配置文件 # logrotate命令的配置文件,记录了日志文件的切割规则 include : 引用/etc/logrotate.d之下文件的规则 局部优先级高于全局 nodateext:在日志轮替切割后,旧日志文件不以日期为后缀名。 compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。 delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归 档压缩。 notifempty: 如果日志文件为空,轮循不会进行。 sharedscripts:在此关键字之后的脚本执行一次。 prerotate/endscript:在日志轮替之前执行脚本命令。endscript 标识prerotate 脚本结束。 postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。 logrotate命令: 格式:logrotate [选项] 配置文件名 选项:如果此命令不添加子选项,则会按照配置文件中的条件进行日志轮替。 -v:显示日志轮替过程。加-v选项会显示日志的轮替过程。 -d:预演,不实际轮循 -f:强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中的所有日志进行轮替。
如果遇到大日志文件可以使用split命令对文件进行切分: split:文件拆分 -a:指定输出文件名的后缀长度,默认为2个字符。 -d:指定输出文件名的后缀长度用数字代替。 -b:指定输出文件的大小,可用k,m,g等表示。 cat:文件合并 cat /拆分文件1 /拆分文件2..../拆分文件n > 合并文件
|
4、配置远程日志服务器-实现日志集中的管理
server端配置 1、修改配置文件,选择tcp,将注释去掉 [root@localhost ~]# vim /etc/rsyslog.conf $ModLoad imtcp $InputTCPServerRun 514 2、重启服务 [root@localhost ~]# systemctl restart rsyslog 3、查看服务监听的状态: [root@localhost ~]# netstat -anlpt| grep 514 4、在服务端关闭selinux和防火墙 [root@localhost ~]# getenforce Enforcing [root@localhost ~]# setenforce 0 [root@localhost ~]# getenforce Permissive [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl status firewalld [root@localhost ~]# iptables -F client端配置 1、登录客户端Linux02,修改主机名。 2、修改配置文件 [root@ln ~]# vim /etc/rsyslog.conf 注: *.* 所有类别和级别的日志 ; @@192.168.13.11:514 运端tcp协议的日志服务端的IP 和端口 3、重启服务 [root@ln ~]# systemctl restart rsyslog 4、测试,创建用户lsy01 5、在服务器端查看日志,可以看到客户端创建用户的日志 [root@localhost ~]# vim /var/log/secure 总结: 服务器使用udp协议,客户端只能使用的配置文件中这一行只能有一个@ *.* @192.168.13.64:514 服务器使用tcp协议,客户端只能使用的配置文件中这一行必须有两个@@ *.* @@192.168.13.64:514 |