HEX
Server: LiteSpeed
System: Linux php-prod-3.spaceapp.ru 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: sarli3128 (1010)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/local/CyberCP/websiteFunctions/resource_monitoring.py
import psutil
import os
from plogical.processUtilities import ProcessUtilities
from plogical.acl import ACLManager
import plogical.CyberCPLogFileWriter as logging

def get_website_resource_usage(externalApp):
    try:
        user = externalApp
        if not user:
            return {'status': 0, 'error_message': 'User not found'}

        # Get CPU and Memory usage using ps command
        command = f"ps -u {user} -o pcpu,pmem | grep -v CPU | awk '{{cpu += $1; mem += $2}} END {{print cpu, mem}}'"
        result = ProcessUtilities.outputExecutioner(command)
        
        try:
            cpu_percent, memory_percent = map(float, result.split())
        except:
            cpu_percent = 0
            memory_percent = 0

        # Get disk usage using du command
        website_path = f"/home/{user}/public_html"
        if os.path.exists(website_path):
            # Get disk usage in MB
            command = f"du -sm {website_path} | cut -f1"
            disk_used = float(ProcessUtilities.outputExecutioner(command))
            
            # Get total disk space
            command = f"df -m {website_path} | tail -1 | awk '{{print $2}}'"
            disk_total = float(ProcessUtilities.outputExecutioner(command))
            
            # Calculate percentage
            disk_percent = (disk_used / disk_total) * 100 if disk_total > 0 else 0
        else:
            disk_used = 0
            disk_total = 0
            disk_percent = 0

        return {
            'status': 1,
            'cpu_usage': round(cpu_percent, 2),
            'memory_usage': round(memory_percent, 2),
            'disk_used': round(disk_used, 2),
            'disk_total': round(disk_total, 2),
            'disk_percent': round(disk_percent, 2)
        }

    except BaseException as msg:
        logging.CyberCPLogFileWriter.writeToFile(f'Error in get_website_resource_usage: {str(msg)}')
        return {'status': 0, 'error_message': str(msg)}