美文网首页
系统日志轮转

系统日志轮转

作者: linux_python | 来源:发表于2019-08-03 14:02 被阅读0次

    系统日志轮转

    一,系统日志

    何时、何地、(来源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
    

    相关文章

      网友评论

          本文标题:系统日志轮转

          本文链接:https://www.haomeiwen.com/subject/hyiirctx.html