系统日志轮转
系统日志轮转
一,系统日志
何时、何地、(来源ip)、何人(账户或者服务器名称)、做了什么动作。
二、常用的系统日志
/var/log/massage
这个文件相当重要、几乎所发生的错误信息都会在这个文件中;系统莫名出错应首先查询这个目录。
/var/log/secure
基本上,只要涉及到“需要输入密码”的软件,那么登录时(不论密码正确错误)都会记录在此。su,sudo,ssh,telnet等登录信息都记录在这里。
/var/log/boot.log
开机的时候系统核心回去侦察和启动硬件,保存开机信息。
/var/log/cron
图片.png图片.png
日志服务和配置文件
1.查看日志和服务状态
systemctl status rsyslog.service
rsyslog.service的配置文件
既然是服务,就会有配置文件。
/rtc/rsyslog.conf
配置文件用于设置
(1)什么服务(2)的什么级别信息(3)需要被记录在哪里(设备或文件)
比如:
cron.* /var/log/cron
表示关于计划任务的所有级别的信息,都记录在/var/log/cron文件中
*.info; mail.none; authoriv.none; cron.none /var/log/messages表示所有服务端info级别的信息,邮件的none级别的信息,登录认证的none基本的信息和计划服务的none基本信息都记录到/var/log/message文件中。
Linux核心的syslog认识的服务类型主要有下面这些:
图片.png
Linux核心的syslog定义的日志级别:
图片.png
添加额外的日志文件
1.编辑/etc/rsyslog。conf文件
#Add other file
*.info /var/log/shark.log
保存退出后
重启服务
systemctl restartrsys.log
把一个Linux主机设置为日志服务器
通过配置/etc/rsyslog.conf 可以把一个Linux主机配置成一台日志服务器,这样其他的Linux主机的日志,除了记录在自己的本地外你还会发送这台日志给服务器上一份。
服务端的设置
1.编辑 /etc/rssyslig.conf
#provides TCP syslog reception
$ModLoad imtcp
$InputTCPserverRun 514
重启服务
systenctl restart rsyslog.service
查看监听端口
[~]ss -natal |grep 514
LISTEN 0 25 *:514 *:*
LISTEN 0 25 :::514 :::*
客户端设置
编辑 /etc/rstslog.conf
*.* @@192.168.1.100
图片.png
*日志轮转 !!!
日志轮转也叫日志切割,通俗来讲就是对日志文件进行大小的控制。
Linux 系统通常会长时间的不停机运行,这样就会产生好多信息记录到不同的日志中。随着时间的推移,日志的容量自然会越来越大,那问题就来了,硬盘的空间是有限的,那为了控制日志文件的大小,就需要对日志文件进行控制。
同时是把目前的日志文件改名,紧接着创建一个新的日志文件,名称和原来的一样,重启服务进程,让其向新的日志文件中写日志。
实施程序!!!!!!!!!
logrotate负责对日志的轮转。
通过定时任务每天会执行一次。
[root@shark ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
logrotate 的配置文件
/etc/logrotate.conf
主配置文件,设置默认值
/etc/logrotate.d/
被包含的子配置文件,可以对某一些服务设置特定的配置
看下logrotate.conf配置:
cat /etc/logrotate.conf
底下的设定是 "logrotate 的默认值" ,如果別的文件设定了其他的值,
就会以其它文件的设定为主
weekly //默认每一周执行一次rotate轮转工作
rotate 4 //保留多少个日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数,0 指没有备份
create //自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志
dateext //这个参数很重要!就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
compress //是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行
monthly //每月一次切割,取代默认的一周
minsize 1M //文件大小超过 1M 后才会切割
create 0664 root utmp //指定新建的日志文件权限以及所属用户和组
rotate 1 //只保留一个日志.
compress 通过gzip 压缩转储以后的日志
nocompress 不做gzip压缩处理
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。
nocopytruncate 备份日志文件不过不截断
create mode owner group 轮转时指定创建新文件的属性,如create 0777 nobody nobody
nocreate 不建立新的日志文件
delaycompress 和compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
missingok 如果日志丢失,不报错继续滚动下一个日志
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
notifempty 当日志文件为空时,不进行轮转
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
sharedscripts 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
prerotate 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行
postrotate 在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
dateext 使用当期日期作为命名格式
dateformat .%s 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
size(或minsize) log-size 当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
当日志文件 >= log-size 的时候就转储。 以下为合法格式:(其他格式的单位大小写没有试过)
size = 5 或 size 5 (>= 5 个字节就转储)
size = 100k 或 size 100k
size = 100M 或 size 100M