重庆网站建设重庆网站建设公司网站建设/免费模板素材网站

重庆网站建设重庆网站建设公司网站建设,免费模板素材网站,网站运营需要,微信分身网页版网址Python 脚本,实现以下功能: 按日期自动生成日志文件(例如 cpu_mem_20231001.csv)当 CPU 或内存超过阈值时触发记录独立记录报警事件(保存到 alert.log)支持自定义阈值和监控间隔 脚本代码 import psutil …

Python 脚本,实现以下功能:

  1. 按日期自动生成日志文件(例如 cpu_mem_20231001.csv
  2. 当 CPU 或内存超过阈值时触发记录
  3. 独立记录报警事件(保存到 alert.log
  4. 支持自定义阈值和监控间隔

脚本代码

import psutil
import time
import csv
import argparse
from datetime import datetime
import osdef parse_args():"""解析命令行参数"""parser = argparse.ArgumentParser(description='监控 CPU 和内存使用情况')parser.add_argument('--cpu-threshold', type=float, default=80.0,help='CPU 使用率阈值(默认 80%%)')parser.add_argument('--mem-threshold', type=float, default=80.0,help='内存使用率阈值(默认 80%%)')parser.add_argument('--interval', type=int, default=5,help='监控间隔时间(秒,默认 5)')parser.add_argument('--log-dir', type=str, default='logs',help='日志存储目录(默认 ./logs)')return parser.parse_args()def get_log_path(log_dir):"""生成按日期命名的日志文件路径"""os.makedirs(log_dir, exist_ok=True)date_str = datetime.now().strftime("%Y%m%d")return os.path.join(log_dir, f"cpu_mem_{date_str}.csv")def init_log_file(file_path):"""初始化日志文件(写入表头)"""if not os.path.exists(file_path):with open(file_path, 'w', newline='') as f:writer = csv.writer(f)writer.writerow(["Timestamp", "CPU%", "Memory%", "Memory_Used_GB", "Memory_Total_GB", "Alert"])def log_alert(message, log_dir):"""记录报警事件到独立文件"""alert_path = os.path.join(log_dir, "alert.log")with open(alert_path, 'a') as f:f.write(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] {message}\n")def monitor():args = parse_args()current_log_path = Nonewhile True:# 获取当前日志路径(按日期)new_log_path = get_log_path(args.log_dir)if new_log_path != current_log_path:current_log_path = new_log_pathinit_log_file(current_log_path)# 获取系统数据timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")cpu_percent = psutil.cpu_percent(interval=1)mem = psutil.virtual_memory()mem_percent = mem.percentmem_used_gb = round(mem.used / (1024 ** 3), 2)mem_total_gb = round(mem.total / (1024 ** 3), 2)# 判断是否触发报警alert = ""if cpu_percent > args.cpu_threshold:alert += f"CPU超过阈值({args.cpu_threshold}%) "if mem_percent > args.mem_threshold:alert += f"内存超过阈值({args.mem_threshold}%)"# 写入日志with open(current_log_path, 'a', newline='') as f:writer = csv.writer(f)writer.writerow([timestamp, cpu_percent, mem_percent,mem_used_gb, mem_total_gb, alert.strip()])# 记录独立报警日志if alert:log_alert(alert, args.log_dir)# 等待下次监控time.sleep(args.interval)if __name__ == '__main__':monitor()

功能说明

1. 按日期生成日志
  • 日志文件保存在 ./logs 目录(可通过 --log-dir 修改路径)
  • 每日生成一个文件,例如 cpu_mem_20231001.csv
  • 文件结构示例:
    Timestamp,CPU%,Memory%,Memory_Used_GB,Memory_Total_GB,Alert
    2023-10-01 14:30:00,15.2,32.1,4.2,13.0,
    2023-10-01 14:30:05,89.5,85.3,11.1,13.0,"CPU超过阈值(80.0%) 内存超过阈值(80.0%)"
    
2. 阈值报警
  • 默认阈值:CPU > 80% 或 内存 > 80%(可命令行修改)
  • 报警记录位置logs/alert.log,内容示例:
    [2023-10-01 14:30:05] CPU超过阈值(80.0%) 内存超过阈值(80.0%)
    
3. 命令行参数
# 示例:设置 CPU 阈值 70%,内存阈值 90%,间隔 10 秒
python3 monitor.py --cpu-threshold 70 --mem-threshold 90 --interval 10
  • 参数列表
    • --cpu-threshold:CPU 报警阈值(百分比)
    • --mem-threshold:内存报警阈值(百分比)
    • --interval:监控间隔(秒)
    • --log-dir:日志目录路径

运行方式

1. 安装依赖
pip install psutil
2. 启动监控
# 后台运行(日志保存到 ./logs)
nohup python3 monitor.py > /dev/null 2>&1 &
3. 查看日志
# 实时跟踪当天日志
tail -f logs/cpu_mem_$(date +%Y%m%d).csv# 查看报警日志
cat logs/alert.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Oracle】19c数据库控制文件多路径配置

一、关闭数据库(2个节点实例都要关闭) srvctl stop database -d ora19c 二、多路径控制文件 打开其中一个节点到nomount状态 sqlplus / as sysdba startup nomount; [oracleora19c1:/home/oracle]$ rman target / RMAN> restore controlfile to…

大模型训练全流程深度解析

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 1. 大模型训练概览1.1 训练流程总览1.2 关键技术指标 2. 数据准备2.1 数据收集与清洗2.2 数据…

【Linux】进程(1)进程概念和进程状态

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:Linux 目录 前言 一、什么是进程 二、task_struct的内容 三、Linux下进程基本操作 四、父进程和子进程 1. 用fork函数创建子进程 五、进程状态 1. 三种重…

odbus TCP转Modbus RTU网关快速配置案例

Modbus TCP 转Modbus RTU网关快速配置案例 在工业自动化领域,Modbus 协议以其简洁和高效而著称,成为众多设备通信的首选。 随着技术的发展和应用场景的变化,Modbus 协议也发展出了不同的版本,其中 Modbus TCP 和 Modbus RTU 是两种…

《高效迁移学习:Keras与EfficientNet花卉分类项目全解析》

从零到精通的迁移学习实战指南:以Keras和EfficientNet为例 一、为什么我们需要迁移学习? 1.1 人类的学习智慧 想象一下:如果一个已经会弹钢琴的人学习吉他,会比完全不懂音乐的人快得多。因为TA已经掌握了乐理知识、节奏感和手指…

Android 手机启动过程

梳理 为了梳理思路,笔者画了一幅关于 Android 手机启动的过程图片内容纯属个人见解,如有错误,欢迎各位指正

【Linux】:封装线程

朋友们、伙计们,我们又见面了,本期来给大家带来封装线程相关的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结…

星越L_三角指示牌及危险警示灯使用

目录 1.打开危险警告灯 2.取出反光背心穿上 3.取出指示牌 4.放置三角指示牌。 1.打开危险警示灯 2.取出反光背心穿上 3.取出指示牌

AI与人的智能,改变一生的思维模型【7】易得性偏差

目录 **易得性偏差思维模型:大脑的「热搜算法」与反操纵指南****病毒式定义:你的大脑正在被「热搜」劫持****四大核心攻击路径与史诗级案例****1. 信息过载时代的「认知短路」****2. 媒体放大器的「恐怖滤镜」****3. 个人经验的「数据暴政」****4. 社交茧…

Jmeter的简单使用

前置工作 确保java8 版本以上jmeter下载路径(选择Binaries):https://jmeter.apache.org/download_jmeter.cgi直接解压,找到bin下面的文件:jmeter.bat(可选)汉化,修改 jmeter.proper…

MyBatis源码分析の配置文件解析

文章目录 前言一、SqlSessionFactoryBuilder1.1、XMLConfigBuilder1.2、parse 二、mappers标签的解析2.1、cacheElement2.1.1、缓存策略 2.2、buildStatementFromContext2.2.1、sql的解析 前言 本篇主要介绍MyBatis源码中的配置文件解析部分。MyBatis是对于传统JDBC的封装&…

golang快速上手基础语法

变量 第一种,指定变量类型,声明后若不赋值,使用默认值0 package mainimport "fmt"func main() {var a int //第一种,指定变量类型,声明后若不赋值,使用默认值0。fmt.Printf(" a %d\n"…

工程实践:如何使用SU17无人机来实现室内巡检任务

阿木实验室最近发布了科研开发者版本的无人机SU17,该无人机上集成了四目视觉,三维激光雷达,云台吊舱,高算力的机载计算机,是一个非常合适的平台用于室内外巡检场景。同时阿木实验室维护了多个和无人机相关的开源项目。…

蓝桥杯嵌入式赛道复习笔记1(led点亮)

前言 基础的文件创建,参赛资源代码的导入,我就不说了,直接说CubeMX的配置以及代码逻辑思路的书写,在此我也预祝大家人人拿国奖 理论讲解 原理图简介 1.由于存在PC8引脚到PC15引脚存在冲突,那么官方硬件给的解决方案…

Linux进程1.0--task_struct

1.硬件:冯诺依曼体系结构: 单个分析:、 数据流向:数据必须先进入输入设备,再到存储器,然后由存储器给控制器,控制器收到以后进行相应的处理后,再传回存储器,存储器最终传…

代码随想录day17 二叉树part05

654.最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums …

宇树人形机器人开源模型

1. 下载源码 https://github.com/unitreerobotics/unitree_ros.git2. 启动Gazebo roslaunch h1_description gazebo.launch3. 仿真效果 H1 GO2 B2 Laikago Z1 4. VMware: vmw_ioctl_command error Invalid argument 这个错误通常出现在虚拟机环境中运行需要OpenGL支持的应用…

通过特征值和特征向量实现的图像压缩和特征提取

前文,我们在学习人工智能的线性代数基础的时候,就了解到,矩阵在人工智能中被广泛使用,接下来我们就从大家非常常见的图像开始,深度理解矩阵在人工智能中的应用。有关线性代数基础的文章可以看的我CSDN:人工智能中的线性…

蓝桥杯2023年第十四届省赛真题-整数删除 暴力-->链表+小根堆

题目来自DOTCPP: 思路: ①每次找到数列中的最小值下标,然后用状态数组st标记它,相当与删除它,之后就不会访问它。 ②对最小值下标左边和右边判断一下,看有没有数字,如果有就把最小值加到两边第…

springboot438-基于SpringBoot的数字化教学资源管理系统(源码+数据库+纯前后端分离+部署讲解等)

💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm&#xf…