Monitoraggio web server semplice (attivo)


8

Qualche consiglio sul software per monitorare se un server web è attivo e in esecuzione su Linux? Dovrebbe essere in grado di funzionare senza sapere altro che l'URL. E deve avere funzionalità per inviare un avviso e-mail quando il sito non funziona. Non dovrebbe essere difficile scrivere una sceneggiatura per questo, ma sembra inutile se c'è già qualcosa di bello là fuori.

Si noti che ho intenzione di monitorare i server interni, quindi questo deve essere uno strumento che viene eseguito sulla mia macchina sulla stessa rete, non sui servizi basati sul Web esterni.

E nota che sono preferite soluzioni piccole e semplici.

Aggiornamento : Alla fine ho creato un piccolo script Python che sto attualmente utilizzando per questo, che può essere trovato qui .



Vedi anche: serverfault.com/questions/44/… - Questo argomento è stato ampiamente trattato ad alto livello.
Warner,

Risposte:


12

Puoi usare wget in uno script come questo

wget --timeout=3 --tries=1 --spider --no-check-certificate http://serverfault.com

if [ $? -ne 0 ];then
  echo "Site Down" | mail -s "Site Down" admin@yourdomain.com
fi

E riceverai un'e-mail se wget non può accedere al sito per la prima volta entro tre secondi.

Imposta un cron job per eseguire lo script ogni pochi minuti.

Esistono molte altre alternative, ma questa è probabilmente la più semplice da configurare da zero.


7
fintanto che non lo esegui sul server che il suo monitoraggio - non hai idea di quanto spesso l'ho visto fatto ;-)
Geraint Jones

Grazie. Inoltre ho scoperto che --spider è anche un'opzione utile in quanto evita di salvare effettivamente la pagina su disco.
Zitrax,

2
E senza installare 'postfix' il comando mail non riesce a inviare in silenzio.
Zitrax,

3
@Zitrax: E senza l'installazione di wget otterrai un errore. Senza che la rete sia attiva, il wget fallirà. Senza l'esecuzione dello script, il processo cron avrà esito negativo e così via. Inoltre non ho installato 'postfix' e funziona bene per me perché sto usando exim.
Richard Holloway,

1
Perché il --no-check-certificate? Anche essere avvisati della mancata distribuzione di TLS è un'informazione preziosa.
Avamandro

7

Hai molte opzioni, te ne darò due.

  • Nagios è un'applicazione di monitoraggio completa in grado di monitorare molto più di http, ma gestisce anche questo. Può anche creare tutti i tipi di repot ("Dimmi la percentuale di uptime del nostro server / servizio X questa settimana / mese / anno ...")

  • Monit è un'altra scelta popolare. Forse non è così ricco di funzionalità come Nagios, ma è comunque carino.


Stavo cercando qualcosa di piccolo e semplice, quindi Monit sembra più vicino a quello.
Zitrax,

1

Bene, se vuoi eseguire qualcosa da solo.

Queste sono alcune opzioni:

O se vuoi una soluzione gestita:

Personalmente penso che Zabbix e Zenoss siano eccessivi se si desidera semplicemente monitorare lo stato di un server Web. Ma se prevedi anche di monitorare nient'altro che hanno più funzioni di quante tu abbia mai bisogno;)


Suppongo che pingdom e trend rialzisti non possano monitorare i siti sulla mia rete interna.
Zitrax,

@Zitrax: no, non possono. Ho letto quella parte.
Wolph,

1

Ho votato a favore della risposta di Richard e Janne, ma se vuoi maggiori dettagli su ciò che il tuo server web sta inviando e ricevendo, i primi due capitoli del libro O'Reilly "Web Client Programming with Perl" di Clinton Wong offre una fantastica panoramica del protocollo HTTP. Se si desidera un monitoraggio più dettagliato rispetto al solo su / giù e si desidera includere codici di risposta, ecc., È un buon punto di partenza.

Il libro è vecchio, ma è ancora valido. Pubblicato nel 1997, O'Reilly ha pubblicato i contenuti del libro online gratuitamente su http://oreilly.com/openbook/webclient/ nell'ambito dell'iniziativa OpenBook.


0

Vorrei votare la risposta di Janne se avessi un rappresentante.

Nota importante su Nagios, il fatto che sia completo non significa che sia un'installazione dura e lunga, è abbastanza semplice e amichevole.

In secondo luogo, dovresti davvero dare un'occhiata a ciò che il tuo fornitore di hardware ha da offrire. Ad esempio, sto usando HP Proliants e hanno dei rpm davvero utili che aiutano.


0

Se ti piace quello che fa Nagios, ma non vuoi approfondire gli interni, puoi anche dare un'occhiata a Opsview . Sono Nagios e un paio di altri strumenti, ma forniti attraverso una bella interfaccia grafica. È un ottimo punto di partenza.


0

Concordo sul fatto che Nagios sia un ottimo software, ma se si desidera un software gratuito ti consiglio di dare un'occhiata a AppPerfect Agentless Monitor . Il monitoraggio dei server Linux con AppPerfect è estremamente leggero e aggiunge un sovraccarico trascurabile al sistema di destinazione durante il monitoraggio. Puoi monitorare tutte le statistiche importanti relative a CPU, disco, rete e memoria usando questo strumento. L'installazione è molto semplice e il software è molto facile da usare. Una chiara documentazione e tutorial sono disponibili anche qui per il monitoraggio dei server Linux


0

Una soluzione che sto usando è il console di HashiCorp .

È certamente più di un semplice script con output e-mail, ma impostare il tipo di monitoraggio di cui stai parlando è ancora molto semplice (alcune righe di YAML o JSON).

Molto probabilmente creeresti un modello, ma il monitoraggio di un singolo server potrebbe essere fatto come segue:

{
  "service": {
    "name": "web", 
    "tags": ["production"], 
    "port": 80,
    "check": {
      "id": "front-end",
      "name": "HTTP front-end for web service",
      "http": "http://web.domain.tld",
      "interval": "10s",
      "timeout": "1s"
    }
  }
}

Uno dei motivi per cui è stato suggerito è che ti consente di andare oltre il monitoraggio "solo" del front-end Web, se lo desideri, e ti consente anche di raggruppare i controlli per servizio (ad es. Il tuo report_serverservizio potrebbe avere un controllo per il Web front- fine, uno per il back-end Web e uno per il DB primario, che forniranno tutti avvisi legati a questo unico servizio).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.