python系列之:监控服务器内存、磁盘、cpu等信息,发送告警信息到飞书

527 篇文章 535 订阅 ¥49.90 ¥99.00

程序统计发送的信息如下所示:

kafka服务器信息:
      当前时间:  2022-02-24 16:27:22
      服务器名称:  kafka1
      ip地址:  10.130.10.130
      内存总量:  30.8G
      可用内存:  22.5G
      已用内存:  7.9G
      内存利用率:  27.0%
      磁盘空间总量:  499.9G
      磁盘可用空间:  372.9G
      磁盘已用空间:  127.1G
      磁盘空间利用率:  25.4%
      cpu个数:  8
      cpu利用率:  4.0%
      用户进程执行时间百分比:  2.6%
      系统进程执行
  • 1
    点赞
  • 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
发出的红包

打赏作者

最笨的羊羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值