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

老王知识加油站 · · 2144 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

功能介绍

  • 通过配置清理日志规则,配合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)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2144 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传