Kaks aastat tagasi tegin juba postituse rÀÀkinud . Praegu on projektil toimunud mĂ”ningane areng ning ma olen avaldanud all , seetĂ”ttu otsustasin kirjutada sellele vĂ€ikesele ĂŒlevaatele habres.

[ ]
Kellele see vÔib huvi pakkuda
See vĂ”ib huvi pakkuda, kui töötate vĂ€ikese meeskonnaga vĂ”i isegi ĂŒksi. Teil ei ole jĂ€lgimist ja te ei ole kindel, kas see on tĂ”esti vajalik. VĂ”i olete proovinud mĂ”nda populaarset tĂ”sist jĂ€lgimist âsuurtele poisteleâ, kuid see ei ole teid kuidagi kaasahaaranud vĂ”i töötab peaaegu vaikimisi konfiguratsioonis ning ei ole teie elu palju muutnud. Ja ka â kui te tĂ”eliselt ei plaani mÀÀrata terve töötaja (vĂ”i isegi osakonna), et pĂŒhendada vĂ€hemalt paar tundi pĂ€evas jĂ€lgimise dashaardi jĂ€lgimisele vĂ”i selle seadistamisele.
Milline on okerra eripÀra
JÀrgmises osas nÀitan huvitavaid omadusi okerra, mis eristavad seda mÔnest muust jÀlgimisest.
Okerr on hĂŒbriidne jĂ€lgimine
Sisemise jÀlgimise korral töötab vaadeldavates masinates "agent", mis edastab andmeid jÀlgimisse Serverisse (nÀiteks vaba ruumi kettal). VÀlist jÀlgimise korral teostab server vÔrgu kaudu kontrolle (nÀiteks ping vÔi veebisaidi kÀttesaadavus). Igal meetodil on omad piirangud. Okerr kasutab mÔlemat varianti. Kontrollid serverite sees viiakse lÀbi vÀga kerge (30Kb) agendi vÔi teie enda skriptide ja rakenduste kaudu, vÔrgu kontrollid aga lÀbi okerr'i sensorite erinevates riikides.
okerr ei ole ainult tarkvara, vaid ka teenus.
Iga jÀlgimise serveri osa on suur ja keeruline, selle installeerimine ja seadistamine on keeruline ning see nÔuab ressursse. Okerr'i abil saate paigaldada oma jÀlgimisse serveri (see on tasuta ja avatud lÀhtekoodiga), aga vÔite lihtsalt kasutada ainult kliendi osa ja kasutada meie serveri teenust. Samuti tasuta.
Kui jĂ€lgimine suudab kompenseerida usaldusvÀÀrsuse puudujÀÀki serverites ja rakendustes, tekib filosoofiline kĂŒsimus â kes valvab valvurit? Kuidas saab jĂ€lgimine teavitada meid probleemist, kui see ise on mĂ”ne pĂ”hjuse tĂ”ttu âsurnudâ, eraldi vĂ”i koos teiste teie ressurssidega (nĂ€iteks andmekeskuse kanal on vĂ€lja kukkunud)? VĂ€lise teenuse okerr kasutamisel lahendatakse see probleem â te saate hoiatuse isegi siis, kui kogu andmekeskus koos teie serveritega on elektrita vĂ”i on rĂŒnnaku all zombide poolt.
Muidugi, on olemas risk, et okerr server ise ei ole kergesti kĂ€ttesaadav, see on tĂ”si (nagu teada, saadakse 90% usaldusvÀÀrsusest alati lihtsalt ja âtasutaâ, 99% â minimaalse vaevaga, ja iga jĂ€rgmine ĂŒheksa on eksponentsiaalselt keerulisem). Kuid, esiteks on selle tĂ”enĂ€osus madalam, ja teiseks vĂ”ib probleem jÀÀda mĂ€rkamatuks ainult siis, kui see langeb kokku probleemidega meie serverites. Kui meil on usaldusvÀÀrsus 99,9% ja teil on 99,9% (mitte sugugi kĂ”rgemad numbrid), siis on mĂ€rkamatuks jÀÀva tĂ”rke tĂ”enĂ€osus 0,1% 0,1% = 0,0001%. Endale kolme ĂŒheksa lisamine usaldusvÀÀrsuses peaaegu ilma vaevata ja kuludeta â see on vĂ€ga hea!
Veel teine eelis monitooringu teenusena on, et hostingu pakkuja vĂ”i veebistuudio vĂ”ib seadistada oma serveri okerr ja pakkuda klientidele ligipÀÀsu tasulise vĂ”i tasuta lisateenusena. Teie konkurentidel on lihtsalt hosting ja saidid â teil on aga usaldusvÀÀrne hosting koos monitooringuga.
Okerr â see on indikaatorite maailm
Indikaator on nagu âlampâ. Tal on kaks peamist olekut â roheline (OK) vĂ”i punane (ERR). Projektis on palju gruppeeritud (nĂ€iteks serverite kaupa) indikaatoreid. Projekti avalehelt nĂ€ete kohe kas kĂ”ik on roheline (siis vĂ”ib sulgeda) vĂ”i midagi sĂ€rab punaselt ja vajab parandamist. Nende olekute vahel liikumisel saadetakse teavitus. Ăks kord ööpĂ€evas, kui seadistate â saadetakse projektist kokkuvĂ”te.

Iga okerr indikaator sisaldab sisseehitatud tingimusi, mille alusel ta muudab olekut (Zabbixis nimetatakse seda triggeriks). NÀiteks peab koormuse keskmine olema mitte rohkem kui 2 (loomulikult on see seadistatav). Ja iga sisemise kontrolli (koormuse keskmine, vabade kettaruumi jne) jaoks on watchdog. Kui mingil pÔhjusel ei saa me mÀÀratud ajaks edukat kinnitust, registreeritakse viga ja saadetakse teade.
Meie tavapĂ€rane tööplaan on hommikune e-kirjade kontrollimine, seal vaatame teiste seas ĂŒle kokkuvĂ”tte (selle ajastame töö algusesse). Kui seal on kĂ”ik korras, toimetame edasi muude oluliste asjadega (aga saame usaldusvÀÀrsuse huvides kiirelt okerr juhtehku vaadata, et veenduda, et ka sel hetkel on kĂ”ik roheline). Kui tuleb teade, siis reageerime.
Muidugi on vĂ”imalik lihtsalt hoida âteavitavaidâ indikaatoreid (et nĂ€ha vĂ”rgu seisundit jĂ€lgimise kaudu), kuid kĂ”ik on tehtud nii, et oleks lihtne, kerge ja kiire luua indikaatoreid automaatse jĂ€lgimise ja teavituste saatmise jaoks.
MĂ”te, miks te okerr'i seadistate, seisneb hĂ€ired selles, et saate minutiga luua indikaatori. See vĂ”ib aasta jooksul lihtsalt 'magada', vastu vĂ”ttes uuendusi, ja kui aasta pĂ€rast teil midagi katki lĂ€heb, sĂŒttib see ja saadab hĂ€ire. Ăks minut, mille kulutasite indikaatori loomisele, tasus end Ă€ra â saite probleemist kohe teada, enne kui keegi teine seda mĂ€rkab. VĂ”ib-olla olete isegi selle enne Ă€ra parandatud, kui keegi mĂ€rkab. Kiiresti pĂŒstitatud ei loeta langenuks!
Ohutus
Oleks kahju, kui seate jĂ€lgimise usaldusvÀÀrsuse suurendamiseks, kuid tulemusena rĂŒndavad teid lĂ€bi selle vĂ”rgu, ja erinevate jĂ€lgimistööriistade vĂ”rgu haavatavusi on ĂŒsna palju (, ).
Agendi (okerrmod paketist ), mis töötab sĂŒsteemis â see ei ole vĂ”rgu server, vaid klient. SeetĂ”ttu ei ole jĂ€lgitava serveri peal lisaportaale avatud, klient töötab kergesti tulemĂŒĂŒri vĂ”i NAT'i taga ja seda on vĂ€ga raske (ĂŒtleksin, et 'vĂ”imatu') vĂ”rgu kaudu hĂ€kkida, kuna see pĂ”himĂ”tteliselt ei kuula vĂ”rgu soket.
TÀielik jÀlgimise katvus
Meil on nĂŒĂŒd reegel â me saame kĂ”ik tehnilised probleemid teada okerrist. Kui reegel peaks rikkuma (okerr ei teatanud selle eelseisvast saabumisest (kui see on vĂ”imalik) vĂ”i et see on juba saabunud) â lisame okerrisse kontrollid.
VĂ€lish kontrollid
Ăsna tĂŒĂŒpiline komplekt:
- ping
- http staatus
- SSL tunnistuse kehtivuse ja vÀrskuse kontroll (hoiatab, kui aeg hakkab lÔppema)
- avatud TCP port ja banner sellel
- http grep (lehe [mitte] peaks sisaldama teatud teksti)
- sha1 hash, et lehekĂŒlje muutust tuvastada.
- DNS (DNS kirje peab olema kindla vÀÀrtusega)
- WHOIS (hoiatab, kui domeen hakkab peagi aeguma)
- Antispam DNSBL (kontrollib hosti samal ajal 50+ rÀmpspostiblokeerimise nimekirjade jÀrgi)
Sisemised kontrollid
Samuti, ĂŒsna tĂŒĂŒpiline komplekt (aga kergesti laiendatav).
- df (vaba ruum kettal)
- koormus keskmine
- opentcp (avatud kuulavad TCP sokid â teavitab, kui midagi on kĂ€ivitunud vĂ”i kukkunud)
- uptime â lihtsalt serveri tööaeg. Teavitab, kui see on vĂ€henenud (st. server taaskĂ€ivitati)
- client_ip
- dirsize â me kasutame seda, et jĂ€lgida, kui meie rootfs virtuaalid ĂŒletavad lubatud suuruse, ilma et kehtestaksime karmid piirangud, ja jĂ€lgime kasutajate kodukataloogide suurusi.
- empty ja nonempty â jĂ€lgivad faile, mis peaksid olema tĂŒhjad (vĂ”i mitte tĂŒhjad). NĂ€iteks, serveri error log okerr â peaks olema tĂŒhi, ning kui seal on vĂ€hemalt ĂŒks rida, saan teate ja kontrollin. Aga mail.log meiliserveris ei tohi olla TĂHI (N minuti pĂ€rast pĂ€rast rotatsiooni). MĂ”nikord on see meil tĂŒhi olnud pĂ€rast sĂŒsteemi uuendamist, kui logrotate ei suutnud rsyslogi Ă”igesti taaskĂ€ivitada.
- linecount â faili ridade arv (nagu wc -l). Me kasutame seda pehme asendajana empty jaoks, kui error log siiski vĂ”ib kasvada, aga ainult aeglaselt (meil, nĂ€iteks, googlebot ĂŒritab siseneda mĂ”ningatele suletud lehtedele). Piirang on 2 rida 20 minuti jooksul. Kui see on kĂ”rgem â tuleb hĂ€ire.
Huvitavad sisemised kontrollid
Kui olete siiani lugenud âdiagonaalisâ, siis nĂŒĂŒd on huvitavam lugeda tĂ€helepanelikumalt.
backups
JĂ€lgib varukoopiaid kataloogis. Meie varukoopiafailid kannavad nimesid nagu âServerName-20200530.tar.gzâ. Iga serveri jaoks luuakse okerris indikaator ServerName-DATE.tar.gz (tĂ”eline kuupĂ€ev asendatakse stringiga âDATEâ). JĂ€lgitakse nii vĂ€rske varukoopia olemasolu kui ka selle suurust (nĂ€iteks ei tohi see olla vĂ€iksem kui 90% eelmisest varukoopiast).
Mida peab tegema, et uus varukoopia hakkaks jÀlgima, pÀrast seda kui oleme selle looma hakanud ja sellesse katalooge paigutanud? Mitte midagi! See on vÀga mugav lÀhenemine, kui ei pea midagi tegema, sest:
- Midagi tegemine â on ĂŒsna kiire, see sÀÀstab aega.
- Raske on unustada midagi mitte teha.
- Raske on midagi mitte teha valesti, eksimuseta. Mitte midagi tegemine â on kĂ”ige usaldusvÀÀrsem meetod.
Kui Ă€kki ei hakka ilmuma uusi varukoopiafaile â tuleb hĂ€ire. Kui olete nĂ€iteks vĂ€lja lĂŒlitanud ĂŒhe serveritest, mille varukoopiaid ei peaks enam olema â peate indikaatori kustutama (kas veebiliidese kaudu vĂ”i shelli API kaudu).
maxfilesz
JĂ€lgib suurimaid faile (tavaliselt: /var/log/*). See vĂ”imaldab tabada ettenĂ€gematuid probleeme, nĂ€iteks paroolide ĂŒritusi vĂ”i spĂ€mmimist serveri kaudu.
runstatus/runline
Need kaht olulist proxy moodulit, et kÀivitada teisi programme serveris. Runstatus edastab programmi vÀljundkoodi indikaatorisse. NÀiteks ei ole okerr'is (mitte vajalik) moodulit, mis kontrollib, kas systemd teenused töötavad. Seda teostatakse runstatus'i kaudu (vt allpool). Runline edastab serverisse rea, mille programm annab. NÀiteks, temp_RUN="cat /sys/class/thermal/thermal_zone0/temp" konfiguratsioonis Runline meie serveris loob indikaatori servername:temp koos protsessori temperatuuriga.
sql
TĂ€idab numbrilise pĂ€ringu MySQL-le ja edastab tulemuse indikaatorisse. Lihtsas olukorras vĂ”ib teha nĂ€iteks 'SELECT 1' â see kontrollib, et andmebaas töötab ĂŒldiselt.
Aga palju huvitavam rakendus on nĂ€iteks jĂ€lgida tellimuste arvu veebipoes. Kui tead, et tunnis on sul 100 tellimust, saad seada miinimumpiiriks 100 vĂ”i 80. Siis, kui Ă€kki mĂŒĂŒk jĂ€rsult langeb â saad hĂ€ire, ja saad aru saada.
Pane tĂ€hele â pole tĂ€htis, mis ettearvamatu pĂ”hjus selle jaoks on:
- Server on lihtsalt kÀttesaamatu (elektrit ei ole vÔi vÔrku ei ole), ja hÀire tuli sellest, et indikaator "aegus".
- Server on occasion experiences high load, operates slowly or has packet loss, leading to user dissatisfaction and abandonment of purchases.
- The server has landed on spam lists, resulting in emails being rejected, preventing user registrations.
- The budget for the advertising campaign has run out, and the banners are not displaying.
There can be countless reasons, and it's impossible to foresee all of them in advance; tracking them technically can be complex. However, it's possible to conveniently monitor the ultimate parameter (orders) and determine from them whether the situation seems suspicious and warrants further investigation.
Logical indicators
Enables the use of logical expressions (Python syntax) through the module (). Data from the project and its indicators are available for the expression. For example, in the chapter on SQL checks above, you might have noticed a weakness â during the day we can have 100 sales an hour, but at night it's 20, and that's normal, not a problem. What to do? The indicator will panic constantly at night.
Saate luua kaks indikaatorit, pÀevane ja öine. MÔlemad teha 'vaikseks' (nad ei saadeta teateid). Ja luua loogiline indikaator, mis nÔuab, et enne kella 20:00 oleks pÀevane indikaator korras, ja pÀrast kella 20:00 piisab, kui öine indikaator oleks OK.
Teine nĂ€ide loogilise indikaatori kasutamisest on eskaleerimine. NĂ€iteks projektijuht loobub hĂ€irete teavitamisest (tal pole seda vaja, adminnid peavad reageerima tavapĂ€rastele probleemidele), kuid liitub loogilise indikaatori teavitustega, mis muutub punaseks, kui ĂŒkskĂ”ik milline indikaator projektis ei ole mÀÀratud ajaks parandatud.
Veelgi enam, on vĂ”imalik mÀÀrata lubatud tööaeg, nĂ€iteks kella 3-5 hommikul. Meid ei huvita, kui serverid ja saidid sel ajal 'kukuvad'. Kuid kell 5:00 peavad nad töötama. Kui nad ei tööta mistahes muul ajal â hĂ€ire. Samuti vĂ”imaldab loogiline indikaator arvesse vĂ”tta serverite varundamist. Kui teil on 5 veebiserverit, vĂ”ivad adminnid vĂ€lja lĂŒlitada 1-2 serverit igal ajal. Kuid kui lahingus on vĂ€hem kui 3 5 serverist â tuleb hĂ€ire.
Ălaltoodud nĂ€ited ei ole okerri funktsioonid ega mingid funktsioonid, mida tuleb aktiveerida ja konfigureerida. Okerris nende funktsioonide pole, kuid seal on loogikamoodul, mis vĂ”imaldab seda funktsionaalsust rakendada (nagu programmeerimiskeeles â kui meil on aritmeetilised operaatorid, ei vaja me keelt eraldi funktsiooni 20% KM arvutamiseks, selle saate alati ise oma vajaduste jĂ€rgi luua).
Loogiline indikaator on ilmselt ĂŒks vĂ€heseid suhteliselt keerulisi teemasid okerri maailmas, kuid hea uudis on see, et te ei pea neid valdama, kuni see ei osutu vajalikuks. Samas laiendavad need vĂ€ga oluliselt vĂ”imalusi, hoides sĂŒsteemi ĂŒldiselt piisavalt lihtsana.
Oma kontrollide lisamine
Tahaksin tĂ”esti rĂ”hutada, et okerr ei ole tuhat valmis kontrolli kĂ”ikide elusituatsioonide jaoks, vaid vastupidi â see on eelkĂ”ige lihtne mootor, mis pakub lihtsat vĂ”imalust luua oma kontrollid. Oma kontrollide loomine okerris ei ole ĂŒlesanne hĂ€kkeritele, sĂŒsteemi kaasautoritele vĂ”i isegi arenenud kasutajatele, vaid teostatav ĂŒlesanne igale adminile, kes kuu aega tagasi esmakordselt Linuxi paigaldas.
Minimaalsete kontrollide lÀbiviimine toimub mooduli kaudu :
See rida konfiguratsioonis teavitab, kui Àkki /bin/true ei kÀivitu vÔi annab tagasi mitte 0.
true_OK=/bin/trueAinult ĂŒks rida â ja olemegi juba veidi laiendanud okerr funktsionaalsust.
Isegi selline kontroll â omab juba oma vÀÀrtust: kui teie server Ă€kki kukub, siis vastav indikaator serveris okerr ei uuene Ă”igel ajal, ja aja möödudes tekib alert.
See kontroll teavitab, et server apache2 on kukkunud (noh, igaks juhuksâŠ):
apache_OK="systemctl is-active --quiet apache2"Nii et, kui te oskate vĂ€hemalt ĂŒhte programmeerimiskeelt vĂ”i saate kirjutada shell-skripte â siis juba vĂ”ite lisada oma kontrollid.
Raskem â saate kirjutada (igal keelel) oma mooduli okerrmod jaoks. Lihtsaimal juhul nĂ€eb see vĂ€lja nii:
#!/usr/bin/python3
print("STATUS: OK")Ei ole ju vÀga keeruline? Moodul peab tegema kontrolli ja andma tulemused STDOUT. Raskem moodul annab nÀiteks sellist:
$ okerrmod --dump df
NAME: pi:df-/
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 49.52%, 13.9G/28.2G kasutatud, 13.0G vaba
STATUS: 49.52
NAME: pi:df-/boot
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 84.32%, 53.1M/62.9M kasutatud, 9.9M vaba
STATUS: 84.32See on korraga mitu indikaatorit (eraldatud tĂŒhja reaga), vajadusel loob neid, mÀÀrab kontrollimise ĂŒksikasjad ja sildi, mille jĂ€rgi on juhitabelis lihtne leida soovitud indikaatoreid.
Telegram
On olemas Telegrami bot . Te ei pea oma telefoni eraldi rakendustega ĂŒle koormama (ma ise ei armasta, et Pjatjorikule on ĂŒks rakendus kaardiga, Lenta jaoks teine, MTS-i jaoks kolmas ja nii edasi). Ăks Telegram on piisav. Telegrami kaudu saab kohe saada teateid ja kontrollida projekti olekut ning anda kĂ€su kĂ”ikide probleemsete indikaatorite uuesti kontrollimiseks. Astudes teater/lenukist vĂ€lja, kui kaks tundi ei olnud kĂ€t pulsil, sisse lĂŒlitatud, vajutada ĂŒhte nuppu ŃаŃ-Đ±ĐŸŃis ja veenduda, et kĂ”ik on korras.
Olekulehed
Meie ajal on olekuhed peaaegu kohustuslikud iga Àri jaoks, millel on IT, vastutustundlik suhtumine usaldusvÀÀrsusesse ja kes austab oma kliente/kasutajaid.
Kujutage ette olukorda â kasutaja soovib midagi teha, vaadata informatsiooni vĂ”i tellimust vormistada, kuid midagi ei tööta. Ta ei tea, mis toimub, kellel on probleem ja millal see lahendatakse. Kas teie firma veebisait on lihtsalt maas? VĂ”i on see lĂ€bi kukkunud kuus kuud tagasi ja taastatakse kahe aasta jooksul? Aga kĂŒlmkapp tuleb osta just nĂŒĂŒd, see on juba ostukorvis⊠Ja hoopis teine asi on see, kui inimene nĂ€eb, et teil on midagi valesti (kuigi on vĂ€hemalt selge, et probleem ei ole tema poolel), et probleem on avastatud, et te juba tegelete sellega ning vĂ”ib-olla olete isegi kirjutanud umbkaudse ajakava parandamiseks. Kasutaja saab tellida ja saada e-postile teate, kui probleem on lahendatud ja saab teha seda, mida ta soovis (osta kĂŒlmkapp).

Probleemid, seisakud â neid juhtub kĂ”igil. Kuid kasutajad ja partnerid usaldavad rohkem neid, kes on lĂ€bipaistvamad ja vastutustundlikumad selle suhtes.
Siin on . Siin on nÀited, kuidas need lehed vÀlja nÀevad projektides ja . .
Failover
Ette muuta seda artiklit veel pikemaks, viitan taas oma varasemale artiklile â . Kui suudate luua varundusserveri, siis failover'i kasutamine tĂ€hendab, et teil ei ole sisuliselt pikka seisakut â kohe, kui probleem tuvastatakse, suunatakse kasutajad automaatselt töötavale varu-serverile. Tahan öelda, et see on vĂ€ga huvitav ja eriline funktsioon, mida leidub harva.
Madalaid sĂŒsteeminĂ”udeid
Okerr-serverite jaoks kasutame masinate RAM-i alates 2GB. VĂ”rgusensorite jaoks piisab isegi 512MB-st. Klientide osa on peaaegu olematu. (Pakett kaalub 26 Kb, kuid vajab Python3 ja standardteeke). Klient kĂ€ivitatakse krontasku kaudu, seega on selle pidev mĂ€lutarbimine null. Meie jĂ€lgitavate masinate seas on sensoreid (ĂŒliodavad VPS-id 512MB RAM-iga) ja Raspberry Pi. VĂ”imalik on isegi edastada vĂ€rskendusi ilma kliendi osata ! (vt allpool)
Seda arvesse vĂ”ttes â okerr on tĂ”enĂ€oliselt kĂ”ige tasuta jĂ€lgimisseade, mille saab valida, sest isegi kui kasutada teist tasuta avatud lĂ€htekoodiga sĂŒsteemi nagu Zabbix vĂ”i Nagios, peab sellele mÀÀrama ressursid (server), ja see on juba kulutused. Lisaks on vajalik serveri hooldus. Okerriga saab selle osa kĂ”rvaldada. VĂ”ite ka mitte kĂ”rvaldada ja kasutada enda serverit â olenevalt sellest, kuidas teile sobib.
API ja integreerimine oma tarkvarasse
Lihtne ja avatud arhitektuur. Okerril on ĂŒsna lihtne , millega on lihtne töötada. Kas peate looma 1000 indikaatorit? Ăhe shell-skripti abil 3-4 rida teeb selle Ă€ra. Kas peate ĂŒmber seadistama 1000 indikaatorit? See on samuti vĂ€ga lihtne. NĂ€iteks tahame kontrollida kĂ”iki meie HTTPS-sertifikaate just Venemaa sensori kaudu:
#!/bin/sh
for indicator in `okerrclient --api-filter sslcert`
do
echo set location for $indicator
okerrclient --api-set location=ru retest=1 --name $indicator
doneIndikaatorit saab uuendada nii, kasutades meie kliendimoodulit, kui ka ilma selleta, lihtsalt curl'i kaudu.
# short and nice (using okerrupdate and config file)
$ okerrupdate MyIndicator OK
# only curl is enough!
$ curl -d 'textid=MyProject&name=MyIndicator&secret=MySecret&status=OK' https://bravo.okerr.com/Indikaatoreid saab uuendada otse oma programmist. NĂ€iteks saates heartbeat signaale, et okerr teaks, et see on kĂ€ivitatud, ja tĂ”sta alarmi, kui see on kokku kukkunud vĂ”i hangunud. Muide, okerr komponendid teevad just seda â okerr jĂ€lgib end ise, ja probleemid peaaegu igas moodulis tuvastatakse ning genereerivad probleemiteate. (Ja selle 'peaaegu' puhul â nad kontrollitakse risttsekkimisega teiselt serverilt)
Siin on selline kood (lihtsustatud) meie Telegrami botis:
from okerrupdate import OkerrProject, OkerrExc
op = OkerrProject()
uptimei = op.indicator("{}:telebot_uptime".format(hostname))
...
uptimei.update('OK', 'pid: {} Uptime: {} cmds: {}'.format(
os.getpid(), dhms(uptime), commands_cnt))Python programmidest indikaatorite uuendamiseks on olemas raamatukogu , teiste programmeerimiskeelte jaoks raamatukogud puuduvad, kuid saate kas kÀivitada skripti okerrupdate vÔi teha HTTP pÀringu okerr serverisse.
Kuidas okerr meid aitab
Okerr on pĂ”hjalikult muutnud meie elu. TĂ”eliselt. VĂ”ib-olla suudaks mĂ”ni teine seire sĂŒsteem samuti, kuid okerriga on meil lihtne ja mugav töötada ning selles on kĂ”ik vajalikud funktsioonid (need, mida polnud â oleme ise lisanud). Muide, kui mĂ”nda funktsiooni pole â kĂŒsige, ja ma lisame selle (ma ei lubanud, kuid tahan, et okerr oleks parim seiresĂŒsteem vĂ€ikeste ja keskmise suurusega projektide jaoks). VĂ”i veel parem, lisage ise â see on lihtne.
Meil on Ă”nnestunud elada pĂ”himĂ”ttel âkĂ”igist probleemidest teada okerristâ. Kui juhtus probleem, millest me ei kuulnud okerrist â lisame kontrolli okerrisse. (selles kontekstis mĂ”istan âmeâ kui sĂŒsteemi kasutajaid, mitte kaas-arendajaid). Alguses juhtus seda tihti, kuid nĂŒĂŒd on see vĂ€ga harv.
JĂ€lgimine
Okerr kaudu jĂ€lgime logide mahtusid kĂ”igis serverites. Iga logirida silmadega lĂ€bi lugeda on loomulikult vĂ”imatu, kuid kasvukiirusest jĂ€lgimine annab juba palju. Selle kaudu oleme avastanud nii rĂ€mpsposti saatmist kui ka bruteforce paroolide katsetamist, ja ka siis, kui mĂ”ned rakendused "kaotavad kontrolli" â nad ei suuda midagi teha ja korrake seda ikka ja jĂ€lle (iga kord lisades paar rida logisse).
SSL sertifikaadid. Peaaegu kohe pĂ€rast kĂ€ivitamist algas meie kliendi tasuta SSL sertifikaatide pakkumine oma klientidele (umbes tuhat neist). Ja see osutus lihtsalt haledaks haldamiseks! Asi on selles, et veebisaidid on "elavad", kliendid kĂŒsivad aeg-ajalt, et midagi Ă€ra teha, programmid teevad. Nad vĂ”ivad nĂ€iteks vabalt veebisaidi teisele DocumentRootile viia. VĂ”i lisada tingimusteta Rewrite virtuaalhosti konfiguratsiooni. Loomulikult lĂ”hub see automaatse sertifikaatide uuendamise. NĂŒĂŒd lisatakse kĂ”ik SSL hostid okerrisse automaatselt veel ĂŒhe meie kasuliku tööriista kaudu paketist . Lihtsalt kĂ€ivitame a2okerr.py â ja kui serveris on mitu uut veebisaiti, siis need ilmuvad automaatselt okerrisse. Kui sertifikaadi uuendamine mingil pĂ”hjusel ebaĂ”nnestub, siis kolme nĂ€dala jooksul enne selle aegumist â me oleme sellest teadlikud ja uurime, miks see ei uuene. a2certbot.py sama paketi seest â see aitab vĂ€ga palju (kontrollib kohe kĂ”ige tĂ”enĂ€olisemaid probleeme ja nĂ€itab, mis on hĂ€sti kontrollitud ning kus on tĂ”enĂ€oliselt probleem).
Me jĂ€lgime kĂ”igi meie domeenide aegumist. Ja kĂ”ik meie e-posti serverid, mis saadavad e-kirju, kontrollitakse ka 50+ erineva musta nimekirja vastu. (Ja mĂ”ned sisenevad nendesse). Muide, kas teadsite, et ka google'i e-posti serverid on mustades nimekirjades? Lihtsalt enesetestimise huvides lisasime mail-wr1-f54.google.com jĂ€lgitavate serverite hulka ja see on tĂ”epoolest mustas nimekirjas SORBS! (See seondub ĂŒlevaate vÀÀrtusele «antispammerite» kohta).
Varukoopiad â seal ĂŒleval mainisin juba, kuidas neid okerriga lihtsalt jĂ€lgida. Kuid me jĂ€lgime vĂ€rskeid varukoopiaid ka meie serveris ning (erineva utiliidi abil, mis kasutab okerrit) â varukoopiaid, mida me laadime Amazon Glacierisse. Ja jah â perioodiliselt esinevad probleemid. Mitte ilma pĂ”hjuseta me jĂ€lgisime.
Kasutame eskaleerimise indikaatorit. Selle abil on nĂ€htav, kui mĂ”ni probleem on juba kaua aega lahendamata. Isegi mina, kui lahendan mingeid ĂŒlesandeid, unustan vahel neist. Eskaleerimine on hea meeldetuletus, isegi kui jĂ€lgid iseennast.
Ăldiselt arvan, et meie töö kvaliteet on tĂ”usnud jĂ€rsult. Peaaegu pole kaheks ei (no vĂ”i klient ei jĂ”ua seda mĂ€rgata. Ainult tĆĄĆĄĆĄ!), samas on töömaht vĂ€henenud ja töötingimused rahulikumad. Oleme lĂ€inud hĂ€daolukorrast, kui lappame auke teibiga, rahulikuma ja tasakaalustatumate töövormide juurde, kus paljusid probleeme ennustatakse ette ja on aega, et need Ă€ra hoida. Isegi juba juhtunud probleemide lahendamine on nĂŒĂŒd lihtsam: esiteks kuuleme neist enne, kui kliendid paanikat teevad, ja teiseks juhtub sageli, et probleem on seotud hiljutise tööga (kui tegin ĂŒht, rikki teise) â seega on kuumad jĂ€ljed kergem peatada.
Ja veel ĂŒks juhtum oli ...
Kas te teadsite, et populaarne Debian 9 (Stretch) on saanud tuntud paketi phpmyadmin, mis on olnud halvasti hoitud (juba mitu kuud!) haavatavaks? (). Kui haavatavus avanes - katsetasime selle kiiresti erinevate meetoditega varjata. Kuid ma seadistasin okerr'isse jÀlgimise security-tracker'i lehe jaoks, et teada, millal tuleb "ilus" lahendus (SHA1 sisu summa kaudu). Mitmel korral tÔmbas indikaator mind tÀhelepanu, leht muutus, kuid nagu nÀha - kuni tÀnaseni (alates jaanuarist 2019!) ei ole seal nÀidatud, et probleem on lahendatud. VÔib-olla mÔni teab, mis probleem seal on, et see oluline pakett on rohkem kui aasta haavatav?
Teine kord sarnases olukorras: pĂ€rast SSH haavatavust tuli kĂ”ik serverid uuendada. Ja kui seadistad ĂŒlesande - tuleb kontrollida tĂ€itmist. (Alluvad kipuvad mĂ”istma asju valesti, unustama, segadusse minema, vigu tegema). SeetĂ”ttu lisasime kĂ”igepealt okerr'isse SSH versiooni kontrollimise kĂ”igis serverites ja jĂ€lgisime okerr'i kaudu, et uuendused oleksid kĂ”igis serverites rakendatud. (Mugav! Valisin selle tĂŒĂŒpi indikaatori ja kohe on nĂ€ha, millises serveris on milline versioon). Kui olime veendunud, et ĂŒlesanne on tĂ€idetud kĂ”igis serverites - eemaldasime indikaatorid.
MĂ”ned korrad on olnud olukord, kus mingi probleem ilmneb ja siis lahendub iseenesest. (ilmselt on see kĂ”igile tuttav?). Kui sa lĂ”puks mĂ€rkad ja kontrollima hakkad â siis on juba kĂ”ik hĂ€sti ja polegi seal enam midagi kontrollida. Kuid hiljem vĂ”ib probleem jĂ€lle tagasi tulla. Meie kogesime seda nĂ€iteks toodetega, mida laadisime ĂŒles Amazon Marketplace (MWS). Ăhel hetkel olid ĂŒles laaditud varud vale info (vale toodete kogus ja vale hind). KĂ€isime selle ĂŒle. Kuid et sellest aru saada â oli oluline probleemist kohe teada saada. Kahjuks on MWS nagu kĂ”ik Amazoni teenused â natuke aeglane, seega oli alati viivitusi, ent lĂ”puks Ă”nnestus meil siiski luua umbes seos probleemi ja skriptide vahel, mis seda pĂ”hjustavad (teostasime kontrolli, sidusime selle tĂ”rkega ja kontrollisime kohe, kui hĂ€iret saime).
Huvitav juhtum, mille lisasin hiljuti oma mĂ€lestuste kausta, tuli suurelt ja kallilt Euroopa hostimiselt, mida kasutab meie klient. Ăhel hetkel kadusid Ă€kki kĂ”ik meie serverid radarilt! Alguses mĂ€rkis klient ise kĂ€sitsi (kiiremini kui seadus!), et veebileht, millega ta töötas, ei avane ja tegi tiketi selle kohta. Kuid ei katkenud mitte ainult ĂŒks veebileht, vaid tegelikult kĂ”ik! (Natasha, me oleme kĂ”ik kukkunud!). Siis hakkas ka Okerr saatma pikki raporteid kĂ”igi nĂ€idikute kohta, mis tal pĂ”lesid. Paanikapaanikana, jooksime ringi (mida muud teha?). Siis kĂ”ik tĂ”usis jĂ€lle pĂŒsti. Selgus, et andmekeskuses olid regulatsioonitööd (ĂŒks kord mitme aasta jooksul) ja meid pidid muidugi ette hoiatama. Kuid mingisugune segadus juhtus neil ja ei hoiatatud. No, infarkt rohkem, infarkt vĂ€hem. Aga pĂ€rast kĂ”ike taastamist â peab ju kĂ”ik ĂŒmber kontrollima! Ma ei kujuta ette, kuidas ma seda kĂ€sitsi teeksin. Okerr testis kĂ”ik mĂ”ne minutiga. Selgus, et suurem osa serveritest oli lihtsalt ajutiselt kĂ€ttesaamatu, kuid töötas. MĂ”ned ĂŒlekoormati, kuid ka need tĂ”usid tĂ”usutsĂŒklisse nagu vaja. KĂ”ikide kaotuste seast â kaotasime kaks varukoopiat, mis pidid cron'i jĂ€rgi tekkima ja laadima selle ajaga, mil toimus see tĂ€ielik kaos. Ma isegi ei hakanud neid looma, lihtsalt 24 tunni pĂ€rast saabusid hoiatusteated, et kĂ”ik on korras, varukoopiad ilmusid. Mulle see nĂ€ide vĂ€ga meeldib, sest okerr osutus situatsioonis, millest me isegi eelnevalt ei mĂ”elnud, vĂ€ga kasulikuks, kuid monitorimise ĂŒlesanne ongi - seista vastu ettearvamatusele.
Okerr sensoreid arendades kasutame me vĂ”imalikult odavaid hosting'uid (seal ei ole kvaliteet ja usaldusvÀÀrsus olulised, nad katavad ĂŒksteist). Hiljuti oleme leidnud vĂ€ga usaldusvÀÀrse hosting'u ja super odava hinnaga, tulemused on suurepĂ€rased. Kuid... mĂ”nikord juhtub, et vĂ€ljaminevad ĂŒhendused virtuaalserverist toimuvad teise (kĂ”rval) IP kaudu. Imed. Moodul client_ip saab vale IP. Ja serveri logidest on nĂ€ha, et uuendus tuli samuti sellelt kĂ”rval olevalt IP-lt. Praegu selgitame seda tehnilise toega. Hea, et mĂ€rkasin seda rahulikus olukorras. Kuid nĂ€iteks juhtub tihti, et juurdepÀÀs lisatakse IP valge nimekirja â ja kui server mĂ”nikord lĂŒhikeseks ajaks vilgub â vĂ”ib selle probleemi tuvastamine vĂ”tta vĂ€ga kaua aega.
Ja veel â kui juba VPS-hostingutest rÀÀgime â siis kasutame alati soodsaid (hetzner, ovh, scaleway). Nii jĂ”udluse kui ka stabiilsuse poolest â need meeldivad vĂ€ga. Kasutame ka kallimat Amazon EC2 teiste projektide jaoks. ĂhesĂ”naga, tĂ€nu okerr-le on meil oma pĂ”hjendatud arvamus. Vaatamata sellele, et mĂ”lemad kukuvad. Ja ma ei ĂŒtleks, et meie pikka aega kestnud jĂ€lgimise pĂ”hjal on odavad hostingud nagu hetzner oluliselt vĂ€hem stabiilsed kui EC2. Seega, kui te ei ole Amazon'i muude omadustega seotud â miks maksta rohkem? đ
Mis edasi?
Kui ma teid selle etapi jooksul okerr'ist veel tĂ”siselt ei Ă€ra hirmutanud â proovige! Otse sellel lingil saate sisse logida (KlĂ”psake kohe!). Kuid pidage meeles, et demo konto on kĂ”igile ĂŒhine, seega, kui te midagi teete â vĂ”ib keegi teine samaaegselt teid segada. VĂ”i (parem) registreeruge lĂ€bi lingi â kĂ”ik on lihtne, ilma SMS-ita. Kui te ei soovi kasutada oma tĂ”elist e-posti â vĂ”ite vĂ”tta ĂŒhekordse, nĂ€iteks mailinator'ilt (soovitan ). Sellised kontod vĂ”ivad ajaga kustutada â aga testimiseks sobivad.
Registreerimise jĂ€rel pakutakse vĂ”imalust lĂ€bida lĂŒhike koolitus (teha mĂ”ne lihtsa harjutuse mĂ”ne minutiga). Esialgsed piirangud on ĂŒsna madalad, kuid koolituse vĂ”i ĂŒhe serveri jaoks piisavad. PĂ€rast koolituse lĂ€bimist tĂ”stetakse piirangud (nĂ€iteks maksimaalne indikaatorite arv).
Dokumentatsioonist â kĂ”igepealt serveri ja kliendi kohta (). Kui aga midagi jÀÀb arusaamatuks, kirjutage support (at) okerr.com vĂ”i jĂ€tke pilet â pĂŒĂŒame kiiresti lahendada.
Kui hakkate tĂ”siselt kasutama ja sellest kĂ”rgeimatest piirangutest ei piisa â kirjutage samuti supporti, suurendame (ilma kuludeta).
Kas soovite installida okerr oma serverisse? Siin on . Soovitame paigaldada puhtale virtuaalmasinale, siis suudate selle lihtsalt teha installimisekskripti kaudu. Oma virtuaalmasinas â mingeid piiranguid ei ole :-). Ja kui midagi â pĂŒĂŒame alati aidata.
Meile meeldib, et see projekt Ă”nnestuks, et maailm oleks meie tĂ”ttu usaldusvÀÀrsem. Tasuta tarkvara ja teenuste abil muutub maailm sĂ”bralikumaks ja areneb dĂŒnaamilisemalt. Koodiallikat saab hoida tasuta GitHubis, e-posti jaoks kasutada tasuta Gmaili. Me kasutame tasuta toetuseks. Selleks ei ole vaja serverite eest maksta, ei ole vaja alla laadida ja seadistada ega lahendada erinevaid kasutusprobleeme. Iga uus projekt, iga meeskond â saavad kohe nii e-posti kui ka koosolekute ja CRM-i. KĂ”ik see on vĂ€ga kvaliteetne, tasuta ja kohe saadaval. Me tahame, et ka jĂ€lgimine oleks sama â vĂ€iksed ettevĂ”tted ja projektid vĂ”iksid tasuta kasutada okerrâi ning isegi kasvu ja arenguetapis oleksid usaldusvÀÀrsed nagu suurte tĂ”siste projektide puhul.
Allikas: habr.com
