Come ho scritto il mio monitoraggio

Ho deciso di condividere la mia storia. Potrebbe persino essere utile a qualcuno questo tipo di soluzione economica per un problema ben noto.

Quando ero giovane e pieno di energia e non sapevo come canalizzarla, ho deciso di fare un po' di freelancing. Sono riuscito a costruire rapidamente la mia reputazione e ho trovato un paio di clienti fissi che mi hanno chiesto di mantenere i loro server in modo costante.

La prima cosa a cui ho pensato è stata la necessità di monitoraggio. Ho deciso di fare come le persone intelligenti, di non reinventare la ruota e di guardare le soluzioni già pronte, come Munin o Zabbix. Ma subito ho scoperto che la versione Web richiede una buona connessione Internet, soprattutto se la si apre per la prima volta da un telefono. Se sei in vacanza nella natura lontano dalla città, è difficile avere una connessione stabile. Perciò ho optato per una soluzione di monitoraggio da console.

Come monitoraggio da console, mi sono trovato bene con atop e il programma per leggere i log di atop — atopsar. Ne hanno già parlato su habr, hanno anche analizzato atop,ma quasi non hanno menzionato atopsar.

Installazione

Installazione molto semplice, bastano tre comandi.

#Centos

yum install atop

#Debian/Ubuntu

apt-get install atop

Poi puoi impostare il monitoraggio secondo le tue esigenze o utilizzare le impostazioni predefinite.

#Debian/Ubuntu/Centos

/etc/default/atop 

File standard:

 #cat /etc/default/atop
INTERVAL=60                    #Время, через которое создаётся снимок нагрузки в секундах, по умолчанию каждые 10 минут
LOGPATH="/var/log/atop"        #Путь до папки хранения логов
OUTFILE="$LOGPATH/daily.log"   #Название файла логов за сегодняшний день

Aggiungi all'avvio automatico
#Debian/Ubuntu/Centos

systemctl enable atop 

Avvia atop come demone
#Debian/Ubuntu/Centos

systemctl start atop  

Per i pigri ho raccolto in un unico comando
#Centos

yum install atop && systemctl enable atop && systemctl start atop

#Debian/Ubuntu

apt-get install atop && systemctl enable atop && systemctl start atop

Atopsar

Insieme a atop viene installato anche atopsar, un comodo analizzatore da console per i log binari gestiti dal demone atop. Certo, si possono leggere i log anche con atop, ma non è così conveniente se si deve catturare un lungo intervallo di tempo.

Un breve corso su come utilizzare atopsar.

All'avvio di atopsar senza opzioni si apre il log del giorno attuale e viene visualizzato il carico su ogni singolo core e la linea idl per tutti i core.

Le opzioni che utilizzo:

-A = mostrare tutte le informazioni del log
-c = visualizzare le informazioni sul carico dei processori, opzione di default
-m = carico sulla memoria RAM e swap
-d = attività del disco
-O = top-3 processi per carico su CPU
-G = top-3 processi per carico su RAM
-D = top-3 processi per carico su disco
-N = top-3 processi per carico sulla rete
-r = specificare il percorso del log che si desidera leggere, se si deve controllare il carico dei giorni passati
-b = tempo da cui iniziare a visualizzare il log
-e = tempo in cui è necessario completare l'output
-M = crea una colonna aggiuntiva alla fine, in cui viene contrassegnata la criticità della riga (+ c'è carico, * — carico critico)

Grazie al monitoraggio, saremo in grado di comprendere la causa di un comportamento errato del server in qualsiasi momento.

Notifiche

Quindi, il monitoraggio del carico c'è, ma non consente comunque di trovare e risolvere problemi rapidamente. Abbiamo bisogno di notifiche che segnalino un problema.

Sono solo io a monitorare i server, quindi le notifiche devono arrivare in un luogo dove posso sempre vederle e reagire in qualche modo.

Inizialmente c'erano gli SMS — veloci, affidabili, gratuiti. Ma poi gli operatori mobili hanno chiuso il servizio di invio SMS gratuiti attraverso i loro gateway.
La posta — lenta, possono esserci problemi di consegna.
I messaggeri — devono essere installati sul telefono, è necessario creare bot.

Come risultato della ricerca, è stato scelto il messaggero Telegram per la sua semplicità e per la comoda applicazione sul telefono e desktop.

Ho creato il mio bot usando botfather.
Dopo aver caricato alcuni script sul server per monitorare il carico (IDL, smartct e altri), la presenza di errori del tipo «oom killer», errori durante la creazione di backup e altre operazioni da controllare.

Gli script sono abbastanza semplici, scritti in bash, ad esempio, verifica di LA e notifiche sul superamento della Load Average rispetto al numero di core. server.

if [ ${LA[0]} -gt 2000 ] || [ ${LA[1]} -gt 3000 ] || [ ${LA[2]} -gt 4000 ]
    then
        wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=Sul server $ip LA $LAd"
        wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=`top -b -n 1 | grep Cpu`"
        wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=Top 5 processi `top -b -n 1 | grep -A 5 'PID USER' | tail -5`"
    fi

La semplicità della sintassi offre molte possibilità di utilizzo (e chiunque abbia un minimo di conoscenza di programmazione può scrivere o aggiungere).

L'unico dettaglio è che se il server si trova in Russia (e non hai IPv6 attivo), devi usare un proxy. Pertanto, all'inizio dello script, devi specificare la stringa di connessione al proxy:

export https_proxy=http://login:password@IP.indirizzo:porta

Questo non è la fine

Stai camminando tranquillamente tra le montagne con uno zaino sulle spalle, lontano dalla civiltà, quando, improvvisamente, il telefono si collega e ti invia una notifica riguardo a un problema sul tuo server. Cosa fare? La tua serenità viene spazzata via in un attimo. Chiamare tua moglie per dettarle i comandi? Ah ah!

Era necessario trovare urgentemente un modo per risolvere i problemi in modo rapido e senza una buona connessione internet. Qui mi ha nuovamente salvato un'app di messaggistica (#telegramlive). Ho insegnato al mio bot a comunicare solo con me, ignorando tutti gli altri. Ora, insieme alla notifica del problema, ricevo anche un po' più di dati che mi aiutano a capire chi sia la fonte del problema e posso provare a risolverlo da remoto. Basta scrivere un messaggio al bot, sollevare il telefono per inviarlo, e voilà — il bot si mette a lavorare per te. In questo modo posso, ad esempio, terminare un processo indesiderato, riavviare un demone, bloccare un IP e altro ancora.

Ho trasferito qui le richieste future importanti dei clienti, come il ripristino urgente delle password per gli utenti (perché "Ahhh, non possiamo accedere al server, stiamo perdendo milioni!") e la ricerca di un utente con accesso alla cartella necessaria, accensione e spegnimento del sito e altro ancora. Naturalmente, continuo a migliorare le funzionalità del bot, poiché l'immaginazione dei clienti talvolta suggerisce richieste inaspettate e non previste. Ma i principali sono soddisfatti.

Esiste anche una versione per VK, ma non ha avuto molto successo.

Ora viaggio serenamente e esploro questo mondo, senza temere che qualcosa si rompa, mentre non posso venire a saperlo o correggerlo.

Fonte: habr.com

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster