python监控机器(第1版)
# coding:utf-8
import configparser
import logging
import os
import psutil
import ctypes
import platform
import schedule
import time # 配置日志
def configLog():
logging.basicConfig(level=logging.INFO, # 控制台打印的日志级别
filename='monitor.log',
filemode='a', ##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
# a是追加模式,默认如果不写的话,就是追加模式
format=
'%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
# 日志格式
) # 初始化配置参数
def init():
configLog()
cf = configparser.ConfigParser()
cf.read("config.ini","UTF-8")
secs = cf.sections()
print(cf.get("backupFiles","valve")) # 备份文件监控任务
def backupFilesMonitorJob(dir,files):
for x in files:
if not os.path.exists(dir+x):
print("日常备份文件%s%s还未备份"%(dir,x)) # 核心文件监控任务
def coreFilesMonitorJob(dir,files):
for x in files:
if not os.path.exists(dir+x):
print("core文件%s%s还未备份"%(dir,x)) # 数据库备份文件监控任务
def databaseBackupMonitorJob(dir,files):
for x in files:
if not os.path.exists(dir+x):
print("core文件%s%s还未备份"%(dir,x)) # 进程监控任务
def processMonitorJob(processNames):
for x in processNames:
for p in psutil.process_iter():
if p.name() == x:
print("进程状态",p.name)
break; # 磁盘监控任务
def diskCapacityMonitorJob(folder):
freeSpace = 0
if platform.system() == 'Windows':
free_bytes = ctypes.c_ulonglong(0)
ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(folder), None, None, ctypes.pointer(free_bytes))
freeSpace = free_bytes.value/1024/1024/1024
else:
st = os.statvfs(folder)
freeSpace = st.f_bavail * st.f_frsize/1024/1024
# print(freeSpace,"GB")
if freeSpace <= 50:
print("警告,磁盘空间不足50GB,当前仅剩%i GB,[当前时间:%s]"%(freeSpace,time.strftime('%Y.%m.%d %H:%M:%S',time.localtime(time.time())))) schedule.every(3).seconds.do(processMonitorJob,processNames = ['QQ.exe','chrome.exe'])
schedule.every(10).seconds.do(diskCapacityMonitorJob,"C:\\")
schedule.every(10).seconds.do(backupFilesMonitorJob,"C:\\",["demo.txt","demo2.txt"])
schedule.every(10).seconds.do(coreFilesMonitorJob,"C:\\",["demoa.txt","demob.txt"])
schedule.every(10).seconds.do(databaseBackupMonitorJob,"C:\\",["data1.txt","data2.txt"]) if __name__ == "__main__":
while True:
schedule.run_pending()
python监控机器(第1版)的更多相关文章
- python监控端口脚本[jkport2.0.py]
#!/usr/bin/env python #!coding=utf-8 import os import time import sys import smtplib from email.mime ...
- python之环境搭建windows版
1.先到python官网下载属于自己的的python版本,有linux版,有mac版,有windows版:https://www.python.org/downloads/windows/ 2.下载完 ...
- Python监控网站接口值
Python监控网站接口值: #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'liudong' import urllib,sy ...
- Python 监控nginx服务是否正常
Python 监控nginx服务是否正常 #!/usr/bin/env python import os, sys, time from time import strftime while True ...
- [原创] zabbix学习之旅七:如何远程操作被监控机器
虽然我们已经创建了一个报警系统,但在实际场景中,运维人员从得到报警到实际解决问题有一定的时差,若业务系统没有做高可用,那业务不得不中断,对于某些要求严格的企业级环境,这是不可容忍的,那有没有方法能让z ...
- 《python参考手册(第四版)》【PDF】下载
<python参考手册(第四版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382222 内容介绍 本书是权威的Python语 ...
- 《利用Python进行数据分析·第2版》
<利用Python进行数据分析·第2版> 第 1 章 准备工作第 2 章 Python 语法基础,IPython 和 Jupyter第 3 章 Python 的数据结构.函数和文件第 4 ...
- Python基础教程-第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Python基础教程-第3版 备用下载:Python基础教程-第3版
- Python监控文件变化:watchdog
Python监控文件变化有两种库:pyinotify和watchdog.pyinotify依赖于Linux平台的inotify,后者则对不同平台的的事件都进行了封装.也就是说,watchdog跨平台. ...
随机推荐
- C# 《编写高质量代码改善建议》整理&笔记 --(五)成员设计
1.可以字段应该重构为属性 2.谨慎将数组或集合作为属性 数组和集合作为属性存在会引起这样的一个分歧:如果属性是只读的,我们通常会认为他是不可改变的.但是如果将只读属性应用于数组和集合,而元素的内容和 ...
- JAVA线程池学习,ThreadPoolTaskExecutor和ThreadPoolExecutor有何区别?
初学者很容易看错,如果没有看到spring或者JUC源码的人肯定是不太了解的. ThreadPoolTaskExecutor是spring core包中的,而ThreadPoolExecutor是JD ...
- JSP 状态管理 -- Session 和 Cookie
Http 协议的无状态性 无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求.但是同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚才那个浏览器 session sessio ...
- zk分布式任务管理
在我们的系统开发过程 中不可避免的会使用到定时任务的功能,而当我们在生产环境部署的服务超过1台时,就需要考虑任务调度的问题,防止两台或多台服务器上执行同一个任务,这个问题今天咱们就用zookeeper ...
- Springboot 系列(十一)使用 Mybatis(自动生成插件) 访问数据库
1. Springboot mybatis 介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数获取 ...
- Ambiguous HTTP method Actions require an explicit HttpMethod binding for Swagger 2.0
异常内容 NotSupportedException: Ambiguous HTTP method for action . Actions require an explicit HttpMetho ...
- js获取url 中的值,并跳转相应页面
实现方法:一:获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET1.函数: <Script lang ...
- 使用Golang搭建web服务
如何用golang搭建一个web服务呢?菜鸟官网的go web编程教程已经介绍了web服务器的工作原理,这里就不赘述了. 我们先看个例子:http.go package main import ( & ...
- Dubbo和Spring Cloud微服务架构'
微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案,但业 ...
- Java学习点滴——Class和反射
基于<Java编程思想>第四版 前言 我们要操作一个类实例对象时,一般都要先知道这个类有哪些方法或者成员变量.反射就是在我们不知道这个类有哪些方法或成员变量时,使用特定方式得到类的这些信息 ...