Okerr гибридті бақылау жүйесіне шолу

Екі жыл бұрын пост жазып қойғанмын Веб-сайт үшін қарапайым ауыстыру туралы okerr. Қазір жобаның біраз дамуы бар, мен де жарияладым okerr сервер жағындағы бастапқы код астында ашық лицензия, сондықтан мен бұл қысқа шолуды Хабрға жазуды жөн көрдім.

Okerr гибридті бақылау жүйесіне шолу
[ толық өлшемі ]

Кімге қызықты болуы мүмкін

Егер сіз шағын топта немесе жалғыз жұмыс істесеңіз, бұл сізді қызықтыруы мүмкін. Сізде мониторинг жоқ және оның шынымен қажет екеніне сенімді емессіз. Немесе сіз «үлкен балалар үшін» танымал байыпты бақылауды қолданып көрдіңіз, бірақ ол сіз үшін қандай да бір түрде «түсірмеді» немесе ол әдепкі конфигурацияда жұмыс істейді және өміріңізді айтарлықтай өзгертпеді. Сондай-ақ - егер сіз бақылау тақтасын күніне кемінде екі сағат бақылауға немесе оны конфигурациялауға бүкіл қызметкерді (немесе тіпті бөлімді) бөлуді жоспарламасаңыз.

Неліктен okerr әдеттен тыс

Әрі қарай мен окерраның кейбір басқа бақылау жүйелерінен ерекшеленетін қызықты ерекшеліктерін көрсетемін.

Okerr - гибридті мониторинг

Ішкі бақылау кезінде бақыланатын машиналарда деректерді мониторинг серверіне жіберетін «агент» жұмыс істейді (мысалы, бос дискілік кеңістік). Сыртқы кезде сервер желі арқылы тексерулерді орындайды (мысалы, пинг немесе веб-сайттың қолжетімділігі). Әрбір тәсілдің өз шектеулері бар. Okerr екі опцияны да пайдаланады. Серверлердің ішіндегі тексерулерді өте жеңіл (30Кб) агент немесе өзіңіздің сценарийлеріңіз бен қолданбаларыңыз орындайды, ал желіні тексеру әртүрлі елдердегі okerr сенсорлары арқылы жүзеге асырылады.

okerr - бұл жай ғана бағдарламалық құрал емес, сонымен қатар қызмет

Кез келген мониторингтің серверлік бөлігі үлкен және күрделі, орнату және конфигурациялау қиын және ол ресурстарды қажет етеді. okerr көмегімен сіз өзіңіздің бақылау серверіңізді орната аласыз (ол тегін және ашық бастапқы код), немесе сіз жай ғана клиент бөлігін ғана пайдалана аласыз және біздің сервердің қызметін пайдалана аласыз. Сондай-ақ тегін.

Егер мониторинг серверлер мен қосымшалардағы сенімділіктің жетіспеушілігін өтеуге және жабуға мүмкіндік берсе, онда философиялық сұрақ туындайды - күзетші кім? Мониторинг қандай да бір себептермен бөлек немесе басқа ресурстармен бірге (мысалы, деректер орталығына арна құлап) «өліп қалса» мәселе туралы бізге қалай айтады? Сыртқы қызметті пайдаланған кезде okerr - бұл мәселе шешілді - сіздің серверлеріңіз бар бүкіл деректер орталығы қуатсыз болса немесе зомби шабуылына ұшыраса да, сіз ескерту аласыз.

Әрине, okerr серверінің өзі қол жетімсіз болу қаупі бар, бұл дұрыс (өздеріңіз білетіндей, сенімділіктің 90% әрқашан қарапайым және «тегін», 99% ең аз күшпен алынады және әрбір келесі тоғыз экспоненциалды түрде қиынырақ). Бірақ, біріншіден, бұл орын алу ықтималдығы төмен, ал екіншіден, мәселе біздің серверлердегі ақаулармен сәйкес келсе ғана байқалмай қалуы мүмкін. Егер бізде 99.9% сенімділік болса, ал сізде 99.9% (тым жоғары сандар емес) болса, онда анықталмаған сәтсіздіктің ықтималдығы 0.1% = 0.1% құрайды. Үш тоғызды күш-жігерсіз және шығынсыз сенімділікке қосу өте жақсы!

Қызмет ретінде бақылаудың тағы бір артықшылығы - хостинг провайдері немесе веб-студия okerr серверін орнатып, клиенттерге ақылы немесе тегін қосымша қызмет ретінде қолжетімділікті қамтамасыз ете алады. Сіздің бәсекелестеріңізде жай ғана хостинг және веб-сайттар бар, бірақ сізде мониторингі бар сенімді хостинг бар.

Okerr көрсеткіштер туралы

Көрсеткіш – «шам шамы». Оның екі негізгі күйі бар - жасыл (ОК) немесе қызыл (ERR). Жобада көптеген топтастырылған (мысалы, сервер бойынша) көрсеткіштер бар. Жобаның негізгі бетінде сіз бірден бәрі жасыл (және оны жабуға болады) немесе бірдеңе қызыл жанып тұрғанын және оны түзетуді қажет ететінін көресіз. Осы күйлер арасында ауысу кезінде ескерту жіберіледі. Оны орнату кезінде күніне бір рет жобаның қысқаша мазмұны жіберіледі.

Okerr гибридті бақылау жүйесіне шолу

Әрбір okerr индикаторы оның күйін өзгертетін кірістірілген шарттарға ие (Zabbix-те бұл триггер деп аталады). Мысалы, орташа жүктеме 2-ден аспауы керек (әрине, бұл конфигурациялануы мүмкін). Және әрбір ішкі тексеру үшін (орташа жүктеме, диск бос, ...) бақылаушы бар. Егер қандай да бір себептермен біз белгіленген уақытта сәтті растауды алмасақ, қате тіркеліп, ескерту жіберіледі.

Біздің әдеттегі жұмыс үлгіміз - таңертең электрондық хаттарды тексеру және басқа хаттар арасында қорытындыны қарау (біз оны жұмыстың басында жоспарлаймыз). Егер бәрі дұрыс болса, біз басқа маңызды нәрселерді жасаймыз (бірақ қауіпсіз болу үшін біз okerra бақылау тақтасын жылдам қарап, осы сәтте бәрі жасыл екеніне көз жеткізе аламыз). Егер ескерту келсе, біз әрекет етеміз.

Әрине, жай ғана «ақпараттық» көрсеткіштерді сақтауға болады (мониторингтен желінің суретін көру үшін), бірақ бәрі автоматты бақылау және ескертулерді жіберу үшін арнайы көрсеткіштерді қарапайым, оңай және жылдам жасау үшін жасалады.

Сіз okerr орнатып жатқан мақсат ескертулерде, бір минут ішінде индикатор жасай аласыз, ол бір жыл бойы «ұйықтай алады», тек жаңартуларды қабылдай алады, ал бір жылдан кейін бірдеңе бұзылған кезде ол жанады және жібереді. ескерту. Бір рет индикатор жасауға жұмсаған минутыңыз өз жемісін берді; сіз басқалардан бұрын мәселе туралы бірден білдіңіз. Оны ешкім байқамай тұрып түзетіп алған болуы мүмкін. Тез көтерілген нәрсе құлаған болып саналмайды!

Қауіпсіздік

Сенімділікті арттыру үшін мониторингті орнатсаңыз, ұят болар еді, бірақ нәтижесінде сізге желі арқылы шабуыл жасалады және әртүрлі бақылау құралдарында желілік осалдықтар өте көп (Zabbix, Nagios).

Агент (пакеттен okerrmod okerruptdate) жүйеде жұмыс істейтін желі сервері емес, клиент. Сондықтан бақыланатын серверде қосымша ашық порттар жоқ, клиент брандмауэр немесе NAT артында оңай жұмыс істейді және желі арқылы бұзу өте қиын («мүмкін емес» деп айтар едім), өйткені ол желіні тыңдамайды. розетка.

Толық бақылауды қамту

Енді біздің ережеміз - біз барлық техникалық мәселелер туралы okerr-ден үйренеміз. Егер кенеттен ереже бұзылса (окерр оның жақын арада болатыны туралы ескертпеді (егер бұл мүмкін болса) немесе ол бұрыннан болған) - біз okerr-ге чектерді қосамыз.

Сыртқы тексерулер

Әдеттегі жиынтық:

  • пинг
  • http күйі
  • SSL сертификатының жарамдылығы мен жаңалығын тексеру (егер оның мерзімі аяқталуға жақын болса ескертеді)
  • TCP портын және ондағы баннерді ашыңыз
  • http grep (бетте [болмауы керек] нақты мәтін)
  • бет өзгерістерін ұстау үшін sha1 хэш.
  • DNS (DNS жазбасында белгілі бір мән болуы керек)
  • WHOIS (домен нашарлайтын болса, ескертеді)
  • Антиспам DNSBL (хостты бірден 50+ антиспам қара тізімдеріне қарсы тексеру)

Ішкі тексерулер

Сондай-ақ, жеткілікті стандартты жиынтық (бірақ оңай кеңейтілетін).

  • df (дискідегі бос орын)
  • орташа жүктеме
  • opentcp (ашық TCP тыңдау ұялары - бірдеңе басталған немесе бұзылған жағдайда хабарлайды)
  • жұмыс уақыты - сервердегі жұмыс уақыты. Оның өзгергені туралы хабарлайды (яғни сервер шамадан тыс жүктелді)
  • client_ip
  • dirsize - біз оны виртуалды машинаның rootf файлдары рұқсат етілген өлшемнен асқанда, қатаң шектеулер енгізбестен және пайдаланушының үй каталогтарының өлшемін бақылау үшін қолданамыз.
  • бос және бос емес - бос болуы керек (немесе бос емес) файлдарды бақылаңыз. Мысалы, okerr серверінің қате журналының өзі бос болуы керек, егер оның ішінде тіпті жол болса, мен хабарлама аламын және оны тексеремін. Бірақ пошта серверіндегі mail.log бос болмауы керек (айналдырудан кейін N минут). Ал кейде жүйені жаңартудан кейін logrotate rsyslog-ті дұрыс қайта іске қоса алмаған кезде ол біз үшін бос болды.
  • linecount - файлдағы жолдар саны (wc -l сияқты). Қате журналы әлі де өсуі мүмкін, бірақ тек баяу (мысалы, Googlebot кейбір жабық беттерге тиеді) біз оны бос орынға жұмсақ ауыстыру ретінде қолданамыз. 2 минутта 20 жолға шектеу бар. Егер ол жоғары болса, ескерту болады

Қызықты ішкі тексерулер

Егер сіз осы уақытқа дейін «диагональды» оқып келген болсаңыз, енді мұқият оқып шығу қызықтырақ болады.

сақтық көшірмелер

Каталогтағы сақтық көшірмелерді бақылайды. Сақтық көшірме файлдарымызда “ServerName-20200530.tar.gz” сияқты атаулар бар. Okerr ішіндегі әрбір сервер үшін ServerName-DATE.tar.gz индикаторы жасалады (нақты күн «DATE» жолына өзгереді). Жаңа сақтық көшірменің болуы және оның өлшемі де бақыланады (мысалы, ол алдыңғы сақтық көшірменің 90%-дан кем болмауы керек).

Жаңа сақтық көшірме жасауды және оны осы каталогқа қоюды бастағаннан кейін қадағалана бастауы үшін не істеу керек? Ештеңе! Бұл «ештеңе» істеу қажет болғанда өте ыңғайлы тәсіл, себебі:

  • «Ештеңе» жасау өте жылдам, уақытты үнемдейді
  • «Ештеңе» істеуді ұмыту қиын
  • Қателікпен «ештеңе» қате жасау қиын. Ештеңе ең сенімді әдіс емес

Егер кенеттен жаңа сақтық көшірме файлдары көрінбей қалса, ескерту болады. Мысалы, сіз серверлердің бірін өшірген болсаңыз және басқа сақтық көшірмелер болмаса, индикаторды жою қажет (веб-интерфейс арқылы немесе API арқылы қабықтан).

maxfilesz

Ең үлкен файлдардың өлшемін қадағалайды (әдетте: /var/log/*). Бұл алдын ала болжауға болмайтын мәселелерді шешуге мүмкіндік береді, мысалы, дөрекі күш құпия сөздері немесе сервер арқылы спам жіберу.

жұмыс күйі/орындау жолы

Бұл серверде басқа бағдарламаларды іске қосуға арналған екі маңызды прокси модулі. Runstatus индикаторға бағдарламаның шығу кодын хабарлайды. Мысалы, okerr жүйелік қызметтер жұмыс істеп тұрғанын тексеру үшін модульді қажет етпейді (талап етеді). Бұл runstatus арқылы жасалады (төменде қараңыз). Runline – серверге бағдарлама шығаратын жол туралы есеп береді. Мысалы, temp_RUN="cat /sys/class/thermal/thermal_zone0/temp" сервердегі Runline конфигурациясында процессор температурасымен сервер атауы:темп индикаторын жасайды.

SQL

MySQL жүйесіне сандық сұрауды орындайды және нәтижені индикаторға хабарлайды. Қарапайым жағдайда, мысалы, «ТАҢДАУ 1» жасай аласыз - бұл ДҚБЖ тұтастай жұмыс істеп тұрғанын тексереді.

Бірақ әлдеқайда қызықты қосымша, мысалы, интернет-дүкендегі тапсырыстар санын қадағалау. Егер сізде сағатына 100 немесе одан да көп тапсырыс бар екенін білсеңіз, ең төменгі шекті 100 немесе 80 етіп орнатуға болады. Содан кейін сатуларыңыз кенеттен төмендесе, сізге ескерту келеді және оны анықтай аласыз.

Мұның қандай болжаусыз себеппен болғаны маңызды емес екенін ескеріңіз:

  • Сервер жай ғана қолжетімсіз (қуатсыз немесе желісіз) және ескерту индикатордың «шіріген» фактісінен келді.
  • Сервер бірдеңемен шамадан тыс жүктелген, ол баяу жұмыс істейді немесе пакеттер жоғалып кетті, бұл пайдаланушылар үшін ыңғайсыз және олар сатып алмастан кетеді.
  • Сервер спам тізімдеріне енгізілген және одан хаттар қабылданбайды, пайдаланушылар тіркеле алмайды
  • Жарнамалық науқанның бюджеті таусылды, баннерлер айналмайды.

Себептердің кез келген саны болуы мүмкін және олардың барлығын алдын ала болжау мүмкін емес және техникалық тұрғыдан қадағалау қиын. Бірақ сіз соңғы параметрді (тапсырмаларды) ыңғайлы түрде бақылай аласыз және олардан жағдайдың күдікті екенін және оны шешуге лайық екенін анықтай аласыз.

Логикалық көрсеткіштер

Модуль арқылы логикалық өрнектерді (Python синтаксисі) пайдалануға мүмкіндік береді бағалау(Хабре туралы мақала). Жобадан алынған деректер және оның көрсеткіштері өрнек үшін қолжетімді. Мысалы, жоғарыда SQL тексеруі туралы тарауда сіз әлсіз жерді байқаған боларсыз - күндіз біз сағатына 100 сатылымға ие бола аламыз, ал түнде - 20 және бұл жиі кездеседі, мәселе емес. Не істейін? Түнде индикатор үнемі дүрбелең болады.

Сіз күндіз және түнде екі индикатор жасай аласыз. Екеуін де «үнсіз» етіңіз (олар ескертулер жібермейді). Және күндізгі индикатордың 20:00-ге дейін ОК болуын талап ететін логикалық көрсеткіш жасаңыз, ал 20:00-ден кейін түнгі индикатор ОК болуы үшін жеткілікті.

Логикалық көрсеткішті қолданудың тағы бір мысалы эскалация. Мысалы, жоба менеджері ескертулерден бас тартады (ол мұны істеудің қажеті жоқ, әкімшілер қалыпты мәселелерге жауап беруі керек), бірақ жобадағы кез келген көрсеткіш бөлінген уақыт ішінде түзетілмесе, қызыл түске боялатын логикалық индикаторға жазылады.

Сондай-ақ, жұмысқа рұқсат етілген уақытты орнатуға болады, мысалы, таңғы 3-тен 5-ке дейін. Осы уақыт ішінде серверлер мен сайттардың бұзылуы бізге маңызды емес. Бірақ сағат 5:00-де олар жұмыс істеуі керек. Егер олар басқа уақытта жұмыс істемесе - ескерту. Логикалық көрсеткіш сонымен қатар сервердің артық болуын есепке алуға мүмкіндік береді. Егер сізде 5 веб-сервер болса, әкімшілер кез келген уақытта 1-2 серверді өшіре алады. Бірақ шайқаста 3 сервердің 5-тен азы болса, ескерту болады.

Жоғарыдағы мысалдар oker функциялары емес, белсендіру және конфигурациялау қажет кейбір мүмкіндіктер емес. Okerra-да бұл функциялардың барлығы жоқ, бірақ бұл функцияны жүзеге асыруға мүмкіндік беретін логикалық модуль бар (Шамамен бағдарламалау тіліндегідей - егер бізде арифметикалық операторлар болса, онда бізге 20% ҚҚС есептеу үшін арнайы функция қажет емес. тілден, сіз оны әрқашан өзіңіз жасай аласыз, оны қажеттіліктеріңізге сай етіп жасаңыз).

Логикалық көрсеткіш, бәлкім, okerr бірнеше салыстырмалы күрделі тақырыптардың бірі болып табылады, бірақ жақсы жаңалық сізге қажет дейін оны меңгеру қажет емес болып табылады. Бірақ сонымен бірге олар жүйенің өзін өте қарапайым сақтай отырып, мүмкіндіктерді айтарлықтай кеңейтеді.

Өз чектеріңізді қосу

Мен шынымен де okerr - бұл барлық жағдайларға арналған мыңдаған дайын чектер жиынтығы емес, керісінше - ең алдымен - өз чектеріңізді жасаудың қарапайым мүмкіндігі бар қарапайым қозғалтқыш деген идеяны жеткізгім келеді. Okerr жүйесінде өз чектеріңізді жасау хакерлерге, жүйені бірлесіп әзірлеушілерге немесе кем дегенде озық okerr пайдаланушыларына арналған тапсырма емес, бірақ бір ай бұрын Linux жүйесін алғаш рет орнатқан кез келген әкімші үшін орындалатын тапсырма.

Ең төменгі жалақыны тексеру модуль арқылы жүргізіледі жұмыс күйі:

Бұл жол конфигурацияда жұмыс күйі /bin/true кенеттен басталмаса немесе 0-ден басқа нәрсені қайтарса, сізге хабарлайды.

true_OK=/bin/true

Бір ғана сызық - және біз қазірдің өзінде аз кеңейген функционалдық okerr.

Тіпті мұндай тексерудің өзінде өз мәні бар: егер кенеттен сіздің серверіңіз бұзылса, okerr серверіндегі сәйкес көрсеткіш уақтылы жаңартылмайды және уақыт өткеннен кейін ескерту пайда болады.

Бұл тексеру apache2 серверінің бұзылғаны туралы хабарлайды (жақсы, сіз ешқашан білмейсіз ...):

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

Сонымен, егер сіз кез келген бағдарламалау тілін білсеңіз және кем дегенде қабық сценарийлерін жаза алатын болсаңыз, онда сіз өзіңіздің чектеріңізді қоса аласыз.

Неғұрлым қиын - сіз (кез келген тілде) okerrmod үшін өз модуліңізді жаза аласыз. Ең қарапайым жағдайда ол келесідей көрінеді:

#!/usr/bin/python3

print("STATUS: OK")

Бұл өте қиын емес пе? Модуль тексеруді өзі жасап, нәтижелерді STDOUT жүйесіне шығаруы керек. Неғұрлым күрделі модуль, мысалы, мынаны береді:

$ 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

Ол бірден бірнеше индикаторларды жаңартады (бос жолмен бөлінген), қажет болған жағдайда оларды жасайды, тексеру мәліметтерін және бақылау тақтасында қажетті көрсеткіштерді оңай табуға болатын тегті көрсетеді.

Telegram

Telegram боты бар @OkerrBot. Телефоныңызды бөлек қолданбалармен толтырудың қажеті жоқ (маған Пятерочка үшін картасы бар бір қолданба керек, Лента үшін екіншісі, МТС үшін үшінші және барлығына, барлығына, барлығына қажет болғаны ұнамайды). Бір жеделхат жеткілікті. Telegram арқылы сіз дереу ескертулер аласыз, жобаның күйін тексере аласыз және барлық проблемалық көрсеткіштерді қайта тексеруге бұйрық бере аласыз. Біз театрдан/ұшақтан шықтық, екі сағат бойы саусағымызды ұстамадық, телефонды қосып, чат-боттағы бір түймені басып, бәрі жақсы екеніне көз жеткіздік.

Күй беттері

Қазіргі уақытта күй парақтары АТ бар, сенімділікке жауапкершілікпен қарайтын және өз клиенттеріне/пайдаланушыларына құрметпен қарайтын кез келген бизнес үшін қажет дерлік.

Жағдайды елестетіп көріңіз - пайдаланушы бірдеңе жасағысы келеді, ақпаратты көргісі немесе тапсырыс жасағысы келеді, бірақ бірдеңе жұмыс істемейді. Ол не болып жатқанын, мәселе кімнің жағында екенін және оның қашан шешілетінін білмейді. Мүмкін сіздің компанияңызда жұмыс істемейтін веб-сайт бар шығар? Әлде алты ай бұрын бұзылып, екі жылда түзеледі ме? Бірақ тоңазытқышты қазір сатып алу керек, ол арбада бар... Ал адам сізде бірдеңенің дұрыс емес екенін (ең болмағанда мәселе оның жағында емес екені анық) көргенде, бұл мүлдем басқа мәселе. мәселе анықталды, сіз қазірдің өзінде онымен жұмыс істеп жатырсыз және тіпті түзетудің шамамен уақытын жазып алған шығарсыз. Пайдаланушы жазыла алады және мәселе шешілген кезде электрондық пошта хабарламасын ала алады және ол қалаған нәрсені жасай алады (тоңазытқыш сатып алады).

Okerr гибридті бақылау жүйесіне шолу

Проблемалар мен үзілістер барлығында болады. Бірақ пайдаланушылар мен серіктестер осыған қатысты көзқараста неғұрлым ашық және жауапты адамдарға көбірек сенеді.

осында күй беттерін жасауға мүмкіндік беретін 10 басқа жобаны шолу. Міне, осы жоба беттерінің қалай көрінетінінің мысалдары Python и Dropbox. okerr күй беті.

ауыстырып-қосу

Бұл мақаланы ұзартпау үшін мен бұрынғы мақалама тағы бір рет сілтеме жасаймын - Веб-сайт үшін қарапайым ауыстыру . Егер сіз қайталанатын сервер жасай алсаңыз, онда ауыстырып-қосуды қолдансаңыз, сізде ұзақ уақыт тоқтап қалуыңыз болмайды - мәселе анықталған кезде пайдаланушылар автоматты түрде жұмыс істейтін сақтық көшірме серверіне қайта бағытталады. Менің ойымша, бұл өте қызықты, кез келген жерде сирек кездесетін жарқын мүмкіндік.

Төмен жүйелік талаптар

Okerr серверлері үшін біз 2 Гб-тан бастап жедел жады бар машиналарды қолданамыз. Желілік сенсорлар үшін тіпті 512 Мб жеткілікті. Клиент бөлігі әдетте нөлге тең. (Пластикалық пакет okerruptdate салмағы 26 Кб, бірақ Python3 және стандартты кітапханаларды қажет етеді). Клиент cron сценарийінен жұмыс істейді, сондықтан оның тұрақты жадты тұтынуы нөлге тең. Біз бақылаған машиналар арасында сенсорлар (512 Мб жедел жады бар өте арзан VPS) және Raspberry Pi бар. Бұл тіпті клиент бөлігісіз де мүмкін curl арқылы жаңартуларды жіберіңіз! (төменде қараңыз)

Осыны ескерсек – окерр, сірә ең тегін қол жетімділерден мониторинг жүйесі, өйткені Zabbix немесе Nagios сияқты басқа тегін ашық бастапқы жүйені пайдалану үшін оған ресурстарды (серверді) бөлу керек, бұл қазірдің өзінде ақша. Бұған қоса, кейбір серверге техникалық қызмет көрсету әлі де қажет. Okerr көмегімен бұл бөлікті алып тастауға болады. Немесе сізге ұнайтын нәрсеге байланысты оны жоюдың және өз серверіңізді пайдаланудың қажеті жоқ.

API және меншікті бағдарламалық құралға біріктіру

Қарапайым және ашық архитектура. okerr өте қарапайым API, онымен жұмыс істеу оңай. 1000 көрсеткішті жасау керек пе? 3-4 жолдан тұратын бір қабық сценарийі мұны жасайды. 1000 көрсеткішті қайта конфигурациялау керек пе? Бұл да өте оңай. Мысалы, біз ресейлік сенсордан барлық HTTPS сертификаттарымызды екі рет тексергіміз келеді:

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

Көрсеткішті біздің клиенттік модульді пайдаланып, онсыз да, тек curl арқылы жаңартуға болады.

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

Көрсеткіштерді тікелей бағдарламадан жаңартуға болады. Мысалы, жүрек соғу сигналдарын жіберу, осылайша okerr оның жұмыс істеп тұрғанын біледі және ол бұзылса немесе қатып қалса дабыл береді. Айтпақшы, okerr компоненттері дәл осылай жасайды - okerr өзін бақылайды және кез келген дерлік модульдегі ақаулар анықталып, мәселе туралы ескерту жасайды. (Ал бұл «дерлік» жағдайда - олар басқа серверден тексеріледі)

Міне, біздің телеграмма ботындағы код (жеңілдетілген):

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 бағдарламаларынан көрсеткіштерді жаңартуға арналған кітапхана бар okerruptdate, кез келген басқа тілдер үшін кітапханалар жоқ, бірақ сіз okerrupdate сценарийін шақыра аласыз немесе okerr серверіне HTTP сұрауын жасай аласыз.

Okerr бізге қалай көмектеседі

Окер біздің өмірімізді өзгертті. Әрине. Мүмкін, басқа бақылау жүйесі де солай ете алады, бірақ okerr-пен жұмыс істеу біз үшін оңай және қарапайым және ол бізге қажет барлық функцияларға ие (бізде жоқ нәрсені қостық). Айтпақшы, егер кейбір мүмкіндіктер жетіспейтін болса, сұраңыз, мен оларды қосамын (мен уәде бермеймін, бірақ мен okerr шағын орта жобалар үшін ең жақсы бақылау жүйесі болғанын қалаймын). Немесе жақсырақ, оны өзіңіз қосыңыз - бұл оңай.

Біз «барлық мәселені керрадан біл» қағидасымен өмір сүре алдық. Егер кенеттен біз okerr-ден білмеген мәселе туындаса, біз okerr-ге чек қосамыз. (бұл жағдайда «біз» деп мен бірлесіп әзірлеушілер емес, жүйенің пайдаланушылары ретінде бізді айтамын). Бастапқыда бұл әдеттегідей болды, бірақ қазір ол өте сирек болды.

Бақылау

okerr арқылы біз барлық серверлердегі журнал өлшемдерін бақылаймыз. Әрине, журналдың әрбір жолын көзбен оқып шығу мүмкін емес, бірақ өсу қарқынын бақылау қазірдің өзінде көп нәрсе береді. Осы арқылы біз спам жіберуді және құпия сөзді дөрекі түрде іздеуді анықтадық, ал кейбір қолданбалар «есі ауысқанда» олар үшін бірдеңе жұмыс істемейді және олар оны қайта-қайта қайталайды (әрбір жолы журналға бірнеше жол қосады). ).

SSL сертификаттары. Іске қосылғаннан кейін бірден дерлік LetsEncrypt біздің тұтынушымыз өз клиенттеріне тегін SSL сертификаттарын бере бастады (олардың мыңға жуығы). Әкімшілік үшін бұл жәй тозақ болып шықты! Өйткені сайттар «тірі», клиенттер мезгіл-мезгіл олардан бірдеңе жасауды сұрайды, бағдарламашылар мұны жасайды. Олар, мысалы, сайтты басқа DocumentRoot жүйесіне толығымен еркін тасымалдай алады. Немесе виртуалды хост конфигурациясына сөзсіз Қайта жазуды қосыңыз. Әрине, осыдан кейін сертификаттарды автоматты түрде жаңарту бұзылады. Енді бізде барлық SSL хосттары пакеттегі басқа пайдалы утилиталар арқылы okerr-ге автоматты түрде қосылды a2conf. Тек іске қосайық a2okerr.py — және серверде бірнеше жаңа сайт пайда болса, олар автоматты түрде okerr ішінде пайда болады. Егер кенеттен қандай да бір себептермен сертификат ұзартылмаса, сертификаттың мерзімі аяқталуға үш апта қалғанда, біз білеміз, және оның неге жаңартылмағанын анықтаймыз, мұндай ит. a2certbot.py сол пакеттен - бұл көп көмектеседі (ол ең ықтимал мәселелерді дереу тексереді - және не жақсы тексерілгенін және қай жерде мәселе бар екенін жазады).

Біз барлық домендердің жарамдылық мерзімін бақылаймыз. Сондай-ақ поштаны жіберетін біздің барлық пошта серверлері 50+ түрлі қара тізімдерге қарсы тексеріледі. (Және кейде олар оларға түседі). Айтпақшы, Google пошта серверлері де қара тізімге енгізілгенін білесіз бе? Тек өзін-өзі тексеру үшін біз бақыланатын серверлерге mail-wr1-f54.google.com қостық және ол әлі де SORBS қара тізімінде! (Бұл «антиспаммерлердің» құндылығы туралы)

Сақтық көшірмелер - мен оларды okerr көмегімен бақылау қаншалықты оңай екенін жоғарыда жаздым. Бірақ біз серверіміздегі ең соңғы сақтық көшірмелерді де, (okerr пайдаланатын бөлек қызметтік бағдарламаны пайдаланып) Amazon Glacier-ге жүктеп салатын сақтық көшірмелерді бақылаймыз. Және, иә, проблемалар мезгіл-мезгіл туындайды. Олардың қарап тұрғаны таңқаларлық емес.

Біз эскалация индикаторын қолданамыз. Ол қандай да бір мәселенің ұзақ уақыт бойы шешілмегенін көрсетеді. Ал мен өзім кейбір мәселелерді шешкенде, кейде оларды ұмытып кетемін. Эскалация - бұл жақсы ескерту, тіпті егер сіз өзіңізді бақылап отырсаңыз да.

Тұтастай алғанда, біздің жұмысымыздың сапасы ауқымды түрде артты деп ойлаймын. Жұмыс көлемі азайып, жұмыс жағдайы тыныш бола бастаған кезде бос уақыт жоқтың қасы (немесе клиенттің оны байқайтын уақыты жоқ. Тыныш!). Біз саңылауларды таспамен жамаумен шұғыл жұмыстан тыныш және өлшенген жұмысқа көштік, бұл кезде көптеген мәселелер алдын ала болжанып, олардың алдын алуға уақыт бар. Тіпті орын алған проблемаларды шешу оңайырақ болды: біріншіден, біз олар туралы клиенттерді дүрбелеңге түсірмес бұрын білеміз, екіншіден, мәселе соңғы жұмысқа байланысты жиі кездеседі (мен бір нәрсені істеп жатқанда, мен екіншісін бұздым) - сондықтан ыстық іздердің онымен күресу оңайырақ.

Бірақ тағы бір жағдай болды...

Танымал Debian 9 (Stretch) ішінде phpmyadmin сияқты танымал пакет әлі де (көп ай бойы!) осал күйде екенін білесіз бе? (CVE-2019-6798). Осалдық пайда болған кезде, біз оны әртүрлі тәсілдермен тез жауып тастадық. Бірақ мен «әдемі» шешім қашан шығатынын білу үшін (мазмұнның SHA1 сомасы арқылы) okerr-де қауіпсіздікті қадағалау бетін бақылауды орнаттым. Көрсеткіш мені бірнеше рет сілкіндірді, бет өзгерді, бірақ көріп отырғаныңыздай, ол әлі де (2019 жылдың қаңтарынан бастап!) мәселенің шешілгенін көрсетпейді. Мүмкін, айтпақшы, мұндай маңызды пакеттің бір жылдан астам уақыт бойы әлі де осал болуы қандай проблема екенін біреу біледі?

Ұқсас жағдайда тағы бір рет: SSH осалдығынан кейін барлық серверлерді жаңарту қажет болды. Ал тапсырма қойған кезде орындалуын бақылау керек. (Бағыныңқылар дұрыс түсінбейді, ұмытады, шатасады, қателеседі). Сондықтан, алдымен барлық серверлердегі okerr-ге SSH нұсқасын тексеруді қостық және okerr арқылы жаңартулардың барлық серверлерде шығарылғанына көз жеткіздік. (Ыңғайлы! Мен индикатордың осы түрін таңдадым, қай серверде қандай нұсқа бар екенін бірден көре аласыз). Біз барлық серверлерде тапсырма орындалғанына сенімді болған кезде, біз көрсеткіштерді алып тастадық.

Бір-екі рет белгілі бір мәселе туындап, кейін өздігінен жойылатын жағдай болды. (бәріне таныс шығар?). Сіз байқаған кезде, сіз тексерген кезде - және тексеретін ештеңе жоқ - бәрі қазірдің өзінде жақсы жұмыс істейді. Бірақ содан кейін ол қайтадан бұзылады. Бізде мұндай жағдай болды, мысалы, Amazon Marketplace (MWS) сайтына жүктеп салған өнімдерімізде. Белгілі бір уақытта жүктелген тауарлық-материалдық қорлар дұрыс емес болды (тауарлардың дұрыс емес саны және дұрыс емес бағалар). Біз оны анықтадық. Бірақ оны анықтау үшін мәселе туралы дереу білу маңызды болды. Өкінішке орай, MWS, барлық Amazon қызметтері сияқты, аздап баяу, сондықтан әрқашан артта қалу болды, бірақ бәрібір, біз кем дегенде мәселе мен оны тудыратын сценарийлер арасындағы байланысты түсіндік (тексердік, кептеліп қалдық) оны okerr-ге жіберіп, ескертуді бірден тексерді).

Жақында біздің тұтынушымыз пайдаланатын үлкен және қымбат еуропалық хосттер коллекцияға қызықты жағдай қосылды. Кенеттен біздің БАРЛЫҚ серверлеріміз радардан жоғалып кетті! Біріншіден, клиенттің өзі (океррадан жылдамырақ!) өзі жұмыс істеп жатқан сайттың ашылмағанын байқап, бұл туралы билет жасады. Бірақ бір сайт қана емес, бәрі де істен шықты! (Наташа, біз бәрін тастадық!). Мұнда Окерр оған жанып тұрған барлық индикаторлары бар ұзын аяқ орамдарын жібере бастады. Дүрбелең, дүрбелең, біз шеңбер бойымен жүгіреміз (басқа не істей аламыз?). Содан кейін бәрі көтерілді. Дата орталығында (көп жылда бір рет) жоспарлы техникалық қызмет көрсету болғаны белгілі болды және, әрине, бізге ескерту керек еді. Бірақ оларда қандай да бір мәселе болды және олар бізге ескертпеді. Жарайды, инфаркт көп, инфаркт аз. Бірақ бәрі қалпына келтірілгеннен кейін бәрін екі рет тексеру керек! Мен мұны өз қолыммен қалай жасайтынымды елестете алмаймын. Окерр бірнеше минут ішінде барлығын сынап көрді. Серверлердің көпшілігі уақытша қолжетімсіз болып шықты, бірақ олар жұмыс істеді. Кейбіреулер шамадан тыс жүктелді, бірақ олар қажет болғандай тұрды. Барлық жоғалтулардың ішінде біз екі резервтік көшірмеден айырылдық, тәжге сәйкес, бұл толық банан жүріп жатқанда жасалып, жүктелуі керек еді. Мен оларды жасауды тіпті мазаламадым, бір күннен кейін бәрі жақсы, сақтық көшірмелер пайда болды деген ескертулер келді. Маған бұл мысал өте ұнайды, өйткені okerr біз алдын ала ойланбаған жағдайда өте пайдалы болып шықты, бірақ бұл бақылаудың мақсаты - болжауға болмайтынға қарсы тұру.

Okerr сенсорлары үшін біз ең арзан хостингті қолданамыз (сапа мен сенімділік маңызды емес, олар бір-бірін сақтандырады). Сонымен, біз жақында өте жақсы хостинг таптық және өте арзан, эталондар керемет. Бірақ... кейде виртуалды машинадан шығатын қосылымдар басқа (көршілес) IP-ден жасалған болып шығады. Ғажайыптар. Client_ip модулі бар https://diagnostic.opendns.com/myip қате IP алады. Ал индикатордың сервер журналдарынан жаңарту осы көрші IP-ден де келгені анық. Енді қолдаумен айналысайық. Мұны бейбіт уақытта байқағанымыз жақсы. Бірақ, мысалы, кіру IP ақ тізіміне сәйкес жиі тіркеледі - және егер сервер кейде осылай қысқа уақытқа жыпылықтаса - бұл мәселені өте ұзақ уақыт ұстауға тырысуға болады.

Тағы бір нәрсе - біз VPS хостингі туралы айтатын болсақ, біз әрқашан арзандарын қолданамыз (hetzner, ovh, scaleway). Маған бұл көрсеткіштер мен тұрақтылық тұрғысынан өте ұнайды. Біз сондай-ақ басқа жобалар үшін әлдеқайда қымбатырақ Amazon EC2 пайдаланамыз. Сонымен, okerr арқасында бізде өз пікіріміз бар. Екеуі құлайды. Біздің бақылауларымыздың ұзақ кезеңінде hetzner сияқты арзан хостингтер EC2-ге қарағанда айтарлықтай тұрақты емес болды деп айта алмаймын. Сондықтан, егер сіз басқа Amazon мүмкіндіктеріне байланысты болмасаңыз, неге көбірек төлеу керек? 🙂

Ары қарай не?

Егер осы кезеңде мен сізді Океррден әлі қорқытпасам, көріңіз! Осы сілтемеге тікелей өтуге болады okerr демо тіркелгісі (Қазір басыңыз!) Бірақ барлығына бір ғана демо тіркелгі бар екенін есте сақтаңыз, сондықтан бірдеңе жасасаңыз, сол тіркелгідегі басқа біреу сізге бір уақытта кедергі келтіруі мүмкін. Немесе (жақсы) сілтеме арқылы тіркеліңіз сайттан тыс okerr - барлығы қарапайым, SMSсіз. Егер нақты электрондық поштаңызды пайдаланғыңыз келмесе, бір реттік электрондық поштаны пайдалана аласыз, мысалы, mailinator (мен ұсынамын getnada.com). Мұндай тіркелгілер уақыт өте келе жойылуы мүмкін, бірақ олар тестілеуге жарамды болады.

Тіркелгеннен кейін сізден тренингтен өту сұралады (бірнеше өте қиын емес оқу тапсырмаларын орындаңыз). Бастапқы шектеулер өте аз, бірақ оқыту немесе бір сервер үшін олар жеткілікті. Оқытуды аяқтағаннан кейін лимиттер (мысалы, көрсеткіштердің максималды саны) ұлғайтылады.

Құжаттамадан - ең алдымен WIKI сервер жағында және клиентте (викиді жаңарту). Бірақ егер бірдеңе түсініксіз болса, support (at) okerr.com сайтына жазыңыз немесе билет қалдырыңыз - біз бәрін тез шешуге тырысамыз.

Егер сіз оны байыппен қолдансаңыз және бұл ұлғайтылған шектеулер жеткіліксіз болса, қолдау қызметіне жазыңыз, біз оны көбейтеміз (тегін).

Серверіңізге okerr серверін орнатқыңыз келе ме? Мұнда okerr-dev репозиторийі. Таза виртуалды машинаға орнатуды ұсынамыз, содан кейін оны орнату сценарийімен орындауға болады. Виртуалды машинада - шектеулер жоқ :-). Тағы да, егер бірдеңе болса, біз әрқашан көмектесуге тырысамыз.

Біз бұл жобаның жүзеге асуын қалаймыз, осылайша әлем біздің арқасында сенімдірек болады. Тегін бағдарламалық қамтамасыз ету мен қызметтердің арқасында әлем достыққа айналды және серпінді дамып келеді. Дереккөздерді тегін github-та сақтауға болады, пошта үшін сіз тегін gmail пайдалана аласыз. Біз тегін қолданамыз жаңа жұмыстар қолдау үшін. Бұлардың кез келгені үшін серверлер үшін ақы төлеудің қажеті жоқ, жүктеп алу және конфигурациялау қажет емес және әртүрлі операциялық мәселелерді шешудің қажеті жоқ. Әрбір жаңа жобада, әр командада дереу пошта, репозиторийлер және CRM бар. Мұның бәрі өте сапалы және тегін және бірден. Мониторинг үшін де солай болғанын қалаймыз - шағын компаниялар мен жобалар okerr-ді тегін пайдалана алады, тіпті туу және өсу кезеңінде ересектердің маңызды жобаларының сенімділігіне ие.

Ақпарат көзі: www.habr.com