• linux系统 系统级日志治理


    相当不错得参考文档
    不错得博主
    很全面得文章
    日志管理
    基本情况介绍:
    两个进程
    进程一: rsyslogd 系统日志管理
    主要得作用是: 收集哪类程序得哪种级别得日志,并为其找个位置
    进程二: logrotate 日志轮询
    主要得作用是: 对产生得日志进行自定义管理(日志文件得大小、如何删除已产生得日志等)

    rsyslogd :
    centos7 系统默认已安装得服务
    启动方式
    systemctl status rsyslog
    /etc/rsyslog.conf # 默认得主配置文件
    /etc/sysconfig/rsyslog # rsyslogd 相关文件,定义级别(可以看看)
    #####日志分割######
    /etc/logrotate.d/syslog #日志轮询配置
    rpm -qc rsyslog

    cat /etc/logrotate.d/syslog
    /var/log/cron
    /var/log/maillog
    /var/log/messages
    /var/log/secure
    /var/log/spooler
    {
    sharedscripts
    dateext #使用日期作为后缀
    rotate 25 #保留25份
    size 40M
    compress #使用压缩
    dateformat -%Y%m%d%s
    postrotate
    /bin/kill -HUP cat /var/run/syslogd.pid 2> /dev/null 2> /dev/null || true
    endscript
    }

    nginx 日志分隔配置文件

    cat  /etc/logrotate.d/nginx
    /var/log/nginx/access.log
    { 
    daily 
    rotate 7 
    missingok 
    #notifempty 
    compress
    dateext 
    create 0640 root root
    sharedscripts
    dateformat  -%Y%m%d%s
    postrotate
        if [ -f /run/nginx.pid ]; then
            kill -USR1 `cat /run/nginx.pid`
        fi
    endscript
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #立即执行nginx 得日志分隔

    logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:

    参数 功能
    compress 通过gzip 压缩转储以后的日志
    dateext: 表示添加YYYYMMDD形式字符串作为文件名一部分
    nocompress 不需要压缩时,用这个参数
    copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
    nocopytruncate 备份日志文件但是不截断
    create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
    nocreate 不建立新的日志文件
    delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
    nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
    errors address 专储时的错误信息发送到指定的Email 地址
    ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
    notifempty 如果是空文件的话,不转储
    mail address 把转储的日志文件发送到指定的E-mail 地址
    nomail 转储时不发送日志文件
    olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
    noolddir 转储后的日志文件和当前日志文件放在同一个目录下
    sharedscripts 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
    prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
    postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
    daily 指定转储周期为每天
    weekly 指定转储周期为每周
    monthly 指定转储周期为每月
    rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
    tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
    size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

    在/etc/logrotate.d 编辑文件,下面是部分语法内容
    daily : 指定每天自动切割
    weekly: 指定每周自动切割
    monthly: 指定每月自动切割
    rotate [值]: 保留日志文件个数
    notifempty: 空文件不切割
    nocompress: 不压缩日志文件
    delaycompress: 延迟压缩(当次切割不压缩,下次切割再压缩上一个文件)
    create 0640 nginx root 指定新文件权限,属主属组
    prerotate [命令] endscript 指定切割前进行命令操作
    postrotate [命令] endscript 指定切割后进行命令操作
    missingok 如果日志不存在,不提示错误
    nomissingok 如果日志不存在,提示错误,默认值
    示例1: 治理系统日志

    [root@cg-app ~]# cat /etc/logrotate.d/rsyslog 
    /var/log/cron
    /var/log/maillog
    /var/log/messages
    /var/log/secure
    /var/log/spooler
    {
        daily                      #每天轮询一次     
        rotate 6                   #指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
        notifempty                 # 如果是空文件的话,不转储
        compress                   #  通过gzip 压缩转储以后的日志
        dateext                    #表示添加YYYYMMDD形式字符串作为文件名一部分    
        dataformat	-%Y%m%d%s     # 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
        copytruncate              #用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。
        missingok                 # 如果日志丢失,不报错继续滚动下一个日志
        size 40M                  #      当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
        sharedscripts              #     运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
        postrotate
            /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
        endscript
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 相关阅读:
    Vue.js 2 —组件(Component)化编程
    Linux基础测试题(虚拟机和物理机相ping出现的问题)
    亚马逊鲲鹏系统:批量注册亚马逊买家号软件
    认识 ArkTS 语法
    ros使用rviz订阅Image类型话题,显示yolov7目标检测结果
    智慧采购管理系统电子招投标优势浅析,助力建筑工程企业高效做好采购管理工作
    vivo 万台规模 HDFS 集群升级 HDFS 3.x 实践
    分布式秒杀方案--java
    18.flink kafka使用thrift序列化
    2023/9/30 -- ARM
  • 原文地址:https://blog.csdn.net/renren_100/article/details/126205895