瀏覽代碼

清除15天前的监控日志

James Iter 8 年之前
父節點
當前提交
236a6e9a6c
共有 3 個文件被更改,包括 36 次插入1 次删除
  1. 1 1
      docs/todo.md
  2. 3 0
      main.py
  3. 32 0
      models/initialize.py

+ 1 - 1
docs/todo.md

@@ -38,7 +38,7 @@
 - [x] 重新设计 JimV-N 到 JimV-C 的回调机制,现有实现比较混乱。改进为基于对象的回调
 - [x] 重新设计创建虚拟机机制,批量创建虚拟机时,依照宿主机负载大小,倒序依次挨个分配虚拟机的创建任务
 - [x] 规范日志路径。把日志路径调整至 /var/log/ 下
-- [ ] 去除15天前的监控日志
+- [x] 去除15天前的监控日志
 - [ ] 初始化页面检测redis、mysql是否准备好
 - [ ] 允许删除创建失败的虚拟机
 - [ ] 日志里面加入操作轨迹

+ 3 - 0
main.py

@@ -255,6 +255,9 @@ if __name__ == '__main__':
             t_ = threading.Thread(target=Init.pub_sub_ping_pong, args=())
             threads.append(t_)
 
+            t_ = threading.Thread(target=Init.clear_expire_monitor_log, args=())
+            threads.append(t_)
+
             for t in threads:
                 t.start()
 

+ 32 - 0
models/initialize.py

@@ -141,6 +141,38 @@ class Init(object):
             time.sleep(10)
             db.r.publish(app.config['instruction_channel'], message=json.dumps({'action': 'ping'}))
 
+    @staticmethod
+    def clear_expire_monitor_log():
+        from models import CPUMemory, Traffic, DiskIO, HostCPUMemory, HostTraffic, HostDiskUsageIO
+        from models import Utils
+
+        already_clear = False
+
+        while True:
+            if Utils.exit_flag:
+                print 'Thread clear_expire_monitor_log say bye-bye'
+                return
+
+            time.sleep(10)
+
+            # 每天凌晨3点30分执行,清除15天前的监控记录
+            if 12600 < ji.Common.ts() % 86400 < 12620 and not already_clear:
+                boundary = ji.Common.ts() - 86400 * 15
+                filter_str = 'timestamp:lt:' + boundary.__str__()
+
+                CPUMemory.delete_by_filter(filter_str=filter_str)
+                Traffic.delete_by_filter(filter_str=filter_str)
+                DiskIO.delete_by_filter(filter_str=filter_str)
+
+                HostCPUMemory.delete_by_filter(filter_str=filter_str)
+                HostTraffic.delete_by_filter(filter_str=filter_str)
+                HostDiskUsageIO.delete_by_filter(filter_str=filter_str)
+
+                already_clear = True
+
+            if already_clear and ji.Common.ts() % 86400 > 12620:
+                already_clear = False
+
 
 q_ws = JoinableQueue()
 # 预编译效率更高