Yhdellä kirjastolla voit seurata monia järjestelmämittareita ja varmistaa, että kaikki toimii sujuvasti.

Useimmat organisaatiot luottavat voimakkaasti IT-infrastruktuuriinsa toimintojensa hoitamisessa. Suunnittelemattomat järjestelmävirheet tai suorituskyvyn heikkeneminen voivat johtaa häiriöihin, taloudellisiin menetyksiin ja maineen vahingoittumiseen.

Automaattiset järjestelmän kuntotarkastukset ovat ratkaisevan tärkeitä sen varmistamiseksi, että IT-infrastruktuuri pysyy vakaana ja luotettavana. Seuraamalla kriittisiä mittareita ja havaitsemalla poikkeamat nopeasti voit minimoida seisokit.

Terveystarkastusten määrittely

On tärkeää määrittää, mitä terveystarkastuksia haluat suorittaa järjestelmällesi. Sinun tulee määrittää selkeät kriteerit sille, mitä tarkkailet ja miksi. Aloita tunnistamalla järjestelmäsi ensisijaiset tavoitteet. Mitä toimintoja tai palveluita se tarjoaa?

Aseta sitten suorituskyvyn vertailuarvot historiatietojen perusteella ja varmista, että terveystarkastuksesi arvioivat järjestelmäresurssien tehokkaan käytön. Lopuksi määritä kynnysarvot, jotka osoittavat ongelman. Minkä prosenttiosuuden resurssien käytöstä pidät korkeana tai alhaisena? Missä vaiheessa järjestelmän pitäisi laukaista hälytys?

Kirjastojen valitseminen ja ympäristön luominen

Pythonin järjestelmän valvontaprosessin automatisoimiseksi tarvitset seuraavat kirjastot, jotka auttavat sinua keräämään järjestelmätietoja ja ajoittamaan tarkistukset.

  • psutil: Tämä on monialustainen kirjasto, joka tarjoaa käyttöliittymän järjestelmän käyttöä koskevien tietojen hakemiseen (CPU, muisti, levyt, verkko, anturit).
  • ajoittaa: Tämä kirjasto tarjoaa yksinkertaisen tavan ajoittaa tehtäviä suoritettavaksi tietyin väliajoin.
  • aika: Pythonin sisäänrakennettu kirjasto, jota käytät aikaan liittyviin toimintoihin.
  • puunkorjuu: Toinen sisäänrakennettu kirjasto, jota käytät järjestelmän kuntotarkastusten lokien luomiseen.

Aloita asioiden asettaminen uuden Python-virtuaaliympäristön luominen. Tämä estää mahdolliset versiokirjastoristiriidat. Suorita sitten seuraava terminaalikomento kohteeseen asenna tarvittavat kirjastot Pipin avulla:

pip install psutil schedule

Kun kirjastot on asennettu järjestelmääsi, ympäristösi on valmis.

Täysi lähdekoodi on saatavilla a GitHub-arkisto.

Vaadittujen kirjastojen tuonti

Luo uusi käsikirjoitus, monitorointi.pyja aloita se tuomalla tarvittavat kirjastot:

import psutil
import schedule
import time
import logging

Kirjastojen tuominen antaa sinun käyttää koodissasi tarjoamia toimintoja.

Kirjaaminen ja raportointi

Tarvitset tavan kirjata terveystarkastusten tulokset. Kirjaaminen on tärkeä työkalu historiallisten tapahtumien tallentamiseen ja säilyttämiseen virheenkorjausongelmia koodissasi. Sillä on myös kriittinen rooli suorituskyvyn analysoinnissa.

Käytä sisäänrakennettua lokikirjastoa luodaksesi lokit tälle projektille. Voit tallentaa lokiviestit tiedostoon nimeltä 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)

Tulosta raportointia varten konsoliin hälytysviesti, joka toimii välittömänä ilmoituksena kaikista huomiota vaativista ongelmista.

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

Terveystarkastustoiminnot käyttävät näitä toimintoja kirjatakseen ja raportoidakseen asiaankuuluvat löydöksensä.

Terveystarkastustoimintojen luominen

Määritä jokaiselle kuntotarkastukselle toiminto, joka kapseloi erityisen testin, joka arvioi infrastruktuurisi kriittisen osan.

Prosessorin käytön seuranta

Aloita määrittämällä toiminto, joka valvoo suorittimen käyttöä. Tämä on kriittinen indikaattori järjestelmän yleisestä suorituskyvystä ja resurssien käytöstä. Liiallinen suorittimen käyttö johtaa järjestelmän hidastumiseen, reagoimattomuuteen ja jopa kaatumisiin, mikä häiritsee vakavasti olennaisia ​​palveluita.

Tarkistamalla säännöllisesti suorittimen käytön ja asettamalla asianmukaiset kynnysarvot järjestelmänvalvojat voivat tunnistaa suorituskyvyn pullonkaulat, resurssiintensiiviset prosessit tai mahdolliset laitteisto-ongelmat.

# 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)

Toiminto tarkistaa järjestelmän nykyisen suorittimen käytön. Jos suorittimen käyttö ylittää kynnyksen prosentteina, se kirjaa korkeasta suorittimen käytöstä ilmoittavan viestin ja tulostaa varoitusviestin.

Muistin käytön seuranta

Määritä toinen toiminto, joka valvoo muistin käyttöä. Seuraamalla muistin käyttöä säännöllisesti voit havaita muistivuotoja, resursseja vaativat prosessit ja mahdolliset pullonkaulat. Tämä menetelmä estää järjestelmän hidastumiset, kaatumiset ja käyttökatkot.

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)

Kuten suorittimen käytön tarkistuksessa, asetat kynnyksen korkealle muistin käytölle. Jos muistin käyttö ylittää kynnyksen, se kirjaa lokiin ja tulostaa hälytyksen.

Levytilan valvonta

Määritä toiminto, joka valvoo levytilaa. Seuraamalla jatkuvasti levytilan saatavuutta voit korjata mahdollisia ongelmia, jotka johtuvat resurssien ehtymisestä. Levytilan loppuminen voi johtaa järjestelmän kaatumiseen, tietojen vioittumiseen ja palvelun keskeytymiseen. Levytilan tarkistukset auttavat varmistamaan, että tallennuskapasiteettia on riittävästi.

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)

Tämä toiminto tutkii tietyn polun levytilan käyttöä. Oletuspolku on juurihakemisto /. Jos levytila ​​jää alle kynnyksen, se kirjaa lokiin ja tulostaa hälytyksen.

Verkkoliikenteen valvonta

Määritä lopullinen toiminto, joka valvoo järjestelmäsi tietovirtaa. Se auttaa havaitsemaan varhaisessa vaiheessa odottamattomat verkkoliikenteen piikit, jotka voivat olla osoitus tietoturvaloukkauksista tai infrastruktuuriongelmista.

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)

Toiminto valvoo verkkoliikennettä summaamalla lähetetyt ja vastaanotetut tavut. Kynnys on tavuissa. Jos verkkoliikenne ylittää kynnyksen, se kirjaa lokiin ja tulostaa hälytyksen.

Valvontalogiikan käyttöönotto

Nyt kun sinulla on terveystarkastustoiminnot, kutsu niitä vuorollaan ohjaintoiminnosta. Voit tulostaa tulosteen ja kirjata viestin joka kerta, kun tämä yleistarkistus suoritetaan:

# 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.")

Tämä toiminto suorittaa kaikki terveystarkastukset ja tarjoaa yhtenäisen kuvan järjestelmäsi tilasta.

Automaattisten tarkistusten ajoittaminen ja ohjelman suorittaminen

Automatisoidaksesi valvonnan tietyin väliajoin, käytät aikataulukirjastoa. Voit säätää väliä tarpeen mukaan.

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

Suorita nyt järjestelmän valvontaprosessi jatkuvassa silmukassa.

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

Tämä silmukka tarkistaa jatkuvasti ajoitetut tehtävät ja suorittaa ne, kun niiden aika tulee. Kun suoritat ohjelman, tulos on seuraava:

Ohjelma tallentaa seurantalokit system_monitor.log tiedosto ja näyttää varoituksen päätteessä.

Järjestelmänvalvontaohjelman edistäminen

Nämä valvontatarkistukset eivät ole ainoita, joita psutil tukee. Voit lisätä muita valvontatoimintoja käyttämällä samanlaista lähestymistapaa tarpeidesi mukaan.

Voit myös parantaa raportointitoimintoa käyttämään sähköpostia yksinkertaisen viestin tulostamisen sijaan konsoliin.