����JFIF��x�x����'
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/lib64/python3.11/site-packages/cl_plus/collectors/ |
Upload File : |
# 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 }