Kuidas ma oma jälgimist kirjutasin

Otsustasin jagada oma lugu. See võib isegi kellegi jaoks olla kasulik odav lahendus laialdaselt tuntud probleemile.

Kui olin noor ja energiat täis ning ei teadnud, kuhu oma energiat suunata, otsustasin natuke vabakutseliselt tegutseda. Mul õnnestus kiiresti hinnangut tõsta ning leidsin paar püsiklienti, kes palusid mul nende servereid pidevalt hallata.

Esimene asi, mis mulle meelde tuli, oli jälgimise vajadus. Otsustasin teha nagu targad inimesed, mitte ratast uuesti leiutada, vaid vaadata olemasolevaid variante, nagu Munin või Zabbix. Kuid kohe selgus, et veebiversioon vajab head internetiühendust, eriti kui avada see esmakordselt telefoniga. Kui sa aga lõbutsed looduses kaugel linnast, on stabiilse ühenduse saamine keeruline. Seetõttu valiti konsooli jälgimise variant.

Konsooli jälgimiseks aitas mind hästi atop ja atop'ile logide lugemiseks mõeldud programm — atopsar. Nendest on juba habris räägitud, atop'i on isegi põhjalikult analüüsitud,, ent atopsarist pole peaaegu midagi räägitud.

Installeerimine

Paigaldamine on väga lihtne, kokku kolm käsku.

#Centos

yum install atop

#Debian/Ubuntu

apt-get install atop

Seejärel saab jälgimise seadistada endale sobivaks või kasutada vaikeseadeid.

#Debian/Ubuntu/Centos

/etc/default/atop 

Standardskülfail:

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

Lisame automaatkäivitusse
#Debian/Ubuntu/Centos

systemctl enable atop 

Käivitame atop'i kui deemonit
#Debian/Ubuntu/Centos

systemctl start atop  

Laiskade jaoks kogusin üheks käsuks
#Centos

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

#Debian/Ubuntu

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

Atopsar

Koos atopiga installitakse ka atopsar, see on mugav konsooli binaarlogide analüsaator, mida demon atop ülal hoiab. Loomulikult saab logisid lugeda ka ise atop'iga, kuid see pole nii mugav, kui peab aitama suure aja jooksul.

Pisike õpetus atopsari töö kohta.

Kui atopsari ilma võtmeteta käivitada, avatakse tänase päeva logs ja kuvatakse koormus iga tuuma kohta eraldi ning idl rida kõigi tuumade kohta.

Võtmed, mida ma kasutan:

-A = kuvab kogu teabe logist
-s = kuvab teabe protsessorituumade koormuse kohta, vaikimisi võti
-m = koormus muutmisse ja swap'i kohta
-d = kettategevus
-O = top-3 protsessi CPU koormuse järgi
-G = top-3 protsessi RAM koormuse järgi
-D = top-3 protsessi ketta koormuse järgi
-N = top-3 protsessi võrgu koormuse järgi
-r = näita teed logile, mida soovite lugeda, kui peate vaatama eelnevat koormust
-b = aeg, millest alates alustada väljundit
-e = aeg, mille jooksul tuleb väljundi lõpetada
-M = loob lisast arvutustabeli lõpus, kus märgitakse rea kriitilisus (+ on koormus, * — kriitiline koormus)

Aitäh jälgimise, saame igal ajal mõista serveri valed käitumise põhjuseid.

Teavitused

Seega on koormuse jälgimine olemas, kuid see ei anna võimalust kiiresti leida ja lahendada probleeme. Me vajame teateid tekkivate probleemide kohta.

Ma jälgin servereid üksi, seega tuleb teavitada sinna, kus ma alati näen ja saan mingil viisil reageerida.

Alguses olid SMS-id — kiire, usaldusväärne, tasuta. Kuid siis sulgesid mobiilside operaatorid tasuta SMS saatmise oma väravate kaudu.
E-post — aeglane, võivad esineda kohaletoimetamise probleemid.
Messengerd — tuleb paigaldada telefoni, vaja luua bottid.

Otsingu tulemusena valiti messender Telegram lihtsuse ja mugava rakenduse tõttu telefonis ja desktopis.

Loomiseks oma boti kasutasin botfather.
Pärast laadin serverisse mitmeid skripte, mis jälgivad serveri koormust (IDL, smartct jne), vigu nagu „oom killer“, vigu varukoopia loomisel ja muid toiminguid, mida tuleb kontrollida.

Skripte on üsna lihtne kirjutada, need on kirjutatud bash'is, näiteks LA kontrollimine ja teavitamine, kui Laad Averages ületab tuumade arvu. serveril.

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=Serveris $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 protsessi `top -b -n 1 | grep -A 5 'PID USER' | tail -5`"
    fi

Süntaksi lihtsus annab väga palju kasutusvõimalusi (ja kirjutada/ täiendada saab igaüks, kes vähegi programmeerimiskeelt valdavad).

Ainus nüanss — kui server asub Venemaal (ja teil ei ole serveris IPv6), siis on vaja kasutada proxy-d. Sel eesmärgil tuleb skripti alguses kirjutada ühenduse rida proxy'ga:

export https_proxy=http://kasutajanimi:parool@IP.aadress:port

See ei ole lõpp

Kujutad end rahulikult mägedes seljakoti seljas jalutamas, puhates tsivilisatsioonist, ja siis, äkki, su telefon tabab juhuslikult signaali ning saadab teate probleemist sinu serveris. Mis teha? Rahuolek kaob nagu tuuleõhk. Kas helistada abikaasale ja dikteerida käske? Haha!

Pidin kiiresti välja mõtlema viisi, kuidas probleeme kiiresti lahendada ilma hea internetiühenduseta. Siinkohal päästis mind taas messenger (#telegramlive). Olen õpetanud oma boti suhtlema ainult minuga, ignoreerides kõiki teisi. Nüüd, koos probleemiteatega, saan natuke rohkem andmeid, mille põhjal mõistan, mis on probleemiallikas, ja saan proovida seda kaugelt lahendada. Piisab vaid sõnumi kirjutamisest botile, tõsta telefon kõrgemale, et sõnum läheks edasi, ja voilà — bot tuli sinu tööd tegema. Nii saan näiteks lõpetada mõne soovimatu protsessi, taaskäivitada deemonit, blokeerida IP-aadressi ja palju muud.

Siia tõin ma tulevased vajalikud kliendipäringud, näiteks kiire paroolide lähtestamine kasutajatele (sest "Ah, me ei pääse serverisse, kaotame miljoneid!"), kasutaja otsimine, kellel on juurdepääs vajalikule kaustale, saidi sisse- ja väljalülitamine ja muud. Loomulikult täiustan ma pidevalt boti funktsioone, kuna klientide kujutlusvõime vahel toob esile ootamatuid ja minu jaoks ettenägematuid päringuid. Kuid põhivajadused on rahuldatud.

Kasutusel on ka VK versioon, aga see pole kuidagi sisse harjunud.

Nüüd reisin ma rahulikult ja avastan seda maailma, kartmata, et midagi läheb katki ja mul pole võimalust sellest teada saada või parandada.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster