Come ho scritto il mio monitoraggio

Ho deciso di condividere la mia storia. Potrebbe anche tornare utile a qualcuno questa soluzione economica a un problema ben noto.

Quando ero giovane e pieno di energia e non sapevo come canalizzarla, ho deciso di fare un po' di freelance. Sono riuscito a guadagnare rapidamente una buona reputazione e ho trovato un paio di clienti abituali che mi hanno chiesto di mantenere i loro server in modo continuativo.

La prima cosa che mi è venuta in mente è stata la necessità di monitoraggio. Ho deciso di fare come le persone intelligenti, non reinventare la ruota, ma guardare le opzioni già pronte, come Munin o Zabbix. Ma ho subito scoperto che la versione Web richiede una buona connessione internet, soprattutto se viene aperta per la prima volta dal telefono. Se stai riposando in mezzo alla natura lontano dalla città, è difficile ottenere una connessione stabile. Pertanto, è stata scelta un'opzione di monitoraggio console.

Come monitoraggio console mi ha aiutato molto atop e il programma per leggere i log di atop, atopsar. Sono già stati menzionati su habr, atop è stato anche analizzato, ma di atopsar non hanno quasi parlato.

Installazione

Installazione molto semplice, solo tre comandi.

#Centos

yum install atop

#Debian/Ubuntu

apt-get install atop

Dopo puoi configurare 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 solo 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 console per i log binari gestiti dal demone atop. Certo è possibile leggere i log anche con atop, ma non è così pratico se devi catturare un intervallo di tempo lungo.

Una breve introduzione su come usare atopsar.

Quando avvii atopsar senza chiavi, viene aperto il log della giornata corrente e viene mostrato il carico su ogni singolo core e la riga idl per tutti i core.

Le chiavi che uso:

-A = mostrare tutte le informazioni nel log
-c = mostrare informazioni sul carico dei core della CPU, chiave predefinita
-m = carico sulla memoria RAM e swap
-d = attività del disco
-O = top-3 processi con carico sulla CPU
-G = top-3 processi con carico sulla RAM
-D = top-3 processi con carico sul disco
-N = top-3 processi con carico sulla rete
-r = specifica il percorso del log che desideri leggere, se devi controllare il carico dei giorni passati
-b = tempo da cui iniziare l'output
-e = tempo entro il quale è necessario completare l'output
-M = crea una colonna aggiuntiva alla fine, in cui viene segnalata la criticità della riga (+ c'è carico, * — carico critico)

Grazie al monitoraggio, possiamo capire la causa del comportamento anomalo del server in qualsiasi momento.

Notifiche

Quindi, il monitoraggio del carico è presente, ma non consente comunque di individuare e risolvere tempestivamente i problemi. Abbiamo bisogno di notifiche in caso di problemi.

Sono l'unico a seguire i server, quindi è necessario notificare dove posso sempre vederlo e reagire in qualche modo.

All'inizio c'erano gli SMS — veloci, affidabili, gratuiti. Ma poi gli operatori mobili hanno chiuso l'invio gratuito di SMS tramite i loro gateway.
La posta — è lenta, potrebbero esserci problemi di consegna.
I messaggeri — è necessario installarli sul telefono, è necessario creare bot.

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

Ho creato il mio bot con l'aiuto di botfather.
Dopo di che ho messo sul server alcuni script che monitorano il carico sul server (IDL, smartct e altri), la presenza di errori tipo 'oom killer', errori nella creazione di backup e altre operazioni che devono essere controllate.

Gli script sono piuttosto semplici, scritti in bash, ad esempio, verifica LA e notifica in caso di superamento del Load Average rispetto al numero di core su 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 può scrivere / aggiungere chiunque abbia almeno una minima competenza di programmazione).

L'unico accorgimento è che se il server si trova in Russia (e non hai IPv6 sul server), è necessario utilizzare un proxy. Per fare ciò, all'inizio dello script è necessario specificare la riga di connessione al proxy:

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

Questo non è finito

Cammini tranquillamente per le montagne con uno zaino in spalla, ti prendi una pausa dalla civiltà e all'improvviso il telefono, catturando accidentalmente il segnale, ti invia una notifica riguardo a un problema sul tuo server. Cosa fare? Il tuo stato d'animo sereno è svanito come una nuvola. Chiamare tua moglie e dettare i comandi? Ah ah!

Dovevo urgentemente trovare un modo per risolvere i problemi emersi in modo rapido e senza una buona connessione internet. Qui mi ha salvato di nuovo il messenger (#телеграммживи). Ho insegnato al mio bot a comunicare solo con me, ignorando tutti gli altri. Ora, insieme alla notifica del problema, ricevo un po' più di dati, che mi permettono di comprendere chi sia la fonte del problema e di cercare di risolverlo da remoto. È sufficiente scrivere un messaggio al bot, alzare un po' il telefono affinché il messaggio venga inviato, e voilà - il bot si mette al lavoro. In questo modo posso, ad esempio, terminare un processo indesiderato, riavviare un demone, bloccare un IP e altro ancora.

Ho anche trasferito qui le richieste future necessarie dai clienti, ad esempio, il ripristino urgente delle password per gli utenti (perché "Aaaa, non possiamo accedere al server, stiamo perdendo milioni!") , trovare un utente con accesso alla cartella desiderata, accendere e spegnere il sito e altro ancora. Certamente, continuo a migliorare le funzionalità del bot, poiché la fantasia dei clienti a volte presenta richieste inaspettate e non previste da me. Ma i principali sono soddisfatti.

Esiste anche una versione per VK, ma in qualche modo non ha avuto successo.

Ora viaggio tranquilamente e studio questo mondo, senza temere che qualcosa si rompa e io non possa saperlo o risolverlo.

Fonte: habr.com

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