Okerr гибрид хяналтын системийн тойм

Хоёр жилийн өмнө би аль хэдийн бичлэг хийсэн Вэбсайтад зориулсан энгийн шилжүүлэлт тухай okerr. Одоо төслийн зарим бүтээн байгуулалт байгаа, би бас хэвлүүлсэн okerr сервер талын эх код дор нээлттэй лиценз, ийм учраас би энэ товч тоймыг Хабр дээр бичихээр шийдсэн.

Okerr гибрид хяналтын системийн тойм
[ бүрэн хэмжээгээр ]

Энэ нь хэнд сонирхолтой байж болох вэ

Хэрэв та жижиг багаар эсвэл ганцаараа ажилладаг бол энэ нь танд сонирхолтой байж магадгүй юм. Танд хяналт байхгүй бөгөөд танд үнэхээр хэрэгтэй эсэхээ мэдэхгүй байна. Нэг бол та "том хөвгүүдэд зориулсан" алдартай ноцтой хяналтыг туршиж үзсэн боловч энэ нь ямар нэгэн байдлаар таны хувьд "хөөрөхгүй" эсвэл бараг анхдагч тохиргоогоор ажилладаг бөгөөд таны амьдралыг нэг их өөрчилсөнгүй. Мөн түүнчлэн - хэрэв та хяналтын самбарыг өдөрт дор хаяж хоёр цаг хянах эсвэл тохируулахын тулд бүхэл бүтэн ажилтан (эсвэл бүр хэлтэс) ​​хуваарилахаар төлөвлөөгүй бол.

Яагаад okerr ер бусын юм

Дараа нь би бусад хяналтын системүүдээс ялгарах okerra-ийн сонирхолтой шинж чанаруудыг харуулах болно.

Okerr бол эрлийз мониторинг юм

Дотоод хяналтын явцад хяналтанд байгаа машинууд дээр "агент" ажиллаж байгаа бөгөөд энэ нь хяналтын сервер рүү өгөгдөл дамжуулдаг (жишээлбэл, сул дискний зай). Гадны үед сервер сүлжээгээр шалгалт хийдэг (жишээлбэл, ping эсвэл вэбсайтын бэлэн байдал). Арга тус бүр өөрийн гэсэн хязгаарлалттай байдаг. Окерр хоёр сонголтыг ашигладаг. Сервер доторх шалгалтыг маш хөнгөн (30Кб) агент эсвэл өөрийн скрипт, программууд гүйцэтгэдэг бөгөөд сүлжээний шалгалтыг өөр өөр улс орнуудын okerr мэдрэгчээр гүйцэтгэдэг.

okerr нь зөвхөн програм хангамж биш, бас үйлчилгээ юм

Аливаа мониторингийн сервер хэсэг нь том бөгөөд төвөгтэй, суулгах, тохируулахад хэцүү, нөөц шаарддаг. Okerr-ийн тусламжтайгаар та өөрийн хяналтын серверийг (үнэгүй бөгөөд нээлттэй эх сурвалж) суулгаж болно, эсвэл зөвхөн үйлчлүүлэгчийн хэсгийг ашиглаж, манай серверийн үйлчилгээг ашиглах боломжтой. Мөн үнэгүй.

Хэрэв хяналт нь сервер, програмын найдвартай байдлын дутагдлыг нөхөж, далдлах боломжийг олгодог бол философийн асуулт гарч ирнэ - хамгаалагч гэж хэн бэ? Хэрэв ямар нэг шалтгааны улмаас тусад нь эсвэл бусад эх сурвалжтай хамт "үхсэн" бол (жишээлбэл, дата төвийн суваг унасан) мониторинг нь асуудлын талаар бидэнд хэрхэн хэлэх вэ? Гадаад үйлчилгээг ашиглах үед okerr - энэ асуудал шийдэгдсэн - таны серверүүд бүхий дата төв бүхэлдээ цахилгаангүй эсвэл зомби халдлагад өртсөн байсан ч гэсэн анхааруулга хүлээн авах болно.

Мэдээжийн хэрэг, okerr сервер өөрөө ажиллахгүй байх эрсдэлтэй, энэ нь үнэн (найдвартай байдлын 90% нь үргэлж энгийн бөгөөд "үнэгүй", 99% -ийг хамгийн бага хүчин чармайлтаар олж авдаг бөгөөд дараагийн ес бүр нь экспоненциалаар илүү хэцүү). Гэхдээ нэгдүгээрт, ийм зүйл тохиолдох магадлал бага, хоёрдугаарт, энэ нь манай сервер дээрх асуудалтай давхцаж байвал асуудал анзаарагдахгүй байж магадгүй юм. Хэрэв бид 99.9% найдвартай бол та 99.9% (хэт их тоо биш) байвал илрээгүй алдаа гарах магадлал 0.1% = 0.1% байна. Бараг хүчин чармайлтгүйгээр, зардалгүйгээр найдвартай байдалд гурван ес нэмэх нь маш сайн хэрэг!

Үйлчилгээний хувьд мониторинг хийх өөр нэг давуу тал нь хостинг үйлчилгээ үзүүлэгч эсвэл вэб студи нь okerr сервер суулгаж, үйлчлүүлэгчдэд төлбөртэй эсвэл үнэ төлбөргүй нэмэлт үйлчилгээ болгон нэвтрэх боломжийг олгодог. Өрсөлдөгчид чинь зүгээр л хостинг, вэб сайттай, гэхдээ танд хяналттай найдвартай хостинг бий.

Окерр бол үзүүлэлтүүдийн тухай юм

Заагч нь "гэрлийн чийдэн" юм. Энэ нь ногоон (OK) эсвэл улаан (ERR) гэсэн хоёр үндсэн төлөвтэй. Төсөл нь олон бүлэглэсэн (жишээлбэл, серверээр) үзүүлэлтүүдийг агуулдаг. Төслийн үндсэн хуудсан дээр та бүх зүйл ногоон өнгөтэй (мөн та үүнийг хааж болно), эсвэл ямар нэг зүйл улаанаар асч, засах шаардлагатай байгааг шууд харах болно. Эдгээр мужуудын хооронд шилжих үед анхааруулга илгээгдэнэ. Өдөрт нэг удаа та үүнийг тохируулах явцад төслийн хураангуйг илгээдэг.

Okerr гибрид хяналтын системийн тойм

Okerr үзүүлэлт бүр төлөвийг өөрчилдөг суурилагдсан нөхцөлтэй байдаг (Заббикс үүнийг триггер гэж нэрлэдэг). Жишээлбэл, ачааллын дундаж нь 2-оос ихгүй байх ёстой (мэдээж үүнийг тохируулах боломжтой). Мөн дотоод шалгалт бүрийн хувьд (ачааллын дундаж, дискгүй, ...) харуулын нохой байдаг. Хэрэв ямар нэг шалтгааны улмаас бид товлосон цагтаа амжилттай баталгаажуулалтыг хүлээж аваагүй бол алдаа бүртгэгдэж, анхааруулга илгээгдэнэ.

Бидний ердийн ажлын хэв маяг бол өглөө нь имэйлийг шалгаж, бусад захидлуудын дунд хураангуйг хардаг (бид үүнийг ажлын эхэнд хуваарийн дагуу төлөвлөдөг). Хэрэв бүх зүйл хэвийн байвал бид бусад чухал зүйлсийг хийдэг (гэхдээ аюулгүй байхын тулд бид okerra хяналтын самбарыг хурдан харж, яг одоо бүх зүйл ногоон байгаа эсэхийг шалгах боломжтой). Хэрэв анхааруулга ирвэл бид хариу үйлдэл үзүүлдэг.

Мэдээжийн хэрэг, "мэдээллийн" индикаторуудыг (мониторингоос сүлжээний зургийг харахын тулд) зүгээр л хадгалах боломжтой боловч бүх зүйлийг автоматаар хянах, сэрэмжлүүлэг илгээх шалгуур үзүүлэлтийг хялбар, хялбар, хурдан үүсгэхийн тулд хийдэг.

Таны okerr-г тохируулах зорилго нь дохиололд байгаа бөгөөд ингэснээр та нэг минутын дотор индикатор үүсгэж, нэг жилийн турш "унтаж", шинэчлэлтийг хүлээж авах боломжтой бөгөөд жилийн дараа ямар нэгэн зүйл эвдэрсэн үед энэ нь асч, илгээдэг. сэрэмжлүүлэг. Нэг удаа индикатор бүтээхэд зарцуулсан минут чинь үр дүнгээ өгсөн бөгөөд та бусдаас түрүүлж асуудлын талаар шууд мэдсэн. Хэнд ч анзаарагдахаас өмнө зассан байх магадлалтай. Хурдан боссон зүйлийг унасанд тооцдоггүй!

Аюулгүй байдал

Хэрэв та найдвартай байдлыг нэмэгдүүлэхийн тулд мониторинг хийвэл ичгүүртэй байх болно, гэхдээ үүний үр дүнд та сүлжээгээр дамжуулан халдлагад өртөж, янз бүрийн хяналтын хэрэгслүүдэд сүлжээний эмзэг байдал нэлээд их байдаг (Заббик, Nagios).

Агент (багцаас okerrmod okerruptdate) систем дээр ажиллаж байгаа нь сүлжээний сервер биш, харин үйлчлүүлэгч юм. Тиймээс хяналтанд байгаа сервер дээр нэмэлт нээлттэй порт байхгүй, үйлчлүүлэгч нь галт хана эсвэл NAT-ийн ард хялбархан ажилладаг бөгөөд сүлжээг хакердахад маш хэцүү (би "боломжгүй" гэж хэлэх болно), учир нь зарчмын хувьд энэ нь сүлжээг сонсдоггүй. залгуур.

Хяналтын бүрэн хамрах хүрээ

Одоо бидний дүрэм бол бид техникийн бүх асуудлыг okerr-ээс сурдаг. Хэрэв гэнэт дүрэм зөрчигдсөн бол (окерр удахгүй болох тухай (хэрэв энэ нь боломжтой бол) эсвэл аль хэдийн тохиолдсон тухай анхааруулаагүй) - бид okerr-д чек нэмнэ.

Гадаад шалгалт

Ердийн багц:

  • ширээний
  • http статус
  • SSL сертификатын хүчинтэй байдал, шинэлэг байдлыг шалгах (хэрэв хугацаа дуусах гэж байгаа бол анхааруулах болно)
  • TCP порт болон түүн дээр баннерыг нээнэ үү
  • http grep (хуудас [заавал] тодорхой текст агуулсан байх ёстой)
  • хуудасны өөрчлөлтийг барихын тулд sha1 хэш.
  • DNS (DNS бичлэг нь тодорхой утгатай байх ёстой)
  • WHOIS (хэрэв домэйн муудах гэж байгаа бол анхааруулах болно)
  • Antispam DNSBL (хостыг нэг дор 50 гаруй спам хар жагсаалтаас шалгана уу)

Дотоод шалгалт

Мөн нэлээд стандарт багц (гэхдээ амархан өргөтгөх боломжтой).

  • df (дискний хоосон зай)
  • ачааллын дундаж
  • opentcp (нээлттэй TCP сонсох залгуурууд - ямар нэг зүйл эхэлсэн эсвэл эвдэрсэн тохиолдолд мэдэгдэх болно)
  • ажиллах хугацаа - зөвхөн сервер дээр ажиллах хугацаа. Хэрэв энэ нь буурсан бол мэдэгдэх болно (жишээ нь сервер хэт ачаалалтай байна)
  • client_ip
  • dirsize - бид үүнийг хатуу хязгаарлалтгүйгээр виртуал машины rootfs зөвшөөрөгдсөн хэмжээнээс хэтэрсэн үед болон хэрэглэгчийн гэрийн лавлахуудын хэмжээг хянахад ашигладаг.
  • хоосон ба хоосон - хоосон (эсвэл хоосон биш) байх ёстой файлуудыг хянах. Жишээлбэл, 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/runline

Эдгээр нь сервер дээр бусад програмуудыг ажиллуулах хоёр чухал прокси модуль юм. Runstatus програмаас гарах кодыг заагч руу мэдээлдэг. Жишээлбэл, okerr нь системийн үйлчилгээ ажиллаж байгаа эсэхийг шалгах модулийг шаарддаггүй (шаардлагатай). Энэ нь runstatus-ээр хийгддэг (доороос харна уу). Runline - програмын үүсгэсэн мөрийг серверт мэдээлдэг. Жишээлбэл, temp_RUN="cat /sys/class/thermal/thermal_zone0/temp" Манай сервер дээрх Runline тохиргоонд серверийн нэр: температурыг процессорын температуртай индикатор үүсгэдэг.

sql

MySQL-д тоон асуулга ажиллуулж, үр дүнг индикаторт мэдээлнэ. Энгийн тохиолдолд та жишээ нь "SELECT 1" хийж болно - энэ нь DBMS бүхэлдээ ажиллаж байгаа эсэхийг шалгах болно.

Гэхдээ илүү сонирхолтой програм бол жишээлбэл, онлайн дэлгүүрийн захиалгын тоог хянах явдал юм. Хэрэв та цагт 100 ба түүнээс дээш захиалгатай гэдгээ мэдэж байгаа бол доод хязгаарыг 100 эсвэл 80 болгож тохируулж болно. Дараа нь таны борлуулалт гэнэт буурсан тохиолдолд танд анхааруулга ирэх бөгөөд та үүнийг олж мэдэх боломжтой.

Энэ нь урьдчилан тааварлашгүй шалтгаанаар болсон нь хамаагүй гэдгийг анхаарна уу:

  • Серверийг ашиглах боломжгүй (эрчимгүй эсвэл сүлжээгүй) бөгөөд дохиолол нь "ялзарсан" гэсэн дохио юм.
  • Сервер ямар нэг зүйлээр ачаалал ихтэй, удаан ажилладаг эсвэл пакет алга болсон, хэрэглэгчдэд тохиромжгүй, худалдан авалт хийлгүй орхидог.
  • Сервер нь спамын жагсаалтад орсон бөгөөд үүнээс ирсэн имэйлийг хүлээн авахгүй, хэрэглэгчид бүртгүүлэх боломжгүй
  • Сурталчилгааны кампанит ажлын төсөв дуусч, баннер эргэлдэхгүй байна.

Олон тооны шалтгаан байж болох бөгөөд бүгдийг нь урьдчилан таамаглах боломжгүй бөгөөд үүнийг хянах нь техникийн хувьд хэцүү байдаг. Гэхдээ та эцсийн параметрийг (захиалга) хялбархан хянаж, нөхцөл байдал нь сэжигтэй бөгөөд шийдвэрлэх ёстой гэдгийг тодорхойлох боломжтой.

Логик үзүүлэлтүүд

Модуль ашиглан Boolean илэрхийлэл (Python синтакс) ашиглахыг зөвшөөрдөг баталгаажуулах(Хабрегийн тухай нийтлэл). Төслийн өгөгдөл болон түүний үзүүлэлтүүдийг илэрхийлэх боломжтой. Жишээлбэл, дээрх SQL-ийн шалгалтын тухай бүлэгт та сул талыг анзаарсан байх - өдрийн цагаар бид цагт 100 борлуулалт хийх боломжтой, харин шөнөдөө - 20, энэ нь нийтлэг зүйл бөгөөд асуудал биш юм. Би юу хийх хэрэгтэй вэ? Шөнийн цагаар индикатор нь байнга сандрах болно.

Та өдөр, шөнө гэсэн хоёр үзүүлэлтийг үүсгэж болно. Хоёуланг нь "чимээгүй" болго (тэд анхааруулга илгээхгүй). Мөн өдрийн индикатор 20:00 цагаас өмнө хэвийн, 20:00 цагаас хойш шөнийн үзүүлэлт хэвийн байхад хангалттай байх ёстой логик үзүүлэлтийг бий болго.

Логик үзүүлэлтийг ашиглах өөр нэг жишээ юм өсөх байдал. Жишээлбэл, төслийн менежер анхааруулга өгөхөөс татгалздаг (үүнийг хийх шаардлагагүй, админ нь ердийн асуудалд хариу өгөх ёстой), гэхдээ төсөлд ямар нэг үзүүлэлтийг заасан хугацаанд засаагүй бол улаан болж хувирдаг логик үзүүлэлтийг захиалж болно.

Мөн ажлын зөвшөөрөгдсөн цагийг, жишээлбэл, өглөөний 3-аас 5 цаг хүртэл тохируулах боломжтой. Энэ хугацаанд сервер болон сайтууд гацах нь бидэнд хамаагүй. Гэхдээ 5:00 цагт тэд ажиллах ёстой. Хэрэв тэд өөр цагт ажиллахгүй бол - сэрэмжлүүлэг. Логик үзүүлэлт нь серверийн илүүдэлтэй байдлыг харгалзан үзэх боломжийг олгодог. Хэрэв танд 5 вэб сервер байгаа бол админууд хүссэн үедээ 1-2 серверийг унтрааж болно. Харин тулалдаанд 3 серверээс 5-аас бага сервер байвал дохиолол ирнэ.

Дээрх жишээнүүд нь oker функц биш, идэвхжүүлж, тохируулах шаардлагатай зарим функц биш юм. Okerra-д эдгээр бүх функц байхгүй, гэхдээ энэ функцийг хэрэгжүүлэх боломжийг олгодог логик модуль байдаг (Ойролцоогоор програмчлалын хэл дээрх шиг - хэрэв бидэнд арифметик операторууд байгаа бол 20% НӨАТ-ыг тооцоолох тусгай функц хэрэггүй болно. Хэлнээс та үүнийг үргэлж өөрөө хийж болно, үүнийг өөрийн хэрэгцээнд тохируулан хийнэ үү).

Логик Үзүүлэлт нь магадгүй okerr дахь харьцангуй төвөгтэй цөөн хэдэн сэдвүүдийн нэг юм, гэхдээ сайн мэдээ гэвэл та үүнийг шаардлагатай болтол эзэмших шаардлагагүй юм. Гэхдээ үүнтэй зэрэгцэн тэд системийг өөрөө маш энгийн байлгахын зэрэгцээ боломжуудыг ихээхэн өргөжүүлдэг.

Өөрийнхөө чекүүдийг нэмж байна

Би okerr бол бүх тохиолдлуудад зориулагдсан олон мянган бэлэн чек биш, харин эсрэгээрээ - юуны түрүүнд өөрийн чек үүсгэх энгийн чадвартай энгийн хөдөлгүүр юм гэсэн санааг хэлэхийг үнэхээр хүсч байна. Okerr дээр өөрийн чек үүсгэх нь хакерууд, системийн хамтран хөгжүүлэгчид, эсвэл ядаж ахисан түвшний okerr хэрэглэгчдийн хувьд хийх ажил биш бөгөөд сарын өмнө анх удаа Линукс суулгасан админуудын хувьд боломжтой ажил юм.

Хөдөлмөрийн хөлсний доод хэмжээний шалгалтыг модулиар дамжуулан хийдэг ажиллуулах статус:

Энэ мөр нь тохиргоонд ажиллуулах статус /bin/true гэнэт эхлэхгүй эсвэл 0-ээс өөр зүйл буцаавал танд мэдэгдэх болно.

true_OK=/bin/true

Зөвхөн нэг мөр - энд бид аль хэдийн жаахан байна өргөтгөсөн функциональ байдал.

Ийм шалгалт ч гэсэн өөрийн гэсэн утгатай болсон: хэрэв таны сервер гэнэт эвдэрсэн бол 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 бот байдаг @OkerrBot. Та утсаа тусдаа програмаар дүүргэх шаардлагагүй (Пятерочкагийн хувьд танд газрын зураг бүхий нэг програм, Лентагийн хувьд өөр, MTS-ийн гурав дахь програм гэх мэт бүгдэд, бүгдэд нь хэрэгтэй) таалагдахгүй байна. Нэг телеграм хангалттай. Телеграмаар дамжуулан та яаралтай сэрэмжлүүлэг хүлээн авч, төслийн статусыг шалгаж, бүх асуудалтай үзүүлэлтүүдийг дахин шалгах тушаал өгөх боломжтой. Бид театр/онгоцноос гарч, хоёр цагийн турш хуруугаа дарсангүй, утсаа асаагаад, чатбот дахь нэг товчлуур дээр дарж, бүх зүйл хэвийн байгаа эсэхийг шалгав.

Статусын хуудсууд

Өнөө үед статусын хуудсууд нь мэдээллийн технологитой, найдвартай байдалд хариуцлагатай ханддаг, үйлчлүүлэгч/хэрэглэгчдээ хүндэтгэлтэй ханддаг аливаа бизнест байх ёстой зүйл юм.

Нөхцөл байдлыг төсөөлөөд үз дээ - хэрэглэгч ямар нэг зүйл хийхийг хүсч, мэдээлэл харах эсвэл захиалга өгөхийг хүсч байгаа бөгөөд ямар нэг зүйл ажиллахгүй байна. Тэр юу болоод байгааг, асуудал хэний талд байгаа, хэзээ шийдэгдэхийг мэдэхгүй. Магадгүй танай компани зүгээр л ажиллагаагүй вэбсайттай байж болох уу? Эсвэл зургаан сарын өмнө эвдэрчихээд хоёр жилийн дараа засах болов уу? Харин одоо хөргөгч худалдаж авах хэрэгтэй, тэр нь тэргэнцэрт байгаа... Тэгээд хүн танд ямар нэг зүйл буруу байгааг (ядаж л асуудал нь түүний талд биш гэдэг нь ойлгомжтой) харвал тэс өөр хэрэг. Асуудал илэрсэн тул та үүн дээр аль хэдийн ажиллаж байгаа бөгөөд магадгүй засч залруулах цагийг ч бичиж болно. Асуудал шийдэгдэж, хүссэн зүйлээ хийх боломжтой (хөргөгч худалдаж авах) хэрэглэгч захиалж, имэйлээр мэдэгдэл хүлээн авах боломжтой.

Okerr гибрид хяналтын системийн тойм

Асуудал, сул зогсолт нь хүн бүрт тохиолддог. Гэхдээ хэрэглэгчид болон түншүүд үүнд илүү ил тод, хариуцлагатай ханддаг хүмүүст илүү итгэдэг.

энд статусын хуудас үүсгэх боломжийг олгодог бусад 10 төслийн тойм. Эдгээр төслийн хуудсууд хэрхэн харагдахыг харуулсан жишээ энд байна Python и Dropbox. okerr статусын хуудас.

Нөхцөл

Энэ нийтлэлийг илүү урт болгохгүйн тулд би өмнөх нийтлэлээ дахин нэг удаа дурдах болно. Вэбсайтад зориулсан энгийн шилжүүлэлт . Хэрэв та давхар сервер хийж чадвал бүтэлгүйтлийг ашигласнаар та үндсэндээ удаан зогсохгүй - асуудал илэрсэн даруйд хэрэглэгчид автоматаар ажиллаж байгаа нөөц сервер рүү шилжих болно. Энэ бол хаана ч байхгүй маш сонирхолтой, тод шинж чанар юм шиг надад санагдаж байна.

Системийн шаардлага бага

Okerr серверүүдийн хувьд бид 2Gb-ээс RAM-тай машинуудыг ашигладаг. Сүлжээний мэдрэгчийн хувьд 512 Мб хүртэл хангалттай. Үйлчлүүлэгчийн хэсэг нь ерөнхийдөө бараг тэг байна. (Гялгар уут okerruptdate 26 Kb жинтэй боловч Python3 болон стандарт номын сангуудыг шаарддаг). Үйлчлүүлэгч нь cron скриптээс ажилладаг тул байнгын санах ойн хэрэглээ тэг болно. Бидний хянаж байсан машинуудын дунд мэдрэгч (512 Мб RAM-тай маш хямд VPS) болон Raspberry Pi байдаг. Энэ нь үйлчлүүлэгчийн хэсэггүйгээр ч боломжтой curl-ээр дамжуулан шинэчлэлтүүдийг илгээх! (доороос үзнэ үү)

Үүнийг харгалзан үзвэл - okerr, магадгүй хамгийн үнэ төлбөргүй байгаа системүүдээс хяналтын систем, учир нь 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 сертификатууд. Бараг л хөөргөсний дараа Шифрлэх Манай үйлчлүүлэгч үйлчлүүлэгчдэдээ үнэ төлбөргүй 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). Эмзэг байдал гарч ирэхэд бид үүнийг янз бүрийн аргаар хурдан далдалсан. Гэхдээ би "сайхан" шийдэл хэзээ гарахыг мэдэхийн тулд okerr дахь аюулгүй байдлын хяналтын хуудасны хяналтыг тохируулсан (агуулгын SHA1 нийлбэрээр). Энэ индикатор намайг хэд хэдэн удаа эргүүлж, хуудас өөрчлөгдсөн боловч таны харж байгаагаар (2019 оны XNUMX-р сараас хойш!) асуудал шийдэгдсэнийг илтгэхгүй байна. Магадгүй, дашрамд хэлэхэд, ийм чухал багц нэг жилээс илүү хугацаанд эмзэг хэвээр байгаа нь ямар асуудал байгааг хэн нэгэн мэдэх болов уу?

Үүнтэй төстэй нөхцөл байдалд өөр нэг удаа: 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-ээс мэдэгдэхүйц бага тогтвортой байсан гэж би хэлэхгүй. Тиймээс, хэрэв та Амазоны бусад функцуудтай холбоогүй бол яагаад илүү их мөнгө төлөх вэ? 🙂

Дараа нь юу юм бэ?

Хэрэв энэ шатанд би чамайг Океррээс холдуулж амжаагүй байгаа бол оролдоод үзээрэй! Та энэ холбоос руу шууд орж болно okerr демо данс (Одоо товшино уу!) Гэхдээ хүн бүрт зориулсан ганцхан демо данс байдаг тул та ямар нэг зүйл хийвэл нэг дансанд байгаа өөр хэн нэгэн танд нэгэн зэрэг саад учруулж болзошгүйг санаарай. Эсвэл (илүү сайн) холбоосоор бүртгүүлнэ үү сайтаас гадуур okerr - бүх зүйл энгийн, SMSгүйгээр. Хэрэв та жинхэнэ имэйлээ ашиглах дургүй бол шуудангийн илгээгч гэх мэт нэг удаагийн имэйлийг ашиглаж болно (би зөвлөж байна. getnada.com). Ийм акаунтуудыг цаг хугацааны явцад устгаж болох ч туршилт хийхэд тохиромжтой.

Бүртгүүлсний дараа та сургалтанд хамрагдахыг хүсэх болно (маш хэцүү биш хэд хэдэн сургалтын даалгаврыг гүйцэтгэнэ). Анхны хязгаарлалт нь маш бага боловч сургалт эсвэл нэг серверт хангалттай. Сургалтыг дуусгасны дараа хязгаарыг (жишээлбэл, шалгуур үзүүлэлтүүдийн хамгийн их тоо) нэмэгдүүлнэ.

Баримт бичгээс - юуны түрүүнд WIKI сервер тал болон үйлчлүүлэгч дээр (wiki-г okerrupdate). Гэхдээ ямар нэг зүйл тодорхойгүй байвал support (at) okerr.com руу бичнэ үү эсвэл тасалбар үлдээгээрэй - бид бүх зүйлийг хурдан шийдэхийг хичээх болно.

Хэрэв та үүнийг нухацтай ашиглаж байгаа бөгөөд эдгээр нэмэгдсэн хязгаарууд хангалтгүй бол дэмжлэг рүү бичээрэй, бид үүнийг нэмэгдүүлэх болно (үнэгүй).

Та сервер дээрээ okerr сервер суулгахыг хүсэж байна уу? Энд okerr-dev хадгалах газар. Бид цэвэр виртуал машин дээр суулгахыг зөвлөж байна, тэгвэл та үүнийг суулгах скриптээр л хийж болно. Таны виртуал машин дээр - хязгаарлалт байхгүй :-). Дахин хэлэхэд ямар нэг зүйл тохиолдвол бид үргэлж туслахыг хичээх болно.

Бидний ачаар дэлхий илүү найдвартай болохын тулд бид энэ төсөл хэрэгжихийг хүсч байна. Үнэгүй програм хангамж, үйлчилгээний ачаар дэлхий илүү найрсаг болж, илүү динамикаар хөгжиж байна. Эх сурвалжийг үнэгүй github-д хадгалах боломжтой бөгөөд шуудангийн хувьд та үнэгүй gmail ашиглаж болно. Бид үнэгүй ашигладаг шинэ ажил дэмжлэгийн төлөө. Эдгээрийн аль нэгний хувьд та серверийн төлбөр төлөх шаардлагагүй, та татаж авах, тохируулах шаардлагагүй, мөн янз бүрийн үйлдлийн асуудлыг шийдэх шаардлагагүй. Шинэ төсөл бүр, баг бүр шуудан, хадгалах газар, CRM-тэй байдаг. Мөн энэ бүхэн маш өндөр чанартай, үнэ төлбөргүй, тэр даруй юм. Бид мониторингийн хувьд ижил байхыг хүсч байна - жижиг компаниуд болон төслүүд нь okerr-ийг үнэ төлбөргүй ашиглах боломжтой, тэр ч байтугай төрөлт, өсөлтийн үе шатанд насанд хүрэгчдийн ноцтой төслүүдийн найдвартай байдлыг хангаж чадна.

Эх сурвалж: www.habr.com