С една единствена библиотека можете да наблюдавате множество системни показатели и да гарантирате, че всичко работи гладко.
Повечето организации разчитат в голяма степен на своята ИТ инфраструктура, за да управляват своите операции. Непланирани системни повреди или влошаване на производителността могат да доведат до смущения, финансови загуби и увреждане на репутацията.
Автоматизираните проверки на изправността на системата са от решаващо значение, за да се гарантира, че ИТ инфраструктурата остава стабилна и надеждна. Чрез наблюдение на критични показатели и своевременно откриване на аномалии можете да сведете до минимум времето за престой.
Дефиниране на проверки на здравето
Важно е да определите какви проверки на здравето искате да извършите на вашата система. Трябва да установите ясни критерии за това какво ще наблюдавате и защо. Започнете с идентифициране на основните цели на вашата система. Какви функции или услуги предоставя?
След това задайте показатели за производителност въз основа на исторически данни и се уверете, че проверките на състоянието ви оценяват ефективното използване на системните ресурси. И накрая, дефинирайте праговете, които показват проблем. Какъв процент на използване на ресурси смятате за висок или нисък? В кой момент системата трябва да задейства предупреждение?
Избор на библиотеки и настройка на вашата среда
За да автоматизирате процеса на наблюдение на системата в Python, ще ви трябват следните библиотеки, които да ви помогнат да съберете системни показатели и след това да планирате проверките.
- psutil: Това е междуплатформена библиотека, която предоставя интерфейс за извличане на информация за използването на системата (CPU, памет, дискове, мрежа, сензори).
- график: Тази библиотека предоставя лесен начин за планиране на изпълнение на задачи на определени интервали.
- време: Вградена библиотека на Python, която ще използвате за операции, свързани с времето.
- дърводобив: Друга вградена библиотека, която ще използвате за създаване на регистрационни файлове на проверките на здравето на системата.
Започнете да настройвате нещата от създаване на нова виртуална среда на Python. Това ще предотврати евентуални конфликти на библиотеки с версии. След това изпълнете следната терминална команда за инсталирайте необходимите библиотеки с Pip:
pip install psutil schedule
След като библиотеките са инсталирани на вашата система, вашата среда е готова.
Пълният изходен код е достъпен в a GitHub хранилище.
Импортиране на необходимите библиотеки
Създайте нов скрипт, мониторинг.pyи го започнете, като импортирате необходимите библиотеки:
import psutil
import schedule
import time
import logging
Импортирането на библиотеките ще ви позволи да използвате функционалността, която предлагат във вашия код.
Регистриране и отчитане
Имате нужда от начин да регистрирате резултатите от вашите здравни проверки. Регистрирането служи като жизненоважен инструмент за улавяне и запазване на исторически записи на събития и отстраняване на грешки във вашия код. Той също така играе критична роля в анализа на ефективността.
Използвайте вградената библиотека за регистриране, за да създадете вашите регистрационни файлове за този проект. Можете да запишете регистрационните съобщения във файл с име системен_монитор.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)
Този цикъл непрекъснато проверява за планирани задачи и ги изпълнява, когато им дойде времето. Когато стартирате програмата, резултатът е както следва:
Програмата записва регистрационните файлове за наблюдение на системен_монитор.log файл и показва предупреждение на терминала.
Усъвършенстване на програмата за наблюдение на системата
Тези проверки за наблюдение не са единствените, които psutil поддържа. Можете да добавите повече функции за наблюдение, като използвате подобен подход, за да отговарят на вашите изисквания.
Можете също така да подобрите функцията за отчитане, за да използвате имейл, вместо да извеждате просто съобщение на конзолата.