Apèsi sou sistèm siveyans ibrid Okerr la

De zan de sa mwen te deja fè yon pòs Senp failover pou yon sit entènèt sou okerr. Koulye a, gen kèk devlopman nan pwojè a, epi mwen pibliye tou okerr sèvè bò sous kòd anba lisans louvri, Se poutèt sa mwen deside ekri kout revizyon sa a sou Habr.

Apèsi sou sistèm siveyans ibrid Okerr la
[ plen gwosè ]

Ki moun li ka enterese

Sa a ka enterese w si w ap travay nan yon ti ekip oswa poukont ou. Ou pa gen siveyans epi ou pa sèten si ou reyèlman bezwen li. Swa ou te eseye kèk siveyans grav popilè "pou ti gason yo gwo", men li yon jan kanmenm "pa t 'dekole" pou ou, oswa li travay nan yon konfigirasyon prèske default epi li pa t chanje lavi ou anpil. Epi tou - si ou definitivman pa fè plan yo asiyen yon anplwaye antye (oswa menm yon depatman) kontwole tablodbò a siveyans omwen yon koup la èdtan nan yon jounen oswa konfigirasyon li.

Poukisa okerr pa nòmal

Apre sa, mwen pral montre karakteristik enteresan nan okerra a ki distenge li de kèk lòt sistèm siveyans.

Okerr se yon siveyans ibrid

Pandan siveyans entèn, yon "ajan" ap kouri sou machin yo kontwole, ki transmèt done nan sèvè a siveyans (pa egzanp, espas ki gen kapasite gratis). Lè ekstèn, sèvè a fè chèk sou rezo a (pa egzanp, ping oswa disponiblite sit entènèt). Chak apwòch gen limit li yo. Okerr itilize tou de opsyon. Chèk andedan sèvè yo fèt pa yon ajan trè lejè (30Kb) oswa pwòp scripts ak aplikasyon ou yo, ak chèk rezo yo fèt atravè detèktè okerr nan diferan peyi.

okerr se pa sèlman lojisyèl, men tou se yon sèvis

Pati nan sèvè nan nenpòt siveyans se gwo ak konplèks, li difisil enstale ak konfigirasyon, epi li mande pou resous. Avèk okerr ou ka enstale pwòp sèvè siveyans ou (li gratis ak opensource), oswa ou ka tou senpleman itilize sèlman pati nan kliyan epi sèvi ak sèvis la nan sèvè nou an. Epitou gratis.

Si siveyans pèmèt ou konpanse ak kouvri mank de fyab nan sèvè ak aplikasyon, Lè sa a, yon kesyon filozofik rive - ki moun ki se gad la? Ki jan siveyans pral di nou sou yon pwoblèm si li menm li "mouri" pou kèk rezon, separeman oswa ansanm ak lòt resous ou yo (pa egzanp, kanal la nan sant done a tonbe)? Lè w ap itilize sèvis ekstèn okerr la - pwoblèm sa a rezoud - w ap resevwa yon alèt menm si tout sant done ak serveurs ou yo pa gen kouran oswa zonbi atake l.

Natirèlman, gen yon risk pou sèvè a okerr tèt li pa disponib, sa a se vre (kòm ou konnen, 90% nan fyab se toujou jwenn tou senpleman ak "gratis", 99% ak yon minimòm de efò, ak chak nèf ki vin apre se. eksponansyèlman pi difisil). Men, premyèman, chans pou sa rive pi ba, epi dezyèmman, pwoblèm nan ka pase inapèsi sèlman si li kowenside ak pwoblèm sou serveurs nou yo. Si nou gen 99.9% fyab, epi ou gen 99.9% (ki pa twò wo nimewo), Lè sa a, chans pou yon echèk detekte se 0.1% nan 0.1% = 0.0001%. Ajoute twa nèf nan fyab ou prèske san efò ak san pri se trè bon!

Yon lòt avantaj nan siveyans kòm yon sèvis se ke yon founisè hosting oswa estidyo entènèt ka enstale yon sèvè okerr epi bay aksè a kliyan kòm yon sèvis adisyonèl peye oswa gratis. Konpetitè ou yo jis gen hosting ak sit entènèt, men ou gen hosting serye ak siveyans.

Okerr se sou endikatè

Endikatè a se yon "anpoul limyè". Li gen de eta prensipal - vèt (OK) oswa wouj (ERR). Pwojè a gen anpil gwoupe (pa egzanp, pa sèvè) endikatè. Sou paj prensipal la nan pwojè a, ou imedyatman wè ke swa tout bagay se vèt (epi ou ka fèmen li), oswa yon bagay ki limen wouj ak bezwen yo dwe korije. Lè tranzisyon ant eta sa yo, yo voye yon alèt. Yon fwa pa jou pandan w ap mete l kanpe, yo voye yon rezime pwojè a.

Apèsi sou sistèm siveyans ibrid Okerr la

Chak endikatè okerr gen kondisyon entegre kote li chanje eta (nan Zabbix yo rele sa yon deklanche). Pou egzanp, chaj mwayèn pa ta dwe plis pase 2 (nan kou, sa a se configurable). Ak pou chak chèk entèn (chaj mwayèn, disk gratis, ...) gen yon watchdog. Si pou kèk rezon nou pa resevwa yon konfimasyon siksè nan moman fikse a, yo anrejistre yon erè epi yo voye yon alèt.

Modèl travay nòmal nou an se tcheke imèl nan maten an, epi gade rezime a pami lòt lèt (nou pwograme li nan kòmansman travay la). Si tout bagay se ok nan li, nou fè lòt bagay enpòtan (men yo dwe an sekirite, nou ka byen vit gade nan tablodbò a okerra epi asire w ke tout bagay vèt nan moman sa a). Si yon alèt rive, nou reyaji.

Natirèlman, li posib tou senpleman kenbe "enfòmatif" endikatè (pou wè foto a nan rezo a soti nan siveyans), men tout bagay se fè tou senpleman, fasil epi byen vit kreye endikatè espesyalman pou siveyans otomatik ak voye alèt.

Objektif la pou ki w ap mete kanpe okerr se nan alèt, pou ke ou ka kreye yon endikatè nan yon minit, li ta ka "dòmi" pou yon ane, jis aksepte mizajou, epi lè yon ane pita yon bagay kraze, li limen epi voye. yon alèt. Minit ou te pase yon fwa pou kreye yon endikatè te peye; ou te aprann sou pwoblèm nan imedyatman, anvan nenpòt lòt moun. Li posib ke yo ranje li anvan nenpòt moun remake. Yon bagay ki leve byen vit pa konsidere kòm tonbe!

Безопасность

Li ta yon wont si ou mete siveyans pou dedomajman pou ogmante fyab, men kòm yon rezilta, ou yo atake sou rezo a atravè li, epi gen byen anpil nan frajilite rezo nan diferan zouti siveyans (Zabbix, Nagios).

Ajan (okerrmod soti nan pake okerrupdate) kouri sou sistèm nan se pa yon sèvè rezo, men yon kliyan. Se poutèt sa, pa gen okenn lòt pò louvri sou sèvè kontwole a, kliyan an fasil travay dèyè yon firewall oswa NAT epi li trè difisil (mwen ta di "enposib") Hack sou rezo a, depi nan prensip li pa koute rezo a. priz.

Kouvèti siveyans konplè

Kounye a règ nou an se ke nou aprann sou tout pwoblèm teknik nan men okerr. Si toudenkou règ la vyole (okerr pa t 'avèti sou ensidans iminan li yo (si sa posib) oswa ke li te deja rive) - nou ajoute chèk nan okerr.

Chèk ekstèn yo

Byen yon seri tipik:

  • Ping
  • estati http
  • tcheke validite ak fraîcheur sètifika SSL la (ap avèti si li pral ekspire)
  • louvri pò TCP ak banyè sou li
  • http grep (paj la [pa dwe] genyen tèks espesifik)
  • sha1 hash yo nan lòd yo trape chanjman paj.
  • DNS (dosye DNS dwe gen yon valè espesifik)
  • WHOIS (ap avèti si domèn nan pral mal)
  • Antispam DNSBL (tcheke lame kont plis pase 50 lis nwa antispam nan yon fwa)

Chèk entèn yo

Epitou, yon seri jistis estanda (men fasil dilatabl).

  • df (espas disk gratis)
  • chaj mwayèn
  • opentcp (louvri priz koute TCP - pral fè konnen si yon bagay te kòmanse oswa fè aksidan)
  • uptime - jis disponiblite sou sèvè a. Pral notifye si li te chanje desann (sa vle di sèvè a twò chaje)
  • kliyan_ip
  • disize - nou itilize li pou swiv lè rootf machin vityèl nou an depase gwosè yo pèmèt, san nou pa entwodwi restriksyon strik, ak gwosè anyè kay itilizatè yo.
  • vid ak nonvid - kontwole dosye ki ta dwe vid (oswa pa vid). Pou egzanp, boutèy demi lit la erè nan sèvè okerr tèt li ta dwe vid, epi si gen menm yon liy nan li, mwen pral resevwa yon notifikasyon epi tcheke li. Men, mail.log sou sèvè lapòs la PA ta dwe vid (N minit apre wotasyon). Epi pafwa li te vid pou nou apre yon aktyalizasyon sistèm, lè logrotate pa t 'kapab rekòmanse rsyslog kòrèkteman.
  • linecount - kantite liy nan dosye a (tankou wc -l). Nou itilize li kòm yon ranplasman douser pou vid, lè boutèy la erè ka toujou grandi, men se sèlman tou dousman (pa egzanp, Googlebot frape kèk paj fèmen). Gen yon limit nan 2 liy nan 20 minit. Si li pi wo, pral gen yon alèt

Enteresan chèk entèn yo

Si ou te li "dyagonalman" jiska pwen sa a, kounye a li pral pi enteresan pou li plis atansyon.

sovgad

Monitè sovgad nan anyè a. Fichye backup nou yo gen non tankou "ServerName-20200530.tar.gz". Pou chak sèvè nan okerr, endikatè ServerName-DATE.tar.gz kreye (dat aktyèl la chanje nan liy "DATE"). Prezans nan yon sovgad fre ak gwosè li yo tou kontwole (pa egzanp, li pa kapab mwens pase 90% nan backup anvan an).

Ki sa ki bezwen fè pou yon nouvo backup kòmanse swiv apre nou te kòmanse kreye li epi mete li nan anyè sa a? Anyen! Sa a se yon apwòch trè pratik lè ou bezwen fè "anyen" paske:

  • Fè "pa gen anyen" trè rapid, li ekonomize tan
  • Li difisil pou bliye fè "anyen"
  • Li difisil pou fè "anyen" mal, ak yon erè. Pa gen anyen ki metòd ki pi serye

Si toudenkou dosye backup fre sispann parèt, pral gen yon alèt. Si, pou egzanp, ou te enfim youn nan sèvè yo, epi pa ta dwe gen plis sovgad, w ap bezwen efase endikatè a (via koòdone entènèt la oswa soti nan koki a atravè API a).

maxfilesz

Kenbe tras de gwosè a nan pi gwo dosye yo (tipikman: /var/log/*). Sa a pèmèt ou trape pwoblèm enprevizib, pou egzanp, modpas fòs brital oswa voye spam nan sèvè a.

runstatus/runline

Sa yo se de modil proxy enpòtan pou kouri lòt pwogram sou sèvè a. Runstatus rapòte kòd sòti pwogram nan bay endikatè a. Pa egzanp, okerr pa (mande) yon modil pou tcheke sèvis systemd yo ap fonksyone. Sa a se fè atravè runstatus (gade anba a). Runline - rapòte bay sèvè a liy lan ke pwogram nan pwodui. Pa egzanp, temp_RUN="cat /sys/class/thermal/thermal_zone0/temp" nan konfigirasyon Runline sou sèvè nou an kreye yon endikatè servername:temp ak tanperati processeur a.

SQL

Egzekite yon rechèch nimerik nan MySQL epi rapòte rezilta a nan endikatè a. Nan yon ka senp, ou ka fè, pou egzanp, "SELECT 1" - sa a pral tcheke si DBMS an antye ap travay.

Men, yon aplikasyon ki pi enteresan an se, pou egzanp, swiv kantite lòd nan yon magazen sou entènèt. Si ou konnen ke ou gen 100 oswa plis lòd pou chak èdtan, ou ka mete limit minimòm nan 100 oswa 80. Lè sa a, si lavant ou toudenkou tonbe, ou pral resevwa yon alèt epi ou ka kalkile li.

Remake byen ke li pa enpòtan pou ki rezon enprevizib sa a te rive:

  • Sèvè a tou senpleman pa disponib (de-enèji oswa san yon rezo), ak alèt la soti nan lefèt ke endikatè a te "pouri".
  • Sèvè a twò chaje ak yon bagay, li travay dousman oswa pake yo pèdi, li pa konvenyan pou itilizatè yo epi yo kite san yo pa fè acha
  • Se sèvè a enkli nan lis Spam yo ak lapòs ki soti nan li pa aksepte, itilizatè yo pa ka anrejistre
  • Bidjè kanpay piblisite a fini, bandwòl yo pa vire.

Ka gen nenpòt kantite rezon, ak tout nan yo pa ka prevwa davans, epi li se teknikman difisil pou swiv. Men, ou ka fasilman kontwole paramèt final la (lòd) epi detèmine nan men yo ke sitiyasyon an se sispèk epi li merite yo dwe fè fas ak.

Endikatè lojik

Pèmèt itilizasyon ekspresyon Boolean (sentaks Python) atravè yon modil evalide(atik sou Habré). Done ki soti nan pwojè a ak endikatè li yo disponib pou ekspresyon. Pou egzanp, nan chapit la sou SQL tcheke pi wo a, ou ka remake yon pwen fèb - pandan jounen an nou ka gen 100 lavant pou chak èdtan, men nan mitan lannwit - 20, ak sa a se komen, pa yon pwoblèm. Kisa mwen ta dwe fè? Endikatè a ap toujou ap panike nan mitan lannwit.

Ou ka kreye de endikatè, lajounen ak lannwit. Fè tou de "silans" (yo pa pral voye alèt). Epi kreye yon endikatè lojik ki mande pou endikatè jou a dwe OK anvan 20:00, epi apre 20:00 li ase pou endikatè lannwit lan dwe OK.

Yon lòt egzanp lè l sèvi avèk yon endikatè lojik se eskalasyon. Pou egzanp, yon manadjè pwojè dezabònman nan alèt (li pa gen okenn bezwen fè sa, admin yo ta dwe reponn a pwoblèm nòmal), men abònman nan yon endikatè lojik ki vin wouj si nenpòt endikatè nan pwojè a pa korije nan tan yo bay la.

Epitou, li posib yo fikse tan ki pèmèt pou travay, pou egzanp, soti nan 3 a 5 am. Nou pa pran swen si sèvè ak sit aksidan pandan tan sa a. Men, a 5:00 yo dwe travay. Si yo pa travay nan nenpòt ki lòt lè - vijilan. Endikatè ki lojik la tou pèmèt ou pran an kont èkse sèvè. Si ou gen 5 sèvè entènèt, Lè sa a, administratè yo ka fèmen 1-2 sèvè nenpòt ki lè. Men, si gen mwens pase 3 sou 5 serveurs nan batay, pral gen yon alèt.

Egzanp ki anwo yo se pa fonksyon oker, se pa kèk karakteristik ki bezwen aktive ak konfigirasyon. Okerra pa gen tout fonksyon sa yo, men gen yon modil lojik ki pèmèt ou aplike fonksyonalite sa a (Apeprè tankou nan yon langaj pwogramasyon - si nou gen operatè aritmetik, Lè sa a, nou pa bezwen yon fonksyon espesyal pou kalkile 20% VAT. soti nan lang lan, ou ka toujou fè li tèt ou fè li nan satisfè bezwen ou).

Endikatè lojik se pwobableman youn nan kèk sijè relativman konplèks nan okerr, men bon nouvèl la se ke ou pa oblije metrize li jiskaske ou bezwen. Men, an menm tan an, yo anpil elaji kapasite yo, pandan y ap kenbe sistèm nan tèt li byen senp.

Ajoute pwòp chèk ou yo

Mwen ta reyèlman renmen transmèt lide ke okerr se pa yon seri dè milye de chèk pare pou tout okazyon, men okontrè - premye a tout - yon motè senp ak yon kapasite senp yo kreye pwòp chèk ou. Kreye pwòp chèk ou nan okerr se pa yon travay pou entru, ko-devlopè sistèm, oswa omwen itilizatè avanse okerr, men se yon travay posib pou nenpòt administratè ki enstale Linux pou premye fwa yon mwa de sa.

Yo fè chèk sou salè minimòm nan modil la runstatus:

Liy sa a nan konfigirasyon an runstatus pral fè w konnen si /bin/true toudenkou pa kòmanse oswa retounen yon lòt bagay pase 0.

true_OK=/bin/true

Jis yon liy - ak isit la nou deja yon ti kras elaji fonksyonalite okerr.

Menm yon chèk sa a deja gen valè li yo: si toudenkou sèvè ou a aksidan, endikatè ki koresponn lan sou sèvè okerr la pa pral mete ajou nan yon fason apwopriye, epi apre tan an pase, yon alèt ap parèt.

Chèk sa a pral fè konnen sèvè apache2 te fè aksidan (byen, ou pa janm konnen...):

apache_OK="systemctl is-active --quiet apache2"

Se konsa, si ou pale nenpòt lang pwogramasyon, epi omwen ka ekri scripts koki, Lè sa a, ou ka deja ajoute chèk pwòp ou yo.

Pi difisil - ou ka ekri (nan nenpòt lang) modil pwòp ou a pou okerrmod. Nan ka ki pi senp, li sanble sa a:

#!/usr/bin/python3

print("STATUS: OK")

Èske li pa trè difisil? Modil la dwe fè chèk la tèt li epi bay rezilta yo nan STDOUT. Yon modil ki pi konplèks bay, pou egzanp, sa a:

$ okerrmod --dump df
NAME: pi:df-/
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 49.52%, 13.9G/28.2G used, 13.0G free
STATUS: 49.52

NAME: pi:df-/boot
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 84.32%, 53.1M/62.9M used, 9.9M free
STATUS: 84.32

Li mete ajou plizyè endikatè alafwa (separe pa yon liy vid), kreye yo si sa nesesè, endike detay verifikasyon ak yon tag kote li fasil jwenn endikatè ki nesesè yo nan tablodbò a.

Telegram

Gen yon bot Telegram @OkerrBot. Ou pa bezwen ankonbre telefòn ou ak aplikasyon separe (mwen pa renmen sa pou Pyaterochka ou bezwen yon aplikasyon ak yon kat, pou Lenta yon lòt, pou MTS yon twazyèm, ak sou sa pou tout moun, tout, tout). Yon telegram ase. Atravè telegram ou ka imedyatman resevwa alèt, tcheke estati pwojè a epi bay yon lòd pou tcheke tout endikatè pwoblèm yo. Nou kite teyat/avyon an, nou pa kenbe dwèt nou sou batman kè a pou de zè de tan, limen telefòn nan, peze yon bouton nan chatbot la, epi asire w ke tout bagay te anfòm.

Paj Estati

Sèjousi, paj estati yo se prèske yon dwe genyen pou nenpòt ki biznis ki gen IT, yon atitid responsab anvè fyab ak ki trete kliyan / itilizatè li yo ak respè.

Imajine yon sitiyasyon - yon itilizatè vle fè yon bagay, wè enfòmasyon oswa mete yon lòd, epi yon bagay pa mache. Li pa konnen sa k ap pase, sou ki bò pwoblèm nan ak ki lè li pral rezoud. Petèt konpayi ou tou senpleman gen yon sit entènèt ki pa fonksyonèl? Oswa èske li te kraze sis mwa de sa epi li pral ranje nan dezan? Men, ou bezwen achte yon frijidè kounye a, li deja nan charyo a... Epi li se yon bagay konplètman diferan lè yon moun wè ke yon bagay ki mal ak ou (omwen li klè ke pwoblèm nan pa sou bò l '), ke la pwoblèm yo te dekouvri, ke ou deja ap travay sou li, e petèt menm ekri tan an apwoksimatif pou koreksyon. Itilizatè a ka abònman epi resevwa yon notifikasyon imel lè pwoblèm nan fiks epi li ka fè sa li te vle (achte yon frijidè).

Apèsi sou sistèm siveyans ibrid Okerr la

Pwoblèm ak D' rive pou tout moun. Men, itilizatè yo ak patnè yo fè plis konfyans nan moun ki pi transparan ak responsab nan apwòch yo nan sa a.

Isit la revize 10 lòt pwojè ki pèmèt ou kreye paj sitiyasyon. Men kèk egzanp sou jan paj pwojè sa yo sanble Piton и Dropbox. paj estati okerr.

Baskil

Pou pa fè atik sa a pi long toujou, mwen pral yon lòt fwa ankò al gade nan atik anvan mwen an - Senp failover pou yon sit entènèt . Si ou ka fè yon sèvè kopi, Lè sa a, lè l sèvi avèk failover, ou fondamantalman pa pral gen yon tan D 'long - le pli vit ke yo detekte yon pwoblèm, itilizatè yo pral otomatikman redireksyon sou yon sèvè backup k ap travay. Epi mwen sanble ke sa a se yon karakteristik trè enteresan, klere ki raman disponib nenpòt kote.

Kondisyon sistèm ki ba

Pou serveurs okerr, nou itilize machin ki gen RAM soti nan 2Gb. Pou detèktè rezo, menm 512Mb se ase. Pati kliyan an se jeneralman prèske zewo. (Sak plastik okerrupdate peze 26 Ko, men li mande Python3 ak bibliyotèk estanda). Kliyan an kouri soti nan yon script cron, kidonk li gen zewo konsomasyon memwa ki pèsistan. Pami machin nou kontwole yo, nou gen detèktè (super-bon mache VPS ak 512Mb RAM) ak yon Franbwaz Pi. Li posib menm san pati kliyan an voye mizajou atravè curl! (gade anba a)

Lè w pran sa a an kont - okerr, pwobableman pi gratis sistèm siveyans soti nan sa yo ki disponib, paske menm sèvi ak yon lòt sistèm gratis louvri-sous tankou Zabbix oswa Nagios, ou bezwen asiyen resous (sèvè) nan li, e sa a se deja lajan. Anplis de sa, gen kèk antretyen sèvè toujou obligatwa. Avèk okerr, pati sa a ka retire. Oswa ou pa bezwen retire li epi sèvi ak sèvè pwòp ou a, tou depann de sa ou renmen pi byen.

API ak entegrasyon nan lojisyèl propriétaires

Achitekti senp epi ouvè. okerr gen yon trè senp API, ki fasil pou travay avèk. Bezwen kreye 1000 endikatè? Yon script koki ki gen 3-4 liy pral fè sa. Bezwen reconfigure 1000 endikatè? Li trè fasil tou. Pou egzanp, nou vle tcheke an doub tout sètifika HTTPS nou yo ki soti nan yon Capteur Ris:

#!/bin/sh

for indicator in `okerrclient --api-filter sslcert`
do
    echo set location for $indicator
    okerrclient --api-set location=ru retest=1 --name $indicator
done

Ou ka mete ajou endikatè a lè l sèvi avèk modil kliyan nou an, menm san li, jis atravè pli.

# 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/

Ou ka mete ajou endikatè yo dirèkteman nan pwogram ou an. Pou egzanp, voye siyal batman kè pou okerr konnen ke li ap kouri epi leve yon alam si li aksidan oswa jele. By wout la, eleman okerr fè sa - okerr monitè tèt li, ak pwoblèm nan prèske nenpòt modil yo pral detekte ak jenere yon alèt sou pwoblèm nan. (Epi nan ka sa a "prèske" - yo kwaze soti nan yon lòt sèvè)

Men kòd la (senplifye) nan bot telegram nou an:

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))

Gen yon bibliyotèk pou mete ajou endikatè nan pwogram Python okerrupdate, pou nenpòt lòt lang pa gen bibliyotèk, men ou ka swa rele script okerrupdate oswa fè yon demann HTTP nan sèvè okerr la.

Ki jan okerr ede nou

Okerr chanje lavi nou. Vreman vre. Petèt yon lòt sistèm siveyans ta ka fè menm bagay la, men travay ak okerr se fasil ak senp pou nou epi li gen tout fonksyon ke nou te bezwen (nou te ajoute sa li pa t genyen). By wout la, si gen kèk karakteristik ki manke, mande epi mwen pral ajoute yo (mwen pa pwomèt, men mwen vle okerr yo dwe pi bon sistèm siveyans pou ti-mwayen pwojè). Oswa pi bon toujou, ajoute li tèt ou - li fasil.

Nou te jere viv dapre prensip "aprann sou tout pwoblèm nan kerra a." Si toudenkou yon pwoblèm rive ke nou pa t aprann nan men okerr, nou ajoute yon chèk nan okerr. (nan ka sa a, pa "nou" mwen vle di nou kòm itilizatè nan sistèm nan, pa ko-devlopè). Okòmansman sa a te komen, men kounye a li te vin trè ra.

Siveyans

Atravè okerr nou kontwole gwosè boutèy demi lit yo sou tout serveurs. Li se, nan kou, enposib li ak reflechi chak liy nan boutèy demi lit la ak je ou, men tou senpleman kontwole to kwasans lan deja bay anpil. Atravè sa a, nou detekte spam lapòs ak devine modpas fòs brital, epi lè kèk nan aplikasyon yo "ale fou", yon bagay pa mache pou yo epi yo repete li ankò e ankò (chak fwa ajoute yon koup la liy nan boutèy la. ).

Sètifika SSL. Prèske imedyatman apre lansman LetsEncrypt kliyan nou an te kòmanse bay sètifika SSL gratis bay kliyan li yo (apeprè mil nan yo). Epi li te tounen jis lanfè pou administrasyon an! Reyalite a se ke sit yo "viv", kliyan detanzantan mande yo fè yon bagay, pwogramasyon fè li. Yo ka konplètman transfere sit la nan yon lòt DocumentRoot, pou egzanp. Oswa ajoute yon Reekri san kondisyon nan konfigirasyon virtualhost la. Natirèlman, apre sa, renouvèlman otomatik sètifika yo kraze. Koulye a, nou gen tout lame SSL ajoute nan okerr otomatikman atravè yon lòt nan sèvis piblik itil nou yo soti nan pake a a2conf. Ann jis lanse a2okerr.py — epi si plizyè sit nouvo parèt sou sèvè a, yo pral otomatikman parèt nan okerr. Si toudenkou pou kèk rezon sètifika a pa renouvle, twa semèn anvan sètifika a ekspire, nou se nan konnen an, epi nou pral konnen poukisa li pa mete ajou, tankou yon chen. a2certbot.py soti nan menm pake a - li ede anpil ak sa a (li imedyatman tcheke pwoblèm ki gen plis chans - epi ekri sa ki te tcheke byen, ak kote ki gen plis chans yon pwoblèm).

Nou kontwole dat ekspirasyon tout domèn nou yo. Ak tout sèvè lapòs nou yo ki voye lapòs yo tcheke tou kont plis pase 50 lis nwa diferan. (Epi pafwa yo tonbe nan yo). By wout la, èske w te konnen ke Google lapòs serveurs yo tou nan lis nwa? Jis pou tès pwòp tèt ou, nou ajoute mail-wr1-f54.google.com nan serveurs kontwole yo, epi li toujou sou lis nwa SORBS la! (Sa a se sou valè a nan "anti-spame")

Sovgad - Mwen deja ekri pi wo a kouman li fasil pou kontwole yo ak okerr. Men, nou kontwole tou de dènye sovgad yo sou sèvè nou an ak (sèvi ak yon sèvis piblik separe ki sèvi ak okerr) sovgad yo ke nou telechaje nan Amazon Glacier. Epi, wi, pwoblèm rive de tan zan tan. Se pa etonan yo t ap gade.

Nou itilize endikatè eskalasyon an. Li montre si kèk pwoblèm pa te fikse pou yon tan long. Apre sa, mwen menm, lè mwen rezoud kèk pwoblèm, pafwa mwen ka bliye sou yo. Eskalad se yon bon rapèl, menm si w ap kontwole tèt ou.

An jeneral, mwen kwè ke kalite travay nou an te ogmante pa yon lòd nan grandè. Pa gen prèske pa gen tan D '(oswa kliyan an pa gen tan remake li. Jis shh!), Pandan ke kantite travay la te vin pi piti ak kondisyon yo travay yo te vin pi kalm. Nou te deplase soti nan travay ijans ak patching twou ak tep nan travay kalm ak mezire, lè anpil pwoblèm yo prevwa davans epi gen tan pou anpeche yo. Menm pwoblèm ki te rive yo te vin pi fasil pou ranje tou: premyèman, nou jwenn enfòmasyon sou yo anvan kliyan panike, epi dezyèmman, li souvan rive ke pwoblèm nan gen rapò ak travay resan (pandan mwen t ap fè yon bagay, mwen kraze yon lòt) - kidonk li fè cho Li pi fasil pou tras fè fas ak li.

Men te gen yon lòt ka...

Èske w te konnen nan popilè Debian 9 (Stretch) yon pake popilè tankou phpmyadmin toujou (pou plizyè mwa!) nan sitiyasyon vilnerab? (CVE-2019-6798). Lè vilnerabilite a parèt, nou byen vit kouvri li nan diferan fason. Men, mwen mete siveyans nan paj sekirite-tracker nan okerr pou konnen ki lè yon solisyon "bèl" pral soti (via sòm SHA1 nan kontni an). Endikatè a twitched m 'plizyè fwa, paj la chanje, men kòm ou ka wè, li toujou (depi janvye 2019!) pa endike ke pwoblèm nan te rezoud. Petèt, nan chemen an, yon moun konnen ki pwoblèm nan se ke tankou yon pake enpòtan toujou vilnerab pou plis pase yon ane?

Yon lòt fwa nan yon sitiyasyon ki sanble: apre yon vilnerabilite nan SSH, li te nesesè yo mete ajou tout serveurs. Men, lè ou mete yon travay, ou bezwen kontwole ekzekisyon. (Sibòdone yo gen tandans mal konprann, bliye, jwenn konfonn, epi fè erè). Se poutèt sa, premye nou te ajoute yon chèk vèsyon SSH nan okerr sou tout serveurs, ak atravè okerr nou te asire ke mizajou yo te woule sou tout sèvè. (Pran! Mwen te chwazi sa a ki kalite endikatè, epi ou ka imedyatman wè ki sèvè gen ki vèsyon). Lè nou te sèten ke travay la te konplete sou tout serveurs, nou retire endikatè yo.

Yon koup de fwa te gen yon sitiyasyon kote yon sèten pwoblèm rive, ak Lè sa a, ale pou kont li. (pwobableman abitye pou tout moun?). Depi lè w remake, lè w tcheke—e pa gen anyen pou tcheke—tout bagay deja ap mache byen. Men, Lè sa a, li kraze ankò. Nou te gen sa rive, pou egzanp, ak pwodwi ke nou telechaje sou Amazon Marketplace (MWS). Nan kèk pwen, envantè chaje a pa kòrèk (move kantite machandiz ak move pri). Nou kalkile li. Men, yo nan lòd yo kalkile li soti, li te enpòtan yo chèche konnen sou pwoblèm nan touswit. Malerezman, MWS, tankou tout sèvis Amazon, se yon ti kras dousman, kidonk te toujou gen yon lag, men toujou, nou te kapab omwen apeprè atrab koneksyon ki genyen ant pwoblèm nan ak scripts ki lakòz li (nou te fè yon chèk, kole. li bay okerr la, epi tcheke li imedyatman resevwa yon alèt).

Yon ka enteresan dènyèman te ajoute nan koleksyon an pa yon hoster Ewopeyen gwo ak chè, ki kliyan nou yo itilize. Menm lè a, TOUT sèvè nou yo te disparèt nan rada a! Premyèman, kliyan an tèt li (pi vit pase okerra!) remake ke sit la li t ap travay ak pa t ap louvri epi li te fè yon tikè sou li. Men, pa sèlman yon sit te desann, men yo tout! (Natasha, nou lage tout bagay!). Isit la Okerr te kòmanse voye vlope pye long ak tout endikatè yo ki limen pou li. Panik, panik, nou kouri nan ti sèk (ki lòt bagay nou ka fè?). Lè sa a, tout bagay leve. Li sanble ke te gen antretyen woutin nan sant done a (yon fwa chak anpil ane) epi, nan kou, nou ta dwe te avèti. Men, gen kèk pwoblèm ki te rive yo epi yo pa t avèti nou. Oke, plis atak kè, mwens atak kè. Men, apre tout bagay retabli, ou bezwen double-tcheke tout bagay! Mwen pa ka imajine ki jan mwen ta fè li ak men mwen. Okerr teste tout bagay nan kèk minit. Li te tounen soti ke pi fò nan serveurs yo te tou senpleman disponib pou yon ti tan, men yo te travay. Gen kèk ki te twò chaje, men tou te kanpe jan yo ta dwe. Nan tout pèt yo, nou pèdi de sovgad, ki dapre kouwòn lan ta dwe te kreye ak chaje pandan y ap plen bannann sa a. Mwen pa t 'menm deranje kreye yo, jis yon jou apre alèt te rive ke tout bagay te OK, sovgad te parèt. Mwen vrèman renmen egzanp sa a paske okerr te tounen trè itil nan yon sitiyasyon ke nou pa t 'menm te panse sou davans, men sa se objektif la nan siveyans - reziste enprevizib la.

Pou detèktè Okerr, nou itilize hosting ki pi bon mache posib (kote bon jan kalite ak fyab yo pa enpòtan, yo asire youn lòt). Se konsa, nou fèk jwenn yon hosting trè bon ak super bon mache, referans yo se pè. Men... pafwa li sanble ke koneksyon sortan soti nan machin nan vityèl yo te fè soti nan yon lòt IP (vwazen). Mirak. Client_ip modil ak https://diagnostic.opendns.com/myip jwenn move IP. Ak soti nan mòso bwa yo sèvè nan endikatè a li klè ke aktyalizasyon a tou te soti nan IP vwazen sa a. Ann fè fas ak sipò a kounye a. Li bon ke nou remake sa nan tan lapè. Men, pou egzanp, li souvan rive ke aksè anrejistre dapre lis la blan IP - epi si sèvè a pafwa bat tankou sa a pou yon ti tan - ou ka eseye trape pwoblèm sa a pou yon tan trè long.

Oke, yon lòt bagay - depi nou ap pale de hosting VPS - nou toujou sèvi ak sa ki pa chè (hetzner, ovh, scaleway). Mwen vrèman renmen li tou de an tèm de referans ak estabilite. Nou itilize tou pi chè Amazon EC2 pou lòt pwojè yo. Kidonk, gras a okerr, nou gen pwòp opinyon pa nou. Yo tou de tonbe. Apre sa, mwen pa ta di ke sou peryòd la long nan obsèvasyon nou an, hosting bon mache tankou hetzner te tounen vin wè mwens ki estab pase EC2. Se poutèt sa, si ou pa mare ak lòt karakteristik Amazon, poukisa peye plis? 🙂

Ki sa ki nan pwochen?

Si nan etap sa a mwen pa te pè ou lwen Okerr ankò, Lè sa a, eseye li! Ou ka ale dirèkteman sou lyen sa a okerr kont Demo (Klike kounye a!) Men, kenbe nan tèt ou ke gen yon sèl kont Demo pou tout moun, kidonk si ou fè yon bagay, yon lòt moun nan menm kont lan ka entèfere ak ou an menm tan an. Oswa (pi bon) enskri atravè lyen an offsite okerr - tout bagay se senp, san SMS. Si ou pa renmen sèvi ak imel reyèl ou a, ou ka itilize yon sèl jetab, tankou mailinator (mwen rekòmande getnada.com). Kont sa yo ka efase sou tan, men yo pral bon pou tès yo.

Apre enskripsyon an, yo pral mande w sibi fòmasyon (fè plizyè travay fòmasyon pa trè difisil). Limit inisyal yo piti anpil, men pou fòmasyon oswa yon sèl sèvè yo ase. Apre w fin ranpli fòmasyon an, limit yo (pa egzanp, kantite maksimòm endikatè) ap ogmante.

Soti nan dokiman an - premye a tout WIKI sou bò sèvè a ak sou kliyan an (okerrupdate wiki). Men, si yon bagay pa klè, ekri pou sipòte (nan) okerr.com oswa kite yon tikè - nou pral eseye rezoud tout bagay byen vit.

Si ou sèvi ak li seryezman epi ogmante limit sa yo pa ase, ekri pou sipòte epi n ap ogmante li (gratis).

Èske ou ta renmen enstale sèvè okerr la sou sèvè ou a? Isit la okerr-dev depo. Nou rekòmande enstale sou yon machin vityèl pwòp, Lè sa a, ou ka tou senpleman fè li ak yon script enstalasyon. Sou machin vityèl ou a - pa gen okenn restriksyon :-). Oke, ankò, si anyen rive, n ap toujou eseye ede.

Nou vle pwojè sa a dekole, pou mond lan vin pi serye gras ak nou. Gras a lojisyèl ak sèvis gratis, mond lan vin pi zanmitay epi li ap devlope pi dinamik. Sous yo ka estoke nan github gratis, epi pou lapòs ou ka itilize gmail gratis la. Nou itilize gratis freshworks pou sipò. Pou nenpòt nan sa a, ou pa bezwen peye pou serveurs, ou pa bezwen telechaje ak konfigirasyon, epi ou pa bezwen rezoud pwoblèm operasyon divès kalite. Chak nouvo pwojè, chak ekip imedyatman gen lapòs, depo ak CRM. Ak tout bagay sa a se bon jan kalite trè wo ak gratis epi imedyatman. Nou vle li se menm bagay la tou pou siveyans - ti konpayi yo ak pwojè ta ka itilize okerr pou gratis e menm nan etap nan nesans ak kwasans gen fyab nan pwojè granmoun grav.

Sous: www.habr.com