diff --git a/backend/onyx/background/celery/memory_monitoring.py b/backend/onyx/background/celery/memory_monitoring.py index 0ef79b204..211818d9f 100644 --- a/backend/onyx/background/celery/memory_monitoring.py +++ b/backend/onyx/background/celery/memory_monitoring.py @@ -5,40 +5,53 @@ from logging.handlers import RotatingFileHandler import psutil +from onyx.utils.logger import is_running_in_container from onyx.utils.logger import setup_logger # Regular application logger logger = setup_logger() -# Set up a dedicated memory monitoring logger -MEMORY_LOG_DIR = "/var/log/persisted-logs/memory" -MEMORY_LOG_FILE = os.path.join(MEMORY_LOG_DIR, "memory_usage.log") -MEMORY_LOG_MAX_BYTES = 10 * 1024 * 1024 # 10MB -MEMORY_LOG_BACKUP_COUNT = 5 # Keep 5 backup files +# Only set up memory monitoring in container environment +if is_running_in_container(): + # Set up a dedicated memory monitoring logger + MEMORY_LOG_DIR = "/var/log/persisted-logs/memory" + MEMORY_LOG_FILE = os.path.join(MEMORY_LOG_DIR, "memory_usage.log") + MEMORY_LOG_MAX_BYTES = 10 * 1024 * 1024 # 10MB + MEMORY_LOG_BACKUP_COUNT = 5 # Keep 5 backup files -# Ensure log directory exists -os.makedirs(MEMORY_LOG_DIR, exist_ok=True) + # Ensure log directory exists + os.makedirs(MEMORY_LOG_DIR, exist_ok=True) -# Create a dedicated logger for memory monitoring -memory_logger = logging.getLogger("memory_monitoring") -memory_logger.setLevel(logging.INFO) + # Create a dedicated logger for memory monitoring + memory_logger = logging.getLogger("memory_monitoring") + memory_logger.setLevel(logging.INFO) -# Create a rotating file handler -memory_handler = RotatingFileHandler( - MEMORY_LOG_FILE, maxBytes=MEMORY_LOG_MAX_BYTES, backupCount=MEMORY_LOG_BACKUP_COUNT -) + # Create a rotating file handler + memory_handler = RotatingFileHandler( + MEMORY_LOG_FILE, + maxBytes=MEMORY_LOG_MAX_BYTES, + backupCount=MEMORY_LOG_BACKUP_COUNT, + ) -# Create a formatter that includes all relevant information -memory_formatter = logging.Formatter( - "%(asctime)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S" -) -memory_handler.setFormatter(memory_formatter) -memory_logger.addHandler(memory_handler) + # Create a formatter that includes all relevant information + memory_formatter = logging.Formatter( + "%(asctime)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S" + ) + memory_handler.setFormatter(memory_formatter) + memory_logger.addHandler(memory_handler) +else: + # Create a null logger when not in container + memory_logger = logging.getLogger("memory_monitoring") + memory_logger.addHandler(logging.NullHandler()) def emit_process_memory( pid: int, process_name: str, additional_metadata: dict[str, str | int] ) -> None: + # Skip memory monitoring if not in container + if not is_running_in_container(): + return + try: process = psutil.Process(pid) memory_info = process.memory_info()