С помощью одной библиотеки вы можете отслеживать множество системных показателей и обеспечивать бесперебойную работу всей системы.

Большинство организаций в значительной степени полагаются на свою ИТ-инфраструктуру для ведения своей деятельности. Незапланированные сбои системы или ухудшение производительности могут привести к сбоям в работе, финансовым потерям и ущербу репутации.

Автоматизированные проверки работоспособности систем имеют решающее значение для обеспечения стабильности и надежности ИТ-инфраструктуры. Отслеживая критические показатели и оперативно обнаруживая аномалии, вы можете минимизировать время простоя.

Определение проверок работоспособности

Очень важно определить, какие проверки работоспособности вы хотите выполнить в своей системе. Вам следует установить четкие критерии того, что вы будете отслеживать и почему. Начните с определения основных целей вашей системы. Какие функции или услуги он предоставляет?

Затем установите тесты производительности на основе исторических данных и убедитесь, что ваши проверки работоспособности оценивают эффективное использование системных ресурсов. Наконец, определите пороговые значения, которые указывают на проблему. Какой процент использования ресурсов вы считаете высоким или низким? В какой момент система должна вызвать оповещение?

instagram viewer

Выбор библиотек и настройка среды

Чтобы автоматизировать процесс мониторинга системы в Python, вам потребуются следующие библиотеки, которые помогут вам собрать системные показатели и затем запланировать проверки.

  • psutil: Это кроссплатформенная библиотека, предоставляющая интерфейс для получения информации об использовании системы (ЦП, память, диски, сеть, датчики).
  • расписание: эта библиотека предоставляет простой способ запланировать запуск задач через определенные промежутки времени.
  • время: встроенная библиотека Python, которую вы будете использовать для операций, связанных со временем.
  • Ведение журнала: еще одна встроенная библиотека, которую вы будете использовать для создания журналов проверок работоспособности системы.

Начните настройку с создание новой виртуальной среды Python. Это предотвратит любые потенциальные конфликты библиотек версий. Затем запустите следующую команду терминала, чтобы установите необходимые библиотеки с помощью Pip:

pip install psutil schedule

Как только библиотеки будут установлены в вашей системе, ваша среда готова.

Полный исходный код доступен в Репозиторий GitHub.

Импорт необходимых библиотек

Создайте новый сценарий, мониторинг.pyи начнём с импорта необходимых библиотек:

import psutil
import schedule
import time
import logging

Импорт библиотек позволит вам использовать предлагаемые ими функции в своем коде.

Ведение журнала и отчетность

Вам нужен способ регистрировать результаты ваших проверок здоровья. Ведение журнала служит жизненно важным инструментом для сбора и сохранения исторических данных о событиях и проблемы отладки в вашем коде. Это также играет решающую роль в анализе производительности.

Используйте встроенную библиотеку журналов для создания журналов для этого проекта. Вы можете сохранить сообщения журнала в файл с именем system_monitor.log.

# Function to log messages
deflog_message(message):
# Configure logging
logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
format='%(asctime)s - %(message)s')
logging.info(message)

Для создания отчетов распечатайте на консоли предупреждающее сообщение, которое будет служить немедленным уведомлением о любых проблемах, требующих внимания.

# Function to print alerts to the console
defprint_alert(message):
print(f"ALERT: {message}")

Функции проверки работоспособности будут использовать эти функции для регистрации и предоставления соответствующих результатов.

Создание функций проверки работоспособности

Для каждой проверки работоспособности определите функцию, которая будет инкапсулировать конкретный тест, оценивающий критический аспект вашей инфраструктуры.

Мониторинг использования ЦП

Начните с определения функции, которая будет отслеживать использование ЦП. Это будет служить важным индикатором общей производительности системы и использования ресурсов. Чрезмерная загрузка ЦП приводит к замедлению работы системы, зависанию и даже сбоям, серьезно нарушая работу основных служб.

Регулярно проверяя загрузку ЦП и устанавливая соответствующие пороговые значения, системные администраторы могут выявить узкие места в производительности, ресурсоемкие процессы или потенциальные проблемы с оборудованием.

# Health check functions
defcheck_cpu_usage(threshold=50):
cpu_usage = psutil.cpu_percent(interval=1)

if cpu_usage > threshold:
message = f"High CPU usage detected: {cpu_usage}%"
log_message(message)
print_alert(message)

Функция проверяет текущую загрузку ЦП системы. Если загрузка ЦП превышает пороговое значение в процентах, он регистрирует сообщение, указывающее на высокую загрузку ЦП, и печатает предупреждающее сообщение.

Мониторинг использования памяти

Определите еще одну функцию, которая будет контролировать использование памяти. Регулярно отслеживая использование памяти, вы можете обнаружить утечки памяти, ресурсоемкие процессы и потенциальные узкие места. Этот метод предотвращает замедление работы системы, сбои и сбои в работе.

defcheck_memory_usage(threshold=80):
memory_usage = psutil.virtual_memory().percent

if memory_usage > threshold:
message = f"High memory usage detected: {memory_usage}%"
log_message(message)
print_alert(message)

Подобно проверке использования ЦП, вы устанавливаете порог высокого использования памяти. Если использование памяти превышает пороговое значение, оно регистрируется и печатает предупреждение.

Мониторинг дискового пространства

Определите функцию, которая будет контролировать дисковое пространство. Постоянно отслеживая доступность дискового пространства, вы можете решить потенциальные проблемы, связанные с истощением ресурсов. Нехватка дискового пространства может привести к сбоям в работе системы, повреждению данных и перебоям в работе служб. Проверки дискового пространства помогают убедиться в наличии достаточного объема хранилища.

defcheck_disk_space(path='/', threshold=75):
disk_usage = psutil.disk_usage(path).percent

if disk_usage > threshold:
message = f"Low disk space detected: {disk_usage}%"
log_message(message)
print_alert(message)

Эта функция проверяет использование дискового пространства по указанному пути. Путь по умолчанию — корневой каталог. /. Если дисковое пространство падает ниже порогового значения, оно регистрируется и печатает предупреждение.

Мониторинг сетевого трафика

Определите последнюю функцию, которая будет контролировать поток данных вашей системы. Это поможет на ранней стадии обнаружить неожиданные всплески сетевого трафика, которые могут указывать на нарушения безопасности или проблемы с инфраструктурой.

defcheck_network_traffic(threshold=100 * 1024 * 1024):
network_traffic = psutil.net_io_counters().bytes_recv +\
psutil.net_io_counters().bytes_sent

if network_traffic > threshold:
message = f"High network traffic detected: {network_traffic:.2f} MB"
log_message(message)
print_alert(message)

Функция отслеживает сетевой трафик, суммируя отправленные и полученные байты. Порог указывается в байтах. Если сетевой трафик превышает пороговое значение, он регистрируется и печатает предупреждение.

Реализация логики мониторинга

Теперь, когда у вас есть функции проверки работоспособности, просто вызовите каждую из них по очереди из функции контроллера. Вы можете распечатывать выходные данные и регистрировать сообщение каждый раз, когда выполняется общая проверка:

# Function to run health checks
defrun_health_checks():
print("Monitoring the system...")
log_message("Running system health checks...")

check_cpu_usage()
check_memory_usage()
check_disk_space()
check_network_traffic()

log_message("Health checks completed.")

Эта функция запускает все проверки работоспособности, обеспечивая единое представление о состоянии работоспособности вашей системы.

Планирование автоматических проверок и запуск программы

Чтобы автоматизировать мониторинг через определенные промежутки времени, вы будете использовать библиотеку расписаний. При необходимости вы можете настроить интервал.

# Schedule health checks to run every minute 
schedule.every(1).minutes.do(run_health_checks)

Теперь запустите процесс мониторинга системы в непрерывном цикле.

# Main loop to run scheduled tasks
whileTrue:
schedule.run_pending()
time.sleep(1)

Этот цикл постоянно проверяет наличие запланированных задач и выполняет их, когда приходит время. Когда вы запускаете программу, вывод выглядит следующим образом:

Программа записывает журналы мониторинга на system_monitor.log файл и отображает предупреждение на терминале.

Развитие программы мониторинга системы

Эти проверки мониторинга — не единственные, которые поддерживает psutil. Используя аналогичный подход, вы можете добавить дополнительные функции мониторинга в соответствии с вашими требованиями.

Вы также можете улучшить функцию отчетности, чтобы использовать электронную почту вместо вывода простого сообщения на консоль.