监控CPU、磁盘、内存使用情况,并报警

#!/bin/bash

#获取cpu使用率
cpuUsage=`top -n 1 | awk -F '[ %]+' 'NR==3 {print $2}'`
#获取磁盘使用率
data_name="/dev/sda1"
diskUsage=`df -h | grep $data_name | awk -F '[ %]+' '{print $5}'`
logFile=/apps/service/wy/jiankong.log
#获取内存情况
mem_total=`free -m | awk -F '[ :]+' 'NR==2{print $2}'`
mem_used=`free -m | awk -F '[ :]+' 'NR==2{print $3}'`
#统计内存使用率
mem_used_persent=`awk 'BEGIN{printf "%.0f\n",('$mem_used'/'$mem_total')*100}'`
#获取报警时间
now_time=`date '+%F %T'`
function send_mail(){
        mail -s "监控报警" 1183211046@qq.com < /apps/service/wy/jiankong.log
}
function check(){
        if [[ "$cpuUsage" > 80 ]] || [[ "$diskUsage" > 80 ]] || [[ "$mem_used_persent" > 80 ]];then
                echo "报警时间:$now_time" > $logFile
                echo -e "CPU使用率:$cpuUsage% \n磁盘使用率:$diskUsage% \n内存使用率:$mem_used_persent%" >> $logFile
                send_mail
        fi
}
function main(){
        check
}
main

 

转载于:https://www.cnblogs.com/bxbyy/p/7978038.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Python的psutil库获取系统CPU内存磁盘空间的使用情况使用matplotlib库绘制折线图,使用smtplib库发送邮件报警。 以下是一个简单的示例代码: ```python import psutil import matplotlib.pyplot as plt import datetime import time import smtplib from email.mime.text import MIMEText from email.header import Header # 发送邮件报警 def send_email_alert(subject, content): mail_host = "smtp.xxx.com" # 邮箱服务器地址 mail_user = "your_email" # 邮箱账号 mail_pass = "your_password" # 邮箱密码 sender = 'your_email' # 发件人邮箱 receivers = ['receiver_email'] # 收件人邮箱列表 message = MIMEText(content, 'plain', 'utf-8') message['From'] = Header("System Monitor", 'utf-8') message['To'] = Header("Admin", 'utf-8') message['Subject'] = Header(subject, 'utf-8') try: smtpObj = smtplib.SMTP_SSL(mail_host, 465) smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) smtpObj.quit() print("邮件发送成功") except smtplib.SMTPException as e: print("Error: 无法发送邮件") print(e) # 获取CPU内存磁盘空间使用情况 def get_system_info(): cpu_percent = psutil.cpu_percent() mem_percent = psutil.virtual_memory().percent disk_percent = psutil.disk_usage('/').percent return cpu_percent, mem_percent, disk_percent # 绘制折线图 def plot_line_chart(x, y, title, xlabel, ylabel): fig, ax = plt.subplots() ax.plot(x, y) ax.set(xlabel=xlabel, ylabel=ylabel, title=title) ax.grid() plt.show() # 监控近一年系统使用情况 def monitor_system(): # 初始化数据 cpu_data = [] mem_data = [] disk_data = [] time_data = [] # 监控近一年系统使用情况 for i in range(365): cpu_percent, mem_percent, disk_percent = get_system_info() cpu_data.append(cpu_percent) mem_data.append(mem_percent) disk_data.append(disk_percent) time_data.append(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) time.sleep(3600) # 每隔一个小时获取一次数据 # 绘制折线图 plot_line_chart(time_data, cpu_data, 'CPU Usage', 'Time', 'CPU Usage (%)') plot_line_chart(time_data, mem_data, 'Memory Usage', 'Time', 'Memory Usage (%)') plot_line_chart(time_data, disk_data, 'Disk Usage', 'Time', 'Disk Usage (%)') # 发送邮件报警 if max(cpu_data) >= 90: subject = 'CPU usage is too high!' content = 'The CPU usage is {}% at {}.'.format(max(cpu_data), time_data[cpu_data.index(max(cpu_data))]) send_email_alert(subject, content) if max(mem_data) >= 90: subject = 'Memory usage is too high!' content = 'The memory usage is {}% at {}.'.format(max(mem_data), time_data[mem_data.index(max(mem_data))]) send_email_alert(subject, content) if max(disk_data) >= 90: subject = 'Disk usage is too high!' content = 'The disk usage is {}% at {}.'.format(max(disk_data), time_data[disk_data.index(max(disk_data))]) send_email_alert(subject, content) if __name__ == '__main__': monitor_system() ``` 这个示例代码会每隔一个小时获取一次系统CPU内存磁盘空间的使用情况,并绘制近一年的折线图。如果某个指标的最大值超过90%,则会发送邮件报警。你需要将`your_email`和`your_password`替换成实际的邮箱账号和密码,将`mail_host`替换成实际的邮箱服务器地址,将`receiver_email`替换成实际的收件人邮箱。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值