Уз једну једину библиотеку, можете пратити низ системских метрика и осигурати да све ради глатко.
Већина организација се у великој мери ослања на своју ИТ инфраструктуру за вођење својих операција. Непланирани системски кварови или деградација перформанси могу довести до поремећаја, финансијских губитака и штете по репутацију.
Аутоматске провере исправности система су кључне како би се осигурало да ИТ инфраструктура остане стабилна и поуздана. Праћењем критичних показатеља и благовременим откривањем аномалија, можете минимизирати време застоја.
Дефинисање здравствених провера
Од суштинског је значаја да дефинишете које здравствене провере желите да извршите на свом систему. Требало би да успоставите јасне критеријуме шта ћете пратити и зашто. Почните тако што ћете идентификовати примарне циљеве вашег система. Које функције или услуге пружа?
Затим поставите стандарде перформанси на основу историјских података и осигурајте да ваше здравствене провере процењују ефикасну употребу системских ресурса. На крају, дефинишите прагове који указују на проблем. Који проценат коришћења ресурса сматрате високим или малим? У ком тренутку систем треба да покрене упозорење?
Избор библиотека и подешавање окружења
Да бисте аутоматизовали процес надгледања система у Питхон-у, биће вам потребне следеће библиотеке које ће вам помоћи да прикупите системске метрике, а затим закажете провере.
- псутил: Ово је вишеплатформска библиотека која обезбеђује интерфејс за преузимање информација о коришћењу система (ЦПУ, меморија, дискови, мрежа, сензори).
- распоред: Ова библиотека пружа једноставан начин за планирање задатака који се извршавају у одређеним интервалима.
- време: Питхон уграђена библиотека коју ћете користити за операције везане за време.
- сече: Још једна уграђена библиотека коју ћете користити за креирање дневника провера здравственог стања система.
Почните да постављате ствари до креирање новог Питхон виртуелног окружења. Ово ће спречити све потенцијалне конфликте библиотеке верзија. Затим покрените следећу наредбу терминала за инсталирајте потребне библиотеке са Пипом:
pip install psutil schedule
Када се библиотеке инсталирају на ваш систем, ваше окружење је спремно.
Комплетан изворни код је доступан у а ГитХуб спремиште.
Увоз потребних библиотека
Направите нову скрипту, мониторинг.пи, и започните увозом потребних библиотека:
import psutil
import schedule
import time
import logging
Увоз библиотека ће вам омогућити да користите функционалност коју нуде у вашем коду.
Евидентирање и извештавање
Потребан вам је начин да евидентирате резултате ваших здравствених прегледа. Евидентирање служи као витално средство за снимање и очување историјских записа о догађајима и отклањање грешака у вашем коду. Такође игра кључну улогу у анализи учинка.
Користите уграђену библиотеку за евидентирање да бисте креирали своје евиденције за овај пројекат. Поруке дневника можете сачувати у датотеци под називом систем_монитор.лог.
# 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)
Ова петља континуирано проверава заказане задатке и извршава их када им дође време. Када покренете програм, излаз је следећи:
Програм бележи евиденцију праћења на систем_монитор.лог датотеку и приказује упозорење на терминалу.
Унапређење програма за праћење система
Ове контроле надгледања нису једине које псутил подржава. Можете додати више функција за праћење, користећи сличан приступ, како би одговарали вашим захтевима.
Такође можете побољшати функцију извештавања да бисте користили е-пошту уместо слања једноставне поруке на конзоли.