Okerr hibrid monitorinq sisteminə ümumi baxış

İki il əvvəl mən artıq bir yazı yazmışdım Veb sayt üçün sadə əvəzetmə haqqında okerr. İndi layihənin müəyyən inkişafı var, mən də nəşr etdim okerr server tərəfdən mənbə kodu altında açıq lisenziya, buna görə də bu qısa rəyi Habr-da yazmağa qərar verdim.

Okerr hibrid monitorinq sisteminə ümumi baxış
[ tam ölçüsü ]

Kimə maraqlı ola bilər

Kiçik bir komandada və ya tək işləyirsinizsə, bu sizin üçün maraqlı ola bilər. Sizin monitorinqiniz yoxdur və buna həqiqətən ehtiyacınız olub olmadığına əmin deyilsiniz. Ya "böyük oğlanlar üçün" bəzi məşhur ciddi monitorinqi sınamısınız, amma bu, birtəhər sizin üçün "çıxmadı", ya da demək olar ki, standart konfiqurasiyada işləyir və həyatınızı çox dəyişmədi. Həm də - monitorinq panelinə gündə ən azı bir neçə saat nəzarət etmək və ya onu konfiqurasiya etmək üçün mütləq bütün işçini (və ya hətta bir şöbəni) ayırmağı planlaşdırmırsınızsa.

Niyə okerr qeyri-adi

Sonra mən okerranı bəzi digər monitorinq sistemlərindən fərqləndirən maraqlı xüsusiyyətləri göstərəcəyəm.

Okerr hibrid monitorinqdir

Daxili monitorinq zamanı monitorinq edilən maşınlarda məlumatları monitorinq serverinə ötürən “agent” işləyir (məsələn, boş disk sahəsi). Xarici olduqda, server şəbəkə üzərində yoxlamalar həyata keçirir (məsələn, ping və ya veb saytın mövcudluğu). Hər bir yanaşmanın öz məhdudiyyətləri var. Okerr hər iki variantdan istifadə edir. Serverlərin daxilində yoxlamalar çox yüngül (30Kb) agent və ya öz skript və proqramlarınız tərəfindən həyata keçirilir və şəbəkə yoxlamaları müxtəlif ölkələrdə okerr sensorları vasitəsilə həyata keçirilir.

okerr sadəcə proqram deyil, həm də xidmətdir

İstənilən monitorinqin server hissəsi böyük və mürəkkəbdir, quraşdırmaq və konfiqurasiya etmək çətindir və bunun üçün resurslar tələb olunur. Okerr ilə siz öz monitorinq serverinizi quraşdıra bilərsiniz (pulsuz və açıq mənbədir) və ya sadəcə olaraq müştəri hissəsindən istifadə edib serverimizin xidmətindən istifadə edə bilərsiniz. Həmçinin pulsuz.

Əgər monitorinq serverlərdə və proqramlarda etibarlılığın çatışmazlığını kompensasiya etməyə və ört-basdır etməyə imkan verirsə, o zaman fəlsəfi sual yaranır – mühafizəçi kimdir? Əgər problemin özü nədənsə, ayrılıqda və ya digər resurslarınızla birlikdə (məsələn, məlumat mərkəzinə kanal düşmüşdür) “ölüb”sə, monitorinq bizə problem barədə necə məlumat verəcək? Xarici xidmətdən istifadə edərkən okerr - bu problem həll edildi - hətta serverlərinizlə bütün məlumat mərkəzi enerjisiz olsa və ya zombilərin hücumuna məruz qaldıqda belə bir xəbərdarlıq alacaqsınız.

Əlbəttə ki, okerr serverinin özünün əlçatmaz olması riski var, bu doğrudur (bildiyiniz kimi, etibarlılığın 90% -i həmişə sadə və "pulsuz", 99% minimum səylə əldə edilir və hər bir sonrakı doqquz eksponent olaraq daha çətindir). Ancaq birincisi, bunun baş vermə şansı daha azdır, ikincisi, problem yalnız serverlərimizdəki problemlərlə üst-üstə düşərsə, diqqətdən kənarda qala bilər. Əgər bizdə 99.9% etibarlılıq varsa və sizdə 99.9% (çox yüksək rəqəmlər deyil) varsa, aşkar edilməmiş uğursuzluq şansı 0.1% = 0.1% -dir. Demək olar ki, səy göstərmədən və heç bir xərc çəkmədən etibarlılığınıza üç doqquz əlavə etmək çox yaxşıdır!

Xidmət kimi monitorinqin digər üstünlüyü ondan ibarətdir ki, hostinq provayderi və ya veb studiyası okerr server quraşdıra və müştərilərə ödənişli və ya pulsuz əlavə xidmət kimi çıxışı təmin edə bilər. Rəqiblərinizin sadəcə hostinq və veb saytları var, ancaq monitorinqlə etibarlı hostinqiniz var.

Okerr göstəricilər haqqındadır

Göstərici "işıq lampası" dır. Onun iki əsas vəziyyəti var - yaşıl (OK) və ya qırmızı (ERR). Layihə çoxlu qruplaşdırılmış (məsələn, server üzrə) göstəriciləri ehtiva edir. Layihənin əsas səhifəsində dərhal görürsən ki, ya hər şey yaşıldır (və siz onu bağlaya bilərsiniz), ya da bir şey qırmızı yanır və düzəldilməlidir. Bu vəziyyətlər arasında keçid zamanı xəbərdarlıq göndərilir. Siz onu qurarkən gündə bir dəfə layihənin xülasəsi göndərilir.

Okerr hibrid monitorinq sisteminə ümumi baxış

Hər bir okerr göstəricisi vəziyyətini dəyişdirən daxili şərtlərə malikdir (Zabbix-də buna trigger deyilir). Məsələn, orta yük 2-dən çox olmamalıdır (əlbəttə ki, bu konfiqurasiya edilə bilər). Və hər bir daxili yoxlama üçün (orta yük, disk pulsuz, ...) bir gözətçi var. Nədənsə təyin olunmuş vaxtda uğurlu təsdiq almasaq, xəta qeyd olunur və xəbərdarlıq göndərilir.

Bizim adi iş nümunəmiz səhər e-poçtları yoxlamaq və digər məktublar arasında xülasəyə baxmaqdır (biz bunu işin əvvəlində planlaşdırırıq). Əgər hər şey qaydasındadırsa, biz başqa vacib işləri görürük (lakin təhlükəsiz olmaq üçün tez okerra tablosuna baxa və hazırda hər şeyin yaşıl olduğuna əmin ola bilərik). Xəbərdarlıq gəlsə, reaksiya veririk.

Əlbəttə ki, sadəcə olaraq "məlumat xarakterli" göstəriciləri saxlamaq mümkündür (monitorinqdən şəbəkənin şəklini görmək üçün), lakin hər şey sadəcə, asanlıqla və tez bir zamanda avtomatik monitorinq və xəbərdarlıqların göndərilməsi üçün göstəricilər yaratmaq üçün edilir.

Okerr qurmağınızın məqsədi xəbərdarlıqlardadır ki, bir dəqiqə ərzində bir göstərici yarada biləsiniz, o, bir il ərzində "yata bilər", yeniləmələri qəbul edə bilər və bir ildən sonra bir şey qırılanda yanır və göndərir. bir xəbərdarlıq. Bir dəfə indikator yaratmağa sərf etdiyiniz dəqiqə öz bəhrəsini verdi; siz problemi hamıdan əvvəl dərhal öyrəndiniz. Ola bilsin ki, kimsə fərqinə varmadan düzəldiblər. Tez qaldırılan bir şey düşmüş hesab edilmir!

təhlükəsizlik

Etibarlılığı artırmaq üçün monitorinq qursanız, ayıb olardı, lakin nəticədə onun vasitəsilə şəbəkə üzərindən hücuma məruz qalırsınız və müxtəlif monitorinq vasitələrində kifayət qədər çox şəbəkə zəifliyi var (Zabbix, Nagios).

Agent (paketdən okerrmod okerrupdate) sistemdə işləyən şəbəkə serveri deyil, müştəridir. Buna görə də, monitorinq edilən serverdə əlavə açıq portlar yoxdur, müştəri asanlıqla firewall və ya NAT arxasında işləyir və şəbəkəni sındırmaq çox çətindir ("mümkün deyil" deyərdim), çünki prinsipcə şəbəkəyə qulaq asmır. rozetka.

Tam monitorinq əhatəsi

İndi bizim qaydamız okerrdən bütün texniki problemləri öyrənməyimizdir. Birdən qayda pozularsa (okerr onun qaçılmaz baş verməsi (əgər bu mümkündürsə) və ya artıq baş verdiyi barədə xəbərdarlıq etməyib) - okerr-ə çeklər əlavə edirik.

Xarici yoxlamalar

Olduqca tipik bir dəst:

  • ping
  • http statusu
  • SSL sertifikatının etibarlılığının və təzəliyinin yoxlanılması (müddəti bitmək üzrədirsə xəbərdarlıq edəcək)
  • TCP portunu və üzərindəki banneri açın
  • http grep (səhifədə [olmamalıdır] xüsusi mətn)
  • səhifə dəyişikliklərini tutmaq üçün sha1 hash.
  • DNS (DNS qeydinin xüsusi dəyəri olmalıdır)
  • WHOIS (domenin pisləşəcəyi təqdirdə xəbərdarlıq edəcək)
  • Antispam DNSBL (bir anda 50+ antispam qara siyahıya qarşı host yoxlayın)

Daxili yoxlamalar

Həmçinin, kifayət qədər standart dəst (lakin asanlıqla genişləndirilə bilər).

  • df (boş disk sahəsi)
  • orta yük
  • opentcp (açıq TCP dinləmə yuvaları - bir şeyin başladığı və ya qəzaya uğradığı barədə məlumat verəcəkdir)
  • iş vaxtı - yalnız serverdə işləmə vaxtı. Dəyişibsə (yəni server həddən artıq yüklənib) xəbərdar edəcək
  • müştəri_ip
  • dirsize - biz ondan virtual maşın rootf-lərimizin icazə verilən ölçüsü aşdığını izləmək üçün istifadə edirik, ciddi məhdudiyyətlər tətbiq etmədən və istifadəçi ev qovluqlarının ölçüsü
  • boş və boş olmayan - boş (və ya boş olmayan) olan faylları izləyin. Məsələn, okerr serverinin özünün xəta jurnalı boş olmalıdır və əgər orada hətta sətir də olsa, bildiriş alıb yoxlayacağam. Lakin poçt serverindəki mail.log boş olmamalıdır (fırlanmadan sonra N dəqiqə). Və bəzən sistem yeniləməsindən sonra logrotate rsyslog-u düzgün yenidən başlata bilmədiyi zaman bizim üçün boş idi.
  • linecount - fayldakı sətirlərin sayı (wc -l kimi). Biz onu boş üçün daha yumşaq bir əvəz kimi istifadə edirik, səhv jurnalı hələ də böyüyə bilər, ancaq yavaş-yavaş (məsələn, Googlebot bəzi qapalı səhifələri vurur). 2 dəqiqə ərzində 20 sətir limiti var. Daha yüksək olarsa, xəbərdarlıq olacaq

Maraqlı daxili yoxlamalar

Bu vaxta qədər “çapraz” oxuyursunuzsa, indi daha diqqətlə oxumaq daha maraqlı olacaq.

yedeklər

Kataloqdakı ehtiyat nüsxələrə nəzarət edir. Yedək fayllarımızda “ServerName-20200530.tar.gz” kimi adlar var. Okerr-də hər bir server üçün ServerName-DATE.tar.gz göstəricisi yaradılır (faktiki tarix “TARİX” sətirinə dəyişir). Təzə ehtiyat nüsxəsinin mövcudluğu və onun ölçüsü də izlənilir (məsələn, əvvəlki ehtiyat nüsxəsinin 90%-dən az ola bilməz).

Yeni ehtiyat nüsxəsini yaratmağa və bu qovluğa qoymağa başladıqdan sonra izlənilməyə başlaması üçün nə etmək lazımdır? Heç nə! Bu, "heç bir şey" etmədiyiniz zaman çox əlverişli bir yanaşmadır, çünki:

  • "Heç bir şey" etməmək olduqca tezdir, vaxta qənaət edir
  • "Heç bir şey" etməyi unutmaq çətindir
  • Səhvlə “heç nəyi” səhv etmək çətindir. Heç bir şey ən etibarlı üsul deyil

Birdən təzə ehtiyat nüsxə faylları görünməyi dayandırarsa, xəbərdarlıq olacaq. Məsələn, serverlərdən birini söndürmüsünüzsə və artıq ehtiyat nüsxələri olmamalıdırsa, göstəricini silməlisiniz (veb interfeysi vasitəsilə və ya API vasitəsilə qabıqdan).

maxfilesz

Ən böyük faylların ölçüsünü izləyir (adətən: /var/log/*). Bu, gözlənilməz problemləri, məsələn, kobud güc parolları və ya server vasitəsilə spam göndərilməsini tutmağa imkan verir.

runstatus/runline

Bunlar serverdə digər proqramları işə salmaq üçün iki mühüm proksi moduldur. Runstatus proqramın çıxış kodunu göstəriciyə bildirir. Məsələn, okerr systemd xidmətlərinin işlədiyini yoxlamaq üçün modulu tələb etmir (tələb edir). Bu runstatus vasitəsilə həyata keçirilir (aşağıya bax). Runline - proqramın istehsal etdiyi xətti serverə bildirir. Misal üçün, temp_RUN="cat /sys/class/thermal/thermal_zone0/temp" serverimizdəki Runline konfiqurasiyasında prosessor temperaturu ilə servername:temp göstəricisi yaradır.

sql

MySQL-də rəqəmli sorğu yerinə yetirir və nəticəni göstəriciyə bildirir. Sadə bir vəziyyətdə, məsələn, "SEÇ 1" edə bilərsiniz - bu, bütövlükdə DBMS-nin işlədiyini yoxlayacaq.

Ancaq daha maraqlı bir tətbiq, məsələn, onlayn mağazada sifarişlərin sayını izləməkdir. Saatda 100 və ya daha çox sifarişiniz olduğunu bilirsinizsə, minimum limiti 100 və ya 80 olaraq təyin edə bilərsiniz. Sonra satışlarınız birdən-birə azalarsa, xəbərdarlıq alacaqsınız və bunu anlaya bilərsiniz.

Nəzərə alın ki, bunun hansı gözlənilməz səbəbdən baş verməsinin əhəmiyyəti yoxdur:

  • Server sadəcə əlçatmazdır (enerjisiz və ya şəbəkəsiz) və xəbərdarlıq göstəricinin “çürük” olması ilə əlaqədardır.
  • Server nəsə yüklənib, ləng işləyir və ya paketlər itib, istifadəçilər üçün əlverişsizdir və onlar alış-veriş etmədən çıxıb gedirlər.
  • Server spam siyahılarına daxildir və ondan gələn məktublar qəbul edilmir, istifadəçilər qeydiyyatdan keçə bilmirlər
  • Reklam kampaniyasının büdcəsi bitdi, bannerlər fırlanmır.

İstənilən sayda səbəb ola bilər və onların hamısını əvvəlcədən görmək mümkün deyil və texniki cəhətdən izləmək çətindir. Ancaq son parametri (sifarişləri) rahatlıqla izləyə və onlardan vəziyyətin şübhəli olduğunu və həll olunmağa layiq olduğunu müəyyən edə bilərsiniz.

Məntiqi göstəricilər

Modul vasitəsilə Boolean ifadələrinin (Python sintaksisi) istifadəsinə imkan verir qiymətləndirmək(Habré haqqında məqalə). Layihədən məlumatlar və onun göstəriciləri ifadə üçün əlçatandır. Məsələn, yuxarıda SQL yoxlanışı ilə bağlı fəsildə siz zəif nöqtəni qeyd etmiş ola bilərsiniz - gün ərzində bizdə saatda 100 satış ola bilər, gecə isə - 20 və bu ümumidir, problem deyil. Mən nə etməliyəm? Göstərici gecələr daim çaxnaşmaya səbəb olacaq.

Siz gecə və gündüz iki göstərici yarada bilərsiniz. Hər ikisini "səssiz" edin (onlar xəbərdarlıq göndərməyəcəklər). Və məntiqi göstərici yaradın ki, gündüz göstəricisinin saat 20:00-a qədər OK olmasını, 20:00-dan sonra isə gecə göstəricisinin normal olması üçün kifayətdir.

Məntiqi göstəricidən istifadənin başqa bir nümunəsidir eskalasiya. Məsələn, layihə meneceri xəbərdarlıqlardan imtina edir (onun bunu etməyə ehtiyacı yoxdur, adminlər normal problemlərə cavab verməlidir), lakin ayrılmış vaxt ərzində layihədə hər hansı bir göstərici düzəldilməzsə qırmızıya çevrilən məntiqi göstəriciyə abunə olur.

Həmçinin, iş üçün icazə verilən vaxt təyin etmək mümkündür, məsələn, səhər 3-dən 5-ə qədər. Bu müddət ərzində serverlərin və saytların qəzaya uğraması bizi maraqlandırmır. Amma saat 5:00-da işləməli olurlar. Əgər onlar başqa vaxt işləmirsə - xəbərdarlıq edin. Məntiqi göstərici həm də serverin artıqlığını nəzərə almağa imkan verir. Əgər 5 veb serveriniz varsa, adminlər istənilən vaxt 1-2 serveri söndürə bilər. Ancaq döyüşdə 3 serverdən 5-dən az olarsa, xəbərdarlıq olacaq.

Yuxarıdakı nümunələr oker funksiyaları deyil, aktivləşdirilməli və konfiqurasiya edilməli olan bəzi xüsusiyyətlər deyil. Okerra bütün bu funksiyalara malik deyil, lakin bu funksiyanı həyata keçirməyə imkan verən məntiqi modul var (Təxminən proqramlaşdırma dilində olduğu kimi - arifmetik operatorlarımız varsa, onda 20% ƏDV hesablamaq üçün xüsusi funksiyaya ehtiyacımız yoxdur. dildən, hər zaman özünüz edə bilərsiniz, ehtiyaclarınıza uyğunlaşdırın).

Məntiq Göstərici yəqin ki, okerr-də bir neçə nisbətən mürəkkəb mövzulardan biridir, lakin yaxşı xəbər budur ki, ehtiyacınız olana qədər onu mənimsəmək məcburiyyətində deyilsiniz. Ancaq eyni zamanda, sistemin özünü olduqca sadə saxlayaraq, imkanları xeyli genişləndirirlər.

Öz çeklərinizi əlavə edin

Mən həqiqətən belə bir fikri çatdırmaq istərdim ki, okerr bütün hallar üçün minlərlə hazır çeklər dəsti deyil, əksinə - ilk növbədə - öz çeklərinizi yaratmaq üçün sadə bir qabiliyyətə malik sadə bir mühərrikdir. Okerr-də öz çeklərinizi yaratmaq hakerlər, sistem əməkdaşlıq edənlər və ya ən azı qabaqcıl okerr istifadəçiləri üçün deyil, bir ay əvvəl Linux-u ilk dəfə quraşdıran hər hansı bir admin üçün mümkün olan bir işdir.

Minimum əmək haqqının yoxlanılması modul vasitəsilə həyata keçirilir runstatus:

Bu xətt konfiqurasiyada runstatus /bin/true birdən başlamazsa və ya 0-dan başqa bir şey qaytararsa, sizi xəbərdar edəcək.

true_OK=/bin/true

Yalnız bir xətt - və burada biz artıq bir azıq genişləndiriblər funksionallıq okerr.

Hətta belə bir yoxlama artıq öz dəyərinə malikdir: birdən serveriniz çökərsə, okerr serverindəki müvafiq göstərici vaxtında yenilənməyəcək və vaxt keçdikdən sonra bir xəbərdarlıq görünəcəkdir.

Bu yoxlama apache2 serverinin qəzaya uğradığını bildirəcək (yaxşı, heç vaxt bilmirsiniz...):

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

Beləliklə, hər hansı bir proqramlaşdırma dilində danışırsınızsa və ən azı qabıq skriptləri yaza bilirsinizsə, onda siz artıq öz çeklərinizi əlavə edə bilərsiniz.

Daha çətin - okerrmod üçün öz modulunuzu (istənilən dildə) yaza bilərsiniz. Ən sadə vəziyyətdə bu belə görünür:

#!/usr/bin/python3

print("STATUS: OK")

Çox çətin deyilmi? Modul yoxlamanı özü etməli və nəticələri STDOUT-a çıxarmalıdır. Daha mürəkkəb modul, məsələn, bunu verir:

$ 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

Bir anda bir neçə göstəricini yeniləyir (boş sətirlə ayrılır), zəruri hallarda onları yaradır, yoxlama təfərrüatlarını və tablosunda lazımi göstəriciləri tapmaq asan olan etiketi göstərir.

Teleqram

Telegram botu var @OkerrBot. Telefonunuzu ayrı-ayrı proqramlarla qarışdırmağa ehtiyac yoxdur (Mən bunu bəyənmirəm ki, Pyaterochka üçün xəritə ilə bir proqram, Lenta üçün başqa, MTS üçün üçüncü və s. üçün hamı, hamı, hamı üçün lazımdır). Bir teleqram kifayətdir. Teleqram vasitəsilə siz dərhal xəbərdarlıqlar ala, layihənin vəziyyətini yoxlaya və bütün problemli göstəriciləri yenidən yoxlamaq əmri verə bilərsiniz. Teatrdan/təyyarədən çıxdıq, barmağımızı iki saat nəbzində saxlamadıq, telefonu yandırdıq, chatbotda bir düyməni sıxdıq və hər şeyin yaxşı olduğuna əmin olduq.

Status Səhifələri

Hal-hazırda, status səhifələri İT-yə sahib olan, etibarlılığa məsuliyyətlə yanaşan və müştərilərinə/istifadəçilərinə hörmətlə yanaşan hər bir biznes üçün demək olar ki, olmalıdır.

Vəziyyəti təsəvvür edin - istifadəçi bir şey etmək, məlumatı görmək və ya sifariş vermək istəyir və bir şey işləmir. Nə baş verdiyini, problemin kimin tərəfində olduğunu və nə vaxt həll olunacağını bilmir. Bəlkə şirkətinizin sadəcə işlək olmayan veb saytı var? Yoxsa altı ay əvvəl xarab olub, iki ilə düzələcək? Amma indi soyuducu almaq lazımdır, o, artıq arabadadır... Bir də insan sizdə nəyinsə olmadığını (ən azından problemin onun tərəfində olmadığı aydındır) görəndə tamam başqa məsələdir. problem aşkar edildi, siz artıq onun üzərində işləyirsiniz və bəlkə də düzəliş üçün təxmini vaxtı da yaza bilərsiniz. İstifadəçi problem aradan qaldırıldıqda abunə olub e-poçt bildirişi ala bilər və istədiyini edə bilər (soyuducu al).

Okerr hibrid monitorinq sisteminə ümumi baxış

Problemlər və fasilələr hər kəsin başına gəlir. Lakin istifadəçilər və tərəfdaşlar buna daha şəffaf və məsuliyyətli yanaşanlara daha çox etibar edirlər.

Burada status səhifələri yaratmağa imkan verən 10 digər layihənin nəzərdən keçirilməsi. Bu layihə səhifələrinin necə göründüyünə dair nümunələr Python и Dropbox. okerr status səhifəsi.

Failover

Bu yazını daha da uzatmamaq üçün bir daha əvvəlki məqaləmə müraciət edəcəyəm - Veb sayt üçün sadə əvəzetmə . Əgər dublikat server yarada bilsəniz, onda uğursuzluqdan istifadə edərək, əsasən uzun müddət dayanmayacaqsınız - problem aşkarlanan kimi istifadəçilər avtomatik olaraq işləyən ehtiyat serverə yönləndiriləcəklər. Və mənə elə gəlir ki, bu, hər yerdə nadir hallarda mövcud olan çox maraqlı, parlaq xüsusiyyətdir.

Aşağı sistem tələbləri

Okerr serverləri üçün biz 2Gb-dən RAM olan maşınlardan istifadə edirik. Şəbəkə sensorları üçün hətta 512 Mb kifayətdir. Müştəri hissəsi ümumiyyətlə demək olar ki, sıfırdır. (Plastik torba okerrupdate 26 Kb ağırlığında, lakin Python3 və standart kitabxanalar tələb olunur). Müştəri cron skriptindən işləyir, ona görə də onun daimi yaddaş istehlakı sıfırdır. Nəzarət etdiyimiz maşınlar arasında sensorlarımız (512 Mb RAM ilə super ucuz VPS) və Raspberry Pi var. Müştəri hissəsi olmadan da mümkündür curl vasitəsilə yeniləmələri göndərin! (aşağıya bax)

Bunu nəzərə alsaq - okerr, yəqin ən pulsuz mövcud olanlardan monitorinq sistemi, çünki Zabbix və ya Nagios kimi başqa bir pulsuz açıq mənbəli sistemdən istifadə etmək üçün ona resurslar (server) ayırmaq lazımdır və bu artıq puldur. Bundan əlavə, bəzi server təmiri hələ də tələb olunur. Okerr ilə bu hissə çıxarıla bilər. Və ya ən çox bəyəndiyinizdən asılı olaraq onu silmək və öz serverinizdən istifadə etmək lazım deyil.

API və xüsusi proqram təminatına inteqrasiya

Sadə və açıq memarlıq. okerr olduqca sadə biri var API, onunla işləmək asandır. 1000 göstərici yaratmaq lazımdırmı? 3-4 sətirdən ibarət bir qabıq skripti bunu edəcək. 1000 göstəricini yenidən konfiqurasiya etmək lazımdır? Həm də çox asandır. Məsələn, biz bütün HTTPS sertifikatlarımızı rus sensorundan iki dəfə yoxlamaq istəyirik:

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

Siz müştəri modulumuzdan istifadə edərək göstəricini, hətta onsuz da, sadəcə curl vasitəsilə yeniləyə bilərsiniz.

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

Siz göstəriciləri birbaşa proqramınızdan yeniləyə bilərsiniz. Məsələn, ürək döyüntüsü siqnallarının göndərilməsi okerr onun işlədiyini bilsin və qəza və ya donarsa, həyəcan siqnalı verir. Yeri gəlmişkən, okerr komponentləri bunu edir - okerr özünə nəzarət edir və demək olar ki, hər hansı bir modulda problemlər aşkarlanacaq və problem haqqında xəbərdarlıq yaranacaq. (Və bu "demək olar ki" olduqda - başqa bir serverdən çarpaz yoxlanılır)

Telegram botumuzdakı kod (sadələşdirilmiş) budur:

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 proqramlarından göstəriciləri yeniləmək üçün kitabxana var okerrupdate, hər hansı digər dillər üçün kitabxana yoxdur, lakin siz ya okerrupdate skriptinə zəng edə və ya okerr serverinə HTTP sorğusu göndərə bilərsiniz.

Okerr bizə necə kömək edir

Okerr həyatımızı dəyişdi. Həqiqətən. Ola bilsin ki, başqa bir monitorinq sistemi də bunu edə bilərdi, lakin okerr ilə işləmək bizim üçün asan və sadədir və o, bizə lazım olan bütün funksiyalara malikdir (olmayanı əlavə etdik). Yeri gəlmişkən, əgər çatışmayan bəzi xüsusiyyətlər varsa, soruşun və mən onları əlavə edəcəyəm (söz vermirəm, amma kiçik orta layihələr üçün okerr-in ən yaxşı monitorinq sistemi olmasını istəyirəm). Və ya daha yaxşısı, özünüz əlavə edin - bu asandır.

“Bütün problemləri kerradan öyrən” prinsipi ilə yaşamağa müvəffəq olduq. Birdən okerr-dən öyrənmədiyimiz problem yaranarsa, okerr-ə çek əlavə edirik. (bu halda “biz” dedikdə, mən birgə tərtibatçıları deyil, sistemin istifadəçiləri kimi bizi nəzərdə tuturam). Əvvəlcə bu adi idi, amma indi çox nadir hala gəldi.

Monitorinq

Okerr vasitəsilə biz bütün serverlərdə log ölçülərinə nəzarət edirik. Şübhəsiz ki, jurnalın hər sətirini gözlərinizlə düşünərək oxumaq mümkün deyil, ancaq böyümə sürətini izləmək artıq çox şey verir. Bunun vasitəsilə biz spam göndərilməsini və kobud güc parol axtarışlarını aşkar etdik və bəzi proqramlar “dəli olduqda” onlar üçün nəsə alınmır və onlar bunu təkrar-təkrar təkrarlayırlar (hər dəfə jurnala bir neçə sətir əlavə etməklə). ).

SSL sertifikatları. Başladıqdan dərhal sonra LetsEncrypt edin müştərimiz müştərilərinə pulsuz SSL sertifikatları təqdim etməyə başladı (onlardan min nəfərə yaxın). Və idarəetmə üçün sadəcə cəhənnəm olduğu ortaya çıxdı! Fakt budur ki, saytlar "canlıdır", müştərilər vaxtaşırı onlardan nəsə etməyi xahiş edirlər, proqramçılar bunu edirlər. Onlar saytı tamamilə sərbəst şəkildə başqa DocumentRoot-a köçürə bilərlər, məsələn. Və ya virtual host konfiqurasiyasına qeyd-şərtsiz Yenidən Yazma əlavə edin. Təbii ki, bundan sonra sertifikatların avtomatik yenilənməsi pozulur. İndi paketdəki digər faydalı kommunal proqramlarımız vasitəsilə avtomatik olaraq okerr-ə əlavə edilən bütün SSL hostlarımız var a2conf. Gəlin başlayaq a2okerr.py — və serverdə bir neçə yeni sayt görünsə, onlar avtomatik olaraq okerr-də görünəcəklər. Birdən nədənsə sertifikat yenilənmirsə, sertifikatın müddətinin bitməsinə üç həftə qalmış biz bilirik və onun niyə yenilənmədiyini anlayacağıq, belə bir it. a2certbot.py eyni paketdən - bu, çox kömək edir (dərhal ən çox ehtimal olunan problemləri yoxlayır - və nəyin yaxşı yoxlandığını və çox güman ki, problemin harada olduğunu yazır).

Biz bütün domenlərimizin istifadə müddətini izləyirik. Və poçt göndərən bütün poçt serverlərimiz də 50+ müxtəlif qara siyahıya qarşı yoxlanılır. (Və bəzən onların içinə düşürlər). Yeri gəlmişkən, Google poçt serverlərinin də qara siyahıya salındığını bilirdinizmi? Sadəcə özünü sınamaq üçün biz monitorinq edilən serverlərə mail-wr1-f54.google.com ünvanını əlavə etdik və o, hələ də SORBS qara siyahısındadır! (Bu, “anti-spamerlərin” dəyəri haqqındadır)

Yedəkləmələr - yuxarıda okerr ilə onlara nəzarət etməyin nə qədər asan olduğunu artıq yazdım. Lakin biz həm serverimizdəki ən son ehtiyat nüsxələrə, həm də Amazon Glacier-ə yüklədiyimiz ehtiyat nüsxələrə (okerr istifadə edən ayrıca yardım proqramından istifadə etməklə) nəzarət edirik. Və bəli, zaman-zaman problemlər olur. Təəccüblü deyil ki, onlar baxırdılar.

Biz eskalasiya göstəricisindən istifadə edirik. Bəzi problemin uzun müddətdir həll edilmədiyini göstərir. Mən özüm də bəzi problemləri həll edəndə bəzən onları unuda bilirəm. Özünüzü izləyirsinizsə belə, eskalasiya yaxşı bir xatırlatmadır.

Ümumiyyətlə, hesab edirəm ki, işimizin keyfiyyəti böyük ölçüdə artıb. Demək olar ki, heç bir fasilə yoxdur (yaxud müştərinin bunu görməyə vaxtı yoxdur. Sadəcə sus!), İşin həcmi azalıb və iş şəraiti sakitləşib. Bir çox problemlərin əvvəlcədən proqnozlaşdırıldığı və onların qarşısını almaq üçün vaxt olduğu zaman, biz lentlə deşiklərlə yamaqlarla təcili işdən sakit və ölçülü işə keçdik. Hətta baş vermiş problemləri həll etmək də asanlaşdı: birincisi, müştərilər çaxnaşmadan əvvəl biz onları öyrənirik, ikincisi, tez-tez problem son işlərlə bağlıdır (bir işlə məşğul olarkən, digərini pozdum) - buna görə də istidir İzlərin bununla məşğul olması daha asandır.

Amma başqa bir hal var idi...

Məşhur Debian 9-da (Stretch) phpmyadmin kimi məşhur paketin hələ də (bir neçə aydır!) həssas statusda olduğunu bilirdinizmi? (CVE-2019-6798). Zəiflik ortaya çıxanda biz onu tez bir zamanda müxtəlif yollarla əhatə etdik. Ancaq “gözəl” həllin nə vaxt çıxacağını bilmək üçün okerr-də təhlükəsizlik izləyicisi səhifəsinin monitorinqini qurdum (məzmunun SHA1 cəmi ilə). Göstərici məni bir neçə dəfə silkələdi, səhifə dəyişdi, amma gördüyünüz kimi, hələ də (2019-cu ilin yanvar ayından!) problemin həll olunduğunu göstərmir. Bəlkə, yeri gəlmişkən, kimsə problemin nə olduğunu bilir ki, belə bir vacib paket bir ildən çoxdur ki, hələ də həssasdır?

Digər dəfə oxşar vəziyyətdə: SSH-də bir boşluqdan sonra bütün serverləri yeniləmək lazım idi. Və tapşırıq təyin edərkən, icraya nəzarət etməlisiniz. (Tabe olanlar səhv başa düşməyə, unutmağa, çaşqınlığa və səhv etməyə meyllidirlər). Buna görə də, əvvəlcə bütün serverlərdə okerr-ə SSH versiyası yoxlanışı əlavə etdik və okerr vasitəsilə yeniləmələrin bütün serverlərdə yayılmasına əmin olduq. (Rahatdır! Mən bu tip göstəricini seçdim və siz dərhal görə bilərsiniz ki, hansı serverin hansı versiyası var). Tapşırığın bütün serverlərdə tamamlandığına əmin olduqdan sonra göstəriciləri çıxardıq.

Bir neçə dəfə belə bir vəziyyət yarandı ki, müəyyən bir problem yaranır və sonra öz-özünə yox olur. (yəqin ki, hamıya tanışdır?). Gördüyünüz zaman, yoxlayanda - və yoxlamaq üçün heç bir şey yoxdur - hər şey artıq yaxşı işləyir. Ancaq sonra yenidən qırılır. Məsələn, Amazon Marketplace-ə (MWS) yüklədiyimiz məhsullarla belə bir hadisə baş verdi. Bəzi nöqtələrdə yüklənmiş inventar səhv idi (yanlış miqdarda mallar və yanlış qiymətlər). Biz başa düşdük. Ancaq bunu başa düşmək üçün problemi dərhal öyrənmək vacib idi. Təəssüf ki, MWS, bütün Amazon xidmətləri kimi, bir az yavaşdır, buna görə də həmişə gecikmə var idi, amma yenə də problem və ona səbəb olan skriptlər arasındakı əlaqəni ən azı kobud şəkildə başa düşə bildik (yoxladıq, ilişib qaldıq) onu okerr-ə verdi və dərhal xəbərdarlıq aldığını yoxladı).

Bu yaxınlarda müştərimizin istifadə etdiyi iri və bahalı avropalı hoster kolleksiyaya maraqlı bir keys əlavə etdi. Birdən bütün serverlərimiz radardan itdi! Əvvəlcə müştərinin özü (okerradan daha sürətli!) işlədiyi saytın açılmadığını görüb və bu barədə bilet yazıb. Ancaq təkcə bir sayt yox, hamısı çökdü! (Nataşa, biz hər şeyi atdıq!). Burada Okerr onun üçün işıq saçan bütün göstəriciləri olan uzun ayaq sarğıları göndərməyə başladı. Çaxnaşma, çaxnaşma, dairələrdə qaçırıq (başqa nə edə bilərik?). Sonra hər şey yüksəldi. Belə çıxır ki, məlumat mərkəzində müntəzəm texniki xidmət (ildə bir dəfə) olub və təbii ki, bizə xəbərdarlıq edilməli idi. Amma onların başına hansısa problem gəlib və bizə xəbərdarlıq etmədilər. Yaxşı, daha çox infarkt, daha az infarkt. Ancaq hər şey bərpa edildikdən sonra hər şeyi iki dəfə yoxlamaq lazımdır! Bunu əllərimlə necə edəcəyimi təsəvvür edə bilmirəm. Okerr hər şeyi bir neçə dəqiqə ərzində sınaqdan keçirdi. Məlum oldu ki, serverlərin əksəriyyəti sadəcə olaraq müvəqqəti olaraq əlçatmazdır, lakin onlar işləyirdi. Bəziləri həddən artıq yüklənmişdi, həm də lazım olduğu kimi ayağa qalxdılar. Bütün itkilərdən iki ehtiyat nüsxəni itirdik, taca görə bu tam banan davam edərkən yaradılmalı və yüklənməli idi. Onları yaratmaqdan belə narahat olmadım, cəmi bir gün sonra hər şeyin qaydasında olduğu, ehtiyat nüsxələrin göründüyü barədə xəbərdarlıq gəldi. Bu nümunəni çox bəyənirəm, çünki okerr əvvəlcədən düşünmədiyimiz bir vəziyyətdə çox faydalı oldu, amma monitorinqin məqsədi - gözlənilməzliyə qarşı durmaqdır.

Okerr sensorları üçün biz mümkün olan ən ucuz hostinqdən istifadə edirik (keyfiyyət və etibarlılığın vacib olmadığı yerlərdə onlar bir-birini sığortalayır). Beləliklə, bu yaxınlarda çox yaxşı bir hosting tapdıq və super ucuz, meyarlar əladır. Amma... bəzən belə çıxır ki, virtual maşından çıxan bağlantılar başqa (qonşu) İP-dən edilir. Möcüzələr. Client_ip modulu ilə https://diagnostic.opendns.com/myip səhv IP alır. Və göstəricinin server qeydlərindən aydın olur ki, yeniləmə də bu qonşu IP-dən gəlib. İndi dəstəklə məşğul olaq. Nə yaxşı ki, biz bunu sülh dövründə müşahidə etdik. Ancaq, məsələn, tez-tez olur ki, giriş IP ağ siyahısına uyğun olaraq qeydə alınır - və əgər server bəzən qısa müddətə belə yanıb-sönürsə - bu problemi çox uzun müddət tutmağa cəhd edə bilərsiniz.

Yaxşı, daha bir şey - VPS hostinqindən danışdığımız üçün - həmişə ucuz olanlardan (hetzner, ovh, scaleway) istifadə edirik. Mən bunu həm etalon, həm də sabitlik baxımından çox bəyənirəm. Biz digər layihələr üçün daha bahalı Amazon EC2-dən də istifadə edirik. Beləliklə, okerr sayəsində öz məlumatlı fikrimiz var. İkisi də düşür. Müşahidələrimizin uzun müddətində hetzner kimi ucuz hostinqlərin EC2-dən nəzərəçarpacaq dərəcədə az stabil olduğunu söyləməzdim. Buna görə də, digər Amazon xüsusiyyətlərinə bağlı deyilsinizsə, niyə daha çox ödəyin? 🙂

Növbəti nədir?

Əgər bu mərhələdə sizi hələ də Okerdən qorxutmamışamsa, cəhd edin! Birbaşa bu linkə daxil ola bilərsiniz okerr demo hesabı (İndi klikləyin!) Ancaq unutmayın ki, hər kəs üçün yalnız bir demo hesabı var, ona görə də bir şey etsəniz, eyni hesabda olan başqa biri sizə eyni anda müdaxilə edə bilər. Və ya (daha yaxşı) link vasitəsilə qeydiyyatdan keçin saytdan kənar - hər şey sadədir, SMS olmadan. Həqiqi e-poçtunuzdan istifadə etməyi sevmirsinizsə, birdəfəlik istifadə edə bilərsiniz, məsələn, mailinator (tövsiyə edirəm getnada.com). Bu cür hesablar zaman keçdikcə silinə bilər, lakin sınaq üçün yaxşı olacaq.

Qeydiyyatdan keçdikdən sonra sizdən təlim keçməyiniz xahiş olunacaq (bir neçə çox çətin olmayan təlim tapşırıqlarını yerinə yetirin). İlkin məhdudiyyətlər çox kiçikdir, lakin təlim və ya bir server üçün kifayətdir. Təlim başa çatdıqdan sonra limitlər (məsələn, göstəricilərin maksimum sayı) artırılacaq.

Sənədlərdən - ilk növbədə WIKI server tərəfində və müştəridə (vikini yeniləyin). Ancaq bir şey aydın deyilsə, support (at) okerr.com saytına yazın və ya bilet buraxın - biz hər şeyi tez həll etməyə çalışacağıq.

Əgər ciddi şəkildə istifadə edirsinizsə və bu artan limitlər kifayət etmirsə, dəstəyə yazın, biz onu artıraq (pulsuz).

Okerr serverini serverinizdə quraşdırmaq istərdinizmi? Budur okerr-dev deposu. Təmiz virtual maşına quraşdırmağı tövsiyə edirik, onda siz sadəcə quraşdırma skripti ilə bunu edə bilərsiniz. Virtual maşınınızda - məhdudiyyət yoxdur :-). Yenə deyirəm, əgər bir şey olarsa, biz həmişə kömək etməyə çalışacağıq.

Biz istəyirik ki, bu layihə həyata keçsin, dünya bizim sayəmizdə daha etibarlı olsun. Pulsuz proqram təminatı və xidmətlər sayəsində dünya daha mehribanlaşıb və daha dinamik inkişaf edir. Mənbələr pulsuz github-da saxlanıla bilər və poçt üçün pulsuz gmail-dən istifadə edə bilərsiniz. Pulsuz istifadə edirik təzə işlər dəstək üçün. Bunların hər hansı biri üçün serverlər üçün pul ödəməyə ehtiyac yoxdur, yükləmək və konfiqurasiya etmək lazım deyil və müxtəlif əməliyyat problemlərini həll etmək lazım deyil. Hər yeni layihə, hər komanda dərhal poçt, anbarlar və CRM-ə malikdir. Və bütün bunlar çox keyfiyyətli və pulsuz və dərhaldır. Biz monitorinq üçün də eyni olmasını istəyirik - kiçik şirkətlər və layihələr okerrdən pulsuz istifadə edə bilər və hətta doğuş və böyümə mərhələsində böyüklər üçün ciddi layihələrin etibarlılığına malikdir.

Mənbə: www.habr.com