python监控linux环境磁盘空间,并通过钉钉通知
时间:2023-03-24
本文章向大家介绍python监控linux环境磁盘空间,并通过钉钉通知,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# -*- coding: utf-8 -*- import psutil import time from dingtalkchatbot.chatbot import DingtalkChatbot from datetime import datetime import os from os.path import join,getsize import io import re import json def listen_disc(cfg):#监控磁盘剩余空间webhook, secret disc = psutil.disk_usage('/') # 监控的磁盘路径 # print("磁盘空间使用了:%.1f GB,空闲:%.1fGB,总共:%.1f GB,使用率%.1f%%," % ( # disc.used / 1024 / 1024 / 1024, disc.free / 1024 / 1024 / 1024, # disc.total / 1024 / 1024 / 1024, disc.percent) + '\n') used_disc= disc.used / 1024 / 1024 / 1024 free_disc=disc.free / 1024 / 1024 / 1024 total_disc=disc.total / 1024 / 1024 / 1024 used_percent=disc.percent all="" #array=[] str_disc='' #all="磁盘空间使用了:"+str(round(used_disc,0))+"空闲:"+str(round(free_disc,0))+"总共:"+str(round(total_disc,0))+'\n' if float(disc.percent)>80: result='\n' title_name="磁盘空间使用率已达到"+str(used_percent)+'!\n' #disc_array=['/var/log','/opt/jmeter/apache-jmeter-5.4.3','/home/yan'] disc_array=cfg['disc_array'] print("disc_array is44:", disc_array) for i in disc_array: str_disc=str_disc+i.replace('[','').replace(']','')#去除[]符号 if ',' in str_disc:#以逗号为分隔符 arr=str_disc.split(',') print("arr is",arr) print("要监控的路径是:",arr) for disc1 in arr: begin='' size=0 for root,dirs,files in os.walk(disc1): size+=sum([getsize(join(root,name)) for name in files]) begin=begin+disc1+"=="+str(round(size/1024/1024/1024,1))+"GB"+ ';\n\n' #print("%s文件夹大小为:%.1fGB"%(disc1,size / 1024 / 1024 / 1024)) result=result+begin title_name=all+title_name+result print(title_name) dingtalk_robot(title_name,cfg) else: print("当前磁盘空间使用率合理") def dingtalk_robot(title_name,cfg): dogBOSS = DingtalkChatbot(cfg['webhook'], cfg['secrets']) red_msg = '<font color="#dd0000">%s</font>' % title_name #orange_msg = '<font color="#FFA500">级别:警告</font>' now_time = datetime.now().strftime('%Y.%m.%d %H:%M:%S') ip=cfg['ip'] url=cfg['url'] print("ip is:", ip) print("url is:", url) dogBOSS.send_markdown( title='来自服务器的提醒', #text="### **%s告警信息**\n %s\n\n **发送时间:** %s\n\n **磁盘空间清理:**[点击跳转] %s\n".format(ip,red_msg,now_time,url),is_at_all=False) text=f'### **{ip}告警信息**\n' f'{red_msg}\n\n' # f'**{orange_msg}**\n\n' f'**发送时间:** {now_time}\n\n' f'**磁盘空间清理:**[点击跳转]({url}) \n', is_at_all=False) def load_config():# 读取配置文件 pathfile = 'conf.txt' f = io.open(str(pathfile), "r") # 文件存放位置,自行修改 data = str(f.read()) f.close() dict = {} str_data = '' for i in data: str_data = str_data + i.strip('\n') # 去除换行符 if ';' in str_data: # 分号表示得到一个完整的数据,以这个数据为一个完整的整体进行切割 str_data = str_data[:-1] # 去除分号 arr = str_data.split('==') # 以==为分隔符切割数据 dict[arr[0]] = arr[1] # 按字典存储 str_data = '' # 重置变量用于下一个数据的切割 print(dict) return dict if __name__ == '__main__': cfg = load_config() # 读取配置文件 listen_disc(cfg) #执行监控
配置文件conf.txt,以分号为分隔符间隔每个参数;以双等号设置变量值;disc_array为列表格式的路径,把要监控的路径写里面,以英文格式的逗号分隔,例如:[a,b,c]
原文地址:https://www.cnblogs.com/yan-test/p/17251257.html
- 史上最全Git使用手册
- 我所理解的 PHP Trait
- 算法 | 数据结构常见的八大排序算法
- 高通量数据下载还能这样操作?
- ofbiz实体引擎(八) 创建表
- ofbiz实体引擎(七) 检查数据源
- ofbiz实体引擎(六) GenericHelper的初始化创建
- ofbiz实体引擎(五) ModelGroupReader
- HBitcoin:C#高级比特币钱包库 - 保护您的财产安全
- ofbiz实体引擎(四) ModelReader的作用
- ofbiz实体引擎(三) GenericDelegator实例化的具体过程
- 机器学习实战 | 第五章:模型保存(持久化)
- Python编程任务 | 斯坦福CS231n-深度学习与计算机视觉课程
- ofbiz实体引擎(二) delegator实例化具体方式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP从尾到头打印链表实例讲解
- python如何写try语句
- python怎么判断素数
- php数组遍历类与用法示例
- PHP格式化显示时间date()函数代码
- python操作微信自动发消息的实现(微信聊天机器人)
- 使用ITK-SNAP进行抠图操作并保存mask的实例
- Yii2框架加载css和js文件的方法分析
- php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
- python如何求圆的面积
- php实现微信公众号企业转账功能
- PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
- Python之Matplotlib文字与注释的使用方法
- Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
- python中return如何写