美文网首页
Golang 实现自动清理日志,可用于生产环境 (1)

Golang 实现自动清理日志,可用于生产环境 (1)

作者: 彩色代码 | 来源:发表于2020-08-27 09:34 被阅读0次

    功能介绍

    • 通过配置清理日志规则,配合cron,实现磁盘达到阈值自动清理
    • 支持自定义邮件收件人
    • 支持规则自定义
    • 支持全局规则设定
    • 禁止根目录和一级目录
    • 支持debug,该模式下,只显示满足条件的文件,但不执行删除或清空

    开发环境

    • Goland 2020.1
    • go version go1.14.3 darwin/amd64
    • Mac

    规则说明

    -
      dir : /workspace/logs/webapps
      suffix : .log
      beforeTime : 1300
      mode : rm
      retain  : 0
      minSize : 0
      debug : true
    
    # dir 目录 (必填),目录最少2级,限制根目录和一级目录
    # suffix 后缀 (必填:二选1:前缀或后缀,后缀优先),允许的后缀:".log",".json",".gz",".tgz",".tar",".zip",".rar",".mp4",".out",".bz2",".txt"
    # prefix 前缀 (必填:二选1:前缀或后缀,后缀优先),前缀必须包含 . 且文件的后缀长度大于8 ,避免勿删,例如:log.inc.java ,后缀为java,会跳过文件
    # beforeTime 查找多少分钟前的文件 (选填,默认0,单位分钟)
    # mode 执行方式,rm=删除,null=清空-写成空文件,waring=告警-只告警不处理 (选填,默认 null)
    # retain 保留文件个数 (选填,默认0)
    # minSize 最小文件大小,大于这个值才会执行 (选填,默认 0,单位 Mb)
    # debug 测试模式,开启=true,关闭=false 或 不设置 (选填,默认:false)只显示要执行的结果,不实际执行
    
    

    执行方法

    clear-disk --help
    
      -config-dir string
            配置目录 (default "./rules/")
      -config-file string
            指定配置文件
      -email string
            指定邮箱收件人
      -help
            显示帮助
      -min-size float
            阈值比例,例如:磁盘使用率大于90%后执行 (default 90)
    
    举例:默认:遍历配置目录,配置目录为当前相对目录./rules/
    clear-disk
    
    举例:指定配置文件
    clear-disk --config-file=user.yml
    
    举例:指定配置目录
    clear-disk --config-dir=/workspace/agent/auto-clear-log/rules/
    
    举例:设定阈值,磁盘超过90之后,执行清理,小于阈值时,不做任何操作
    clear-disk --min-size=90
    
    举例:邮件收件人,磁盘超过90之后,执行清理之后,自动发邮件通知,多个地址用逗号隔开
    清理之后,磁盘容量如果小于阈值90,则发普通邮件标题,如果还是超过阈值,则标题包含 【磁盘容量不足警告】
    
    clear-disk --email=test1@sina.com,test2@sina.com
    
    

    执行结果

    [开始时间] 2020-07-31 21:30:02
    +-----------------------------------------------------------------------+
    [磁盘信息] 使用比例: 52.8%, 磁盘容量:78.6G, 剩余容量: 35.5G
    +-----------------------------------------------------------------------+
    [配置文件] ./rules/default.yml
    +-----------------------------------------------------------------------+
    [清空] 2020-07-31 16:30:02 ➜ /workspace/logs/webapps/a.access.log 104.0M [Debug]
    [忽略] 2020-07-31 16:30:01 ➜ /workspace/logs/webapps/b.log 27.7M
    +-----------------------------------------------------------------------+
    [成功清理] 0B
    [预估清理] 485.3M
    [完成时间] 2020-07-31 21:30:05
    

    更多内容请看下篇文章

    相关文章

      网友评论

          本文标题:Golang 实现自动清理日志,可用于生产环境 (1)

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