python监控Linux服务器进程并邮件预警

# -*- coding: utf-8 -*-
import subprocess
import smtplib
import email.utils
#邮件正文ZZ
from email.mime.text import MIMEText

def send_email():
    #登录邮件服务器
    smtp_obj = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件⼈邮箱中的SMTP服务器,端⼝是25
    smtp_obj.login("@qq.com", "xxx") # 括号中对应的是发件⼈邮箱账号、邮箱密码
    smtp_obj.set_debuglevel(True)
    #smtp_obj.set_debuglevel(1) # 显示调试信息
    # 设置邮件头信息
    message = MIMEText("dadax-web进程消失,请手动拉起!!")
    message["From"] = email.utils.formataddr(('datax-web', 'xxx@qq.com')) # 发送者
    message["To"] = email.utils.formataddr(('恢复进程', 'xxx@163.com')) # 接收者
    message["Subject"] = 'datax-web进程消失,请手动拉起!!' # 主题
    # 发送
    try:
        smtp_obj.sendmail("xx@qq.com", ["xxx@163.com","xx@qq.com"], msg=message.as_string())
    finally:
        smtp_obj.quit()

def run_jps():
    try:
        # 执行jps命令
        result = subprocess.run(['jps'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
        admin_flag = 0
        executor_flag = 0
        # 打印命令的输出
        for line in result.stdout.splitlines():
            # print(line.split()[1])
            # print('========')
            if(line.split()[1] == 'DataXAdminApplication'):
                admin_flag = 1
            if(line.split()[1] == 'DataXExecutorApplication'):
                executor_flag = 1
        print(admin_flag,executor_flag)
        if(admin_flag == 1 & executor_flag == 1):
            print('进程正常')
        else:
            send_email()
        
        # 如果有错误,打印错误信息
        if result.stderr:
            print(result.stderr)
    except Exception as e:
        print(f"Error running jps: {e}")
 
# 调用函数
run_jps()

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现应用进程流量监控预警功能,可以使用Python的psutil库来获取进程的网络流量信息,并结合警告模块实现预警功能。 以下是实现步骤: 1. 使用psutil库获取进程的网络流量信息: ```python import psutil # 获取所有进程的网络连接信息 connections = psutil.net_connections() # 遍历所有连接,查找指定进程的网络流量信息 for conn in connections: if conn.pid == process_pid and conn.type == psutil.AF_INET: # 进程的网络流量信息 net_io_counters = psutil.Process(process_pid).io_counters() bytes_sent = net_io_counters.bytes_sent bytes_recv = net_io_counters.bytes_recv ``` 2. 判断进程的网络流量是否超过预设阈值,如果超过就触发预警: ```python # 预设阈值 threshold = 1024 * 1024 * 10 # 10MB if bytes_sent > threshold or bytes_recv > threshold: # 触发预警 send_warning_email() ``` 3. 实现预警模块,比如发送邮件、短信、微信等形式进行预警: ```python import smtplib from email.mime.text import MIMEText from email.utils import formataddr def send_warning_email(): # 发件人邮箱账号 my_sender = 'sender@example.com' # 发件人邮箱密码 my_pass = 'password' # 收件人邮箱账号 my_user = 'user@example.com' # 邮件内容 msg = MIMEText('进程网络流量超过了预设阈值,请及时处理!', 'plain', 'utf-8') msg['From'] = formataddr(('流量监控系统', my_sender)) msg['To'] = formataddr(('收件人', my_user)) msg['Subject'] = '进程网络流量预警' # 发送邮件 try: server = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465) server.login(my_sender, my_pass) server.sendmail(my_sender, [my_user], msg.as_string()) server.quit() print('邮件发送成功!') except Exception as e: print('邮件发送失败!') print(e) ``` 这样就可以实现应用进程流量监控预警功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值