Otsustasin jagada oma lugu. Võib-olla on kellelgi kasu sarnastest eelarvelahendustest, mis on kõigile teada.
Kui olin noor ja kuum ning ei teadnud, kuhu oma energiat suunata, otsustasin natuke vabakutseliselt töötada. Õnnestus kiiresti oma reitingut tõsta ja leidsin mitu püsiklienti, kes palusid mul nende servereid pidevalt toetada.
Esimene asi, mis mulle pähe tuli, oli jälgimise vajadus. Otsustasin teha nagu targad inimesed, ei hakanud jalgratast leiutama, vaid vaatasin valmis variante, nagu Munin või Zabbix. Kuid kohe avastasin, et veebiversioon nõuab head internetiühendust, eriti kui avada see esmakordselt telefonist. Kui sa aga puhkad looduses kaugel linnast, on stabiilse ühenduse saamine keeruline. Seetõttu valisin konsoolipõhise jälgimise.
Konsoolijälgimisel aitas mind hästi atop ja atop'i logide lugemisprogramm atopsar. Nendest on juba räägitud habr-is, aga atopsarist peaaegu et ei räägitud.
Paigaldamine
Väga lihtne installatsioon, vaid kolm käsku.
#Centos
yum install atop#Debian/Ubuntu
apt-get install atopEdasi saab jälgimise töö seada endale sobivaks või kasutada vaikeseadeid.
#Debian/Ubuntu/Centos
/etc/default/atop Vaikimisi fail:
#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 daemoni
#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 atopAtopsar
Koos atop'iga installitakse ka atopsar, see on mugav konsoolianalüsaator binaarsetest logidest, mida daemon atop pidada. Loomulikult saab logisid lugeda ka atop'iga, aga see ei ole nii mugav, kui on vajalik suurt ajavahemikku tabada.
Kohane ülevaade atopsar'i kasutamisest.
Atopsar'i käivitamisel ilma võtmeteta avatakse tänase päeva logi ja väljastatakse koormus iga tuuma kohta eraldi ning idl rida kõigi tuumade kohta.
Võtmed, mida ma kasutan:
-A = väljasta kogu teave logist
-с = väljasta informatsioon koormuse kohta protsessori tuumadele, vaikimisi võti
-m = koormus tegevusmälu ja swap'i kohta
-d = kettategevus
-O = top-3 koormuse protsessid CPU-l
-G = top-3 koormuse protsessid RAM-l
-D = top-3 koormuse protsessid kettal
-N = top-3 koormuse protsessid võrgus
-r = määrake tee logini, mida soovite lugeda, kui on vaja vaadata koormust varasemate päevade jooksul
-b = aeg, millest alates alustada väljastamist
-e = aeg, mille jooksul tuleb väljund lõpetada
-M = loob täiendava veeru lõpus, kus märgitakse rea kriitilisus (+ on koormus, * — kriitiline koormus)
Jälgimise abil saame aru, miks server käitub ebanormaalselt igal ajal.
Teated
Nii et koormuse jälgimine on olemas, kuid see ei anna ikkagi võimalust kiiresti probleeme tuvastada ja lahendada. Me vajame teavitusi, kui probleem tekib.
Mina jälgin servereid üksi, seetõttu peab teavitama sinna, kus ma seda alati näen ja suudan kuidagi reageerida.
Alguses olid SMS-id — kiired, usaldusväärsed, tasuta. Kuid hiljem lõpetasid mobiilioperaatorid tasuta SMS-saatmise oma väravate kaudu.
Postkiri — aeglane, võib esineda kohaletoimetamisprobleeme.
Sõnumirakendused — tuleb telefonile paigaldada, on vajalik botide loomine.
Otsingu tulemusena valiti sõnumirakendus Telegram lihtsuse ja mugava rakenduse tõttu telefonis ja lauaarvutis.
Loomisin oma boti abil .
Seejärel panin serverisse mõned skriptid, mis jälgivad serveri koormust (IDL, smartct jne), vigade olemasolu, nagu 'oom killer', varukoopia loomise vead ja muid toiminguid, mida on vaja kontrollida.
Skriptid on üsna lihtsad, kirjutatud bashis, näiteks LA kontrollimine ja teavitamine, kui koormus ületab keskmise tuumade arvu serveris.
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`"
fiSüntaksi lihtsus annab väga palju kasutusvõimalusi (ja kirjutada / lisada saab igaüks, kes on vähemalt natuke programmeerimiskeelest teadlik).
Ainus nüanss — kui server asub Venemaal (ja teil pole serveris IPv6-d), tuleb kasutada proxy-d. Selleks tuleb skripti algusesse kirjutada ühenduse loomise rida:
export https_proxy=http://kasutajanimi:parool@IP.aadress:portSee ei ole lõpp
Käid rahulikult mägedes seljakotiga seljas, puhates tsivilisatsioonist, kui äkki telefon, juhuslikult levi püüdes, saadab teate, et sinu serveris on tekkinud probleem. Mida teha? Rikkus rahulikku meeleolu nagu tuulega. Helistada naisele ja diktoreerida käsklusi? Haha!
Pidi kiiresti välja mõtlema mingi viisi tekkivate probleemide kiireks lahendamiseks ilma hea internetita. Siin päästis mind jälle messengeri rakendus (#telegramlive). Õpetasin oma boti suhtlema ainult minuga, ignoreerides kõiki teisi. Nüüd, koos probleemiteatega, saan ma veidi rohkem andmeid, mille põhjal saan aru, kes on probleemi allikas, ja võin proovida seda kaugjuhtimisega lahendada. Lihtsalt kirjuta sõnum botile, tõsta telefon kõrgemale, et sõnum saaks saadetud, ja voilà — bot hakkab sinu tööd tegema. Nii saan näiteks peatada mõne ebasoovitava protsessi, restardida deemonit, blokeerida IP-aadressi ja muud.
Siia tõin ka tulevikus vajalikke päringuid klientidelt, näiteks kiire paroolide taastamine kasutajatele (sest 'Aaa! Me ei saa serverisse, kaotame miljoneid!'), kasutaja leidmine, kellel on juurdepääs vajalikule kaustale, veebisaidi sisse ja välja lülitamine ning muud. Muidugi täiustan pidevalt boti funktsionaalsust, kuna klientide fantaasia toob vahel ettenägematuid ja minule mitte ette nähtud päringuid. Kuid põhivajadused on rahuldatud.
On olemas ka VK versioon, kuid see nagu ei leidnud endale kohta.
Nüüd saan rahulikult reisida ja seda maailma avastada, kartmata, et midagi katki läheb ja ma ei saa sellest teada või parandada.
Allikas: habr.com
