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

2020-08-27  本文已影响0人  彩色代码

功能介绍

开发环境

规则说明

-
  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

更多内容请看下篇文章

上一篇下一篇

猜你喜欢

热点阅读