文章目录
日志服务
一、日志服务log (rsyslog 514)
1、日志重要性
日志分类:系统日志,进程日志,应用程序日志
记录日志的用处: 排错,追溯事件,统计流量,审计安全行为
2、常见系统日志 /var/log
常见的日志文件(系统、进程、应用程序)
tailf /var/log/messages //动态查看系统主日志文件的尾部
tailf /var/log/secure //动态查看系统认证、安全日志文件的尾部
tailf /var/log/cron //动态查看计划任务日志文件的尾部
tailf /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服务器相关
3、日志的配置文件分析
日志存放位置: 存放本地 /var/log
日志服务启动: systemctl start rsyslog
日志配置文件: /etc/rsyslog.conf
日志服务默认开机自启
自定义日志:自己定义日志的名字和位置
查看日志文件是开启:systemctl status rsyslog
vim /etc/rsyslog.conf → 日志的主配置文件 include 包含
/etc/rsyslog.d/*.conf → 日志的子配置文件
日志对象.日志级别 日志的存储位置
facility.priority logpath
facility 英 [fəˈsɪləti] 美 [fəˈsɪləti] n.设施;设(日志对象)
priority 英 [praɪˈɒrəti] 美 [praɪˈɔːrəti] n.优先(日志级别)
日志对象和日志级别可以在man 5 rsyslog.conf 搜索/mail查看
日志对象:
authpriv(认证安全) cron(计划任务) kern(内核) mail
local0 through local7(自己定义的日志文件)
日志级别
级别低,越详细,低的包含高的日志级别
notice:相当与提示
warn/warning:警告,错误
error/err:错误,严重错误
*全部级别
========================================================
实验操作一:将内核日志文件自定义到/var/log/kern.log
在rsyslog.conf中修改日志规则RULES模块
[root@rsyslog-server ~]# vim /etc/rsyslog.conf
日志对象.日志级别 日志存储路径
在RULES模块中添加:kern.* /var/log/kern.log
[root@rsyslog-server ~]# systemctl restart rsyslog
日志文件也可以不创建,有日志信息的时候会自动创建
=========================================================
实验操作二、把ssh的日志定义到别的目录下
local0-local7日志设备的使用: ssh的配置文件:/etc/ssh/sshd_config
服务修改日志记录的facility(日志对象),rsyslog修改相关服务facility的facility.priority logpath
①、修改sshd服务主配置文件:
[root@rsyslog-server ~]# vim /etc/ssh/sshd_config
# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
SyslogFacility AUTHPRIV改为 SyslogFacility local2(local0-local7)
SyslogFacility local2 //设置ssh的日志定义由local2设备来记录
[root@rsyslog-server ~]# systemctl restart sshd
②、在rsyslog的主配置文件里加上
local2.* /var/log/ssh
[root@rsyslog-server ~]# vim /etc/rsyslog.conf
[root@rsyslog-server ~]# systemctl restart rsyslog
服务产生日志之后就会在制定的日志文件位置产生相应的日志记录
==========================================================
实验操作三:远程日志,发送机与接收机
远程日志:
两台机器:一台接收日志、一台发送日志
产生日志服务器指定收集日志服务器IP,收集日志服务器打开日志接收功能
产生日志服务器:
[root@log-sending ~]# vim /etc/rsyslog.conf
*.* @10.11.67.31 //注意@:使用udp @@:使用tcp
第一个*可以改为别的,设定只接受指定服务日志
kern.* @10.11.67.31
local0.* @10.11.67.31
[root@log-sending ~]# systemctl restart rsyslog
日志收集服务器
[root@log-receive ~]# vim /etc/rsyslog.conf 修改配置文件打开日志接收功能
MODULES模块
打开@udp接收功能
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
打开@@tcp接收功能
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
[root@log-receive ~]# systemctl restart rsyslog
[root@log-receive ~]# tailf /var/log/messages //通过系统主日志文件查看远程接收
如果想在日志接收机上自定义远程日志的存储位置
[root@log-receive ~]# vim /etc/rsyslog.conf
syslog.* /mnt/receive.log
[root@log-receive ~]# systemctl restart rsyslog
[root@log-receive ~]# tailf /mnt/receive.log
==================================================
二、logrotate日志轮转(切割)
①、如果没有日志轮转,日志文件会越来越大,最后导致日志打不开或者是打开时间过长
②、将丢弃系统中最旧的日志文件,以节省空间
③、 logrotate本身不是系统进程,即日志的轮转不会自动执行,它是通过写到相应的配置文件中使用计划任务crond每天执行
④、对日志的切割,你只需要给他定义一个规则
[root@logrotate ~]# rpm -qa |grep logrotate
logrotate-3.7.8-16.el6.x86_64
logrotate是一个异类,安装即可用
系统默认都是安装好了的,没有安装就安装一下,并且这个程序安装后不用开启服务,修改后写到配置文件后会自动执行
logrotate 配置文件:主配置文件决定全局日志轮转规则,子配置文件决定特定服务(rpm安装的程序)的日志轮转规则
服务日志的轮转规则文件是在安装rpm包时就自动提供的,无需人为手动编写,只有自己创建的日志文件才需要自己编写日志轮转规则文件
logrotate主配置文件:[root@logrotate ~]# vim /etc/logrotate.conf
logrotate子配置文件:[root@logrotate ~]# ls /etc/logrotate.d/
chrony ppp wpa_supplicant syslog yum httpd
全局配置
hourly、daily、weekly、monthly、yearly //轮转的周期
rotate 4 //保留4份
create //轮转后创建新文件 create mode owner group 创建新文件、权限、属主、属组
dateext //使用日期作为后缀
compress //是否压缩
minsize 1M //最小达到1M才轮转,即到了规定的时间未达到大小不会轮转
maxsize 100M //最大达到100M才轮状
missingok //丢失不提示
notifempty //如果为空,不轮转
可以模仿/etc/logrotate.d/目录下面已经存在的日志切割配置格式,进行配置自己的日志文件
[root@logrotate ~]# vim /etc/logrotate.d/ssh
/mnt/ssh.log {
dateext
rotate 4
missingok
notifempty
size 30k
yearly
create 0600 root root
}
[root@logrotate ~]# logrotate -f /etc/logrotate.conf
[root@logrotate ~]# ls /mnt
ssh.log ssh.log-20201026
说明:
当切割之后创建新文件,新文件有新的inode number
如果希望进程如rsyslog、nginx进程会把新的日志写入新日志文件中,应该在日志切割后,告诉一下rsyslog、nginx进程reload 或 信号(1 or HUP)
postrotate
kill -1 进程pid
endscript
[root@logrotate ~]# logrotate -f /etc/logrotate.conf 强制立即执行,检验设置是否成功