Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

SRE/DevOps инженерлеринин чөйрөсүндө бир күнү кардар (же мониторинг системасы) пайда болуп, "баары жоголду" деп кабарлашы эч кимди таң калтырбайт: сайт иштебейт, төлөмдөр өтпөйт, жашоо чирип баратат. ... Мындай кырдаалда канчалык жардам бергиң келбесин, муну жөнөкөй жана түшүнүктүү куралсыз жасоо абдан кыйын болушу мүмкүн. Көп учурда көйгөй колдонмонун кодунда жашырылган;

Жана кайгыда да, кубанычта да…

Ошентип, биз New Relicти көптөн бери сүйүп калдык. Бул тиркемелердин иштешине мониторинг жүргүзүү үчүн эң сонун курал болгон жана болуп кала берет, ошондой эле микросервис архитектурасын (анын агентин колдонуу менен) жана башка көптөгөн нерселерди аспаптоого мүмкүндүк берет. Кызматтын баа саясатында өзгөрүүлөр болбогондо баары сонун болмок: ал баасы 2013 жыл 3+ эсе өстү. Кошумчалай кетсек, өткөн жылдан бери сыноо эсебин алуу үчүн жеке менеджер менен байланыш керек, бул потенциалдуу кардарга продуктуну көрсөтүүнү кыйындатат.

Кадимки абал: Жаңы реликти "туруктуу негизде" керек эмес, алар көйгөйлөр башталганда гана эстешет. Бирок сиз дагы эле үзгүлтүксүз төлөшүңүз керек (айына бир серверге 140 АКШ доллары) жана автоматтык түрдө масштабдалуучу булут инфраструктурасында суммалар бир топ чоң сумманы түзөт. Барган сайын төлөө опциясы бар болсо да, New Relicти иштетүү сизден тиркемени кайра баштоону талап кылат, бул анын баары башталган көйгөйлүү кырдаалдын жоголушуна алып келиши мүмкүн. Жакында New Relic жаңы тарифтик планды киргизди - негиздери, - бул бир караганда Профессионалга акылга сыярлык альтернатива болуп көрүнөт... бирок жакшылап карап чыкканда кээ бир маанилүү функциялар жок экени белгилүү болду (атап айтканда, ал жок. Негизги транзакциялар, Колдонмонун кайчылаш көзөмөлдөө, Бөлүштүрүлгөн Tracing).

Жыйынтыгында биз арзаныраак альтернатива издөөнү ойлоно баштадык жана биздин тандообуз эки сервиске түштү: Datadog жана Atatus. Эмне үчүн аларга?

Атаандаштар жөнүндө

Базарда башка чечимдер бар экенин дароо айтайын. Биз Open Source варианттарын да карап чыктык, бирок ар бир кардар өз алдынча жайгаштырылган чечимдерди кабыл алуу мүмкүнчүлүгүнө ээ боло бербейт... - Мындан тышкары, алар кошумча тейлөөнү талап кылат. Биз тандаган жубайлар эң жакын болуп чыкты биздин муктаждыктарыбыз:

  • PHP тиркемелери үчүн орнотулган жана иштелип чыккан колдоо (биздин кардарлардын стеки абдан ар түрдүү, бирок бул New Relic альтернативасын издөө контекстинде айкын лидер);
  • жеткиликтүү наркы (бир хост үчүн айына 100 АКШ долларынан аз);
  • автоматтык приборлор;
  • Kubernetes менен интеграция;
  • New Relic интерфейсинин окшоштугу байкаларлык плюс (анткени биздин инженерлер көнүп калышкан).

Ошондуктан, алгачкы тандоо этабында биз бир нече башка популярдуу чечимдерди жок кылдык, атап айтканда:

  • Tideways, AppDynamics жана Dynatrace - наркы үчүн;
  • Stackify Россия Федерациясында бөгөттөлгөн жана өтө аз маалыматтарды көрсөтөт.

Макаланын калган бөлүгү каралып жаткан чечимдер адегенде кыскача баяндалат, андан кийин мен New Relic менен кадимки өз ара аракеттенишибиз жана башка кызматтарда ушул сыяктуу операцияларды аткаруудан алган тажрыйба/таасирлер жөнүндө сүйлөшөм.

Тандалган атаандаштардын презентациясы

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо
боюнча Болумушту акча, балким, баары уккандыр? Бул кызмат 10 жылдан ашык убакыт мурун, 2008-жылы иштеп баштаган. Биз аны 2012-жылдан бери жигердүү колдонуп келебиз жана PHP, Ruby жана Python тилдеринде чындап эле көп сандагы тиркемелерди интеграциялоодо эч кандай көйгөйлөр болгон жок, ошондой эле C# жана Go менен интеграциялоо тажрыйбасына ээ болдук. Кызматтын авторлору тиркемелерди, инфраструктураны көзөмөлдөө, микросервистик инфраструктураларды көзөмөлдөө, колдонуучунун түзүлүштөрү үчүн ыңгайлуу тиркемелерди түзүү жана башка көптөгөн чечимдерге ээ.

Бирок, New Relic агенти проприетардык протоколдордо иштейт жана OpenTracingди колдобойт. Өркүндөтүлгөн приборлор New Relic үчүн атайын оңдоолорду талап кылат. Акыр-аягы, Kubernetes колдоосу дагы эле эксперименталдык.

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо
Анын өнүгүшү 2010-жылы башталган datadog Kubernetes чөйрөлөрүндө колдонуу жагынан New Relicке караганда кыйла кызыктуу көрүнөт. Тактап айтканда, ал NGINX Ingress, журналдарды чогултуу, statsd жана OpenTracing протоколдору менен интеграцияны колдойт, бул колдонуучунун өтүнүчүнө ал аяктагандан баштап көз салууга, ошондой эле бул суроонун журналдарын табууга мүмкүндүк берет (экөө тең веб-сервер тарабында). жана керектөөчүгө).

Datadog колдонууда, биз ал кээде микросервис картасын туура эмес курганына жана кээ бир техникалык кемчиликтерге туш болдук. Мисалы, ал кызматтын түрүн туура эмес аныктаган (Джангоду кэш кызматы деп адашып) жана популярдуу Predis китепканасын колдонгон PHP тиркемесинде 500 ката кетирген.

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо
Ататус — эң жаш аспап; кызмат 2014-жылы ишке киргизилген. Анын маркетингдик бюджети саналып өткөн атаандаштарынан айкын төмөн, айтылгандар азыраак кездешет. Бирок, куралдын өзү New Relicке абдан окшош, анын мүмкүнчүлүктөрү (APM, Браузердин мониторинги ж.б.) гана эмес, сырткы көрүнүшү боюнча да.

Маанилүү кемчилиги бул Node.js жана PHPди гана колдойт. Башка жагынан алганда, ал Datadog караганда байкаларлык жакшы ишке ашырылат. Акыркысынан айырмаланып, Atatus тиркемелерден кодго өзгөртүүлөрдү киргизүүнү же кошумча энбелгилерди кошууну талап кылбайт.

Биз New Relic менен кантип иштейбиз

Эми биз New Relicти жалпысынан кантип колдонобуз. Чечүүнү талап кылган көйгөй бар дейли:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Аны графиктен көрүү оңой чачуу - Келгиле, анализдеп көрөлү. New Relicте веб транзакциялар дароо эле веб-тиркеме үчүн тандалып алынат, бардык компоненттер аткаруу графигинде көрсөтүлөт, каталардын ылдамдыгы, суроо-талаптын панелдери бар... Эң негизгиси, түздөн-түз ушул панелдерден сиз ар кандай программалардын ортосунда жыла аласыз. тиркеменин бөлүктөрү (мисалы, MySQL чыкылдатуу маалымат базасы бөлүмүнө алып келет).

Каралып жаткан мисалда биз активдүүлүктүн өсүшүн көрүп жатабыз PHP, бул диаграмманы чыкылдатып, автоматтык түрдө өтүңүз бүтүмдөр:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Негизинен MVC моделиндеги контроллерлор болгон транзакциялардын тизмеси мурунтан эле иреттелген Көпчүлүк убакытты талап кылат, бул абдан ыңгайлуу: биз дароо колдонмо эмне кылып жатканын көрөбүз. Бул жерде New Relic тарабынан автоматтык түрдө чогултулган узун суроонун мисалдары келтирилген. Сорттоону которуу менен, аны табуу оңой:

  • эң көп жүктөлгөн колдонмо контроллери;
  • эң көп суралган контроллер;
  • контролерлордун эң жайдары.

Мындан тышкары, сиз ар бир транзакцияны кеңейтип, код аткарылган учурда колдонмо эмне кылып жатканын көрө аласыз:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Акыр-аягы, тиркеме узак сурамдардын изинин мисалдарын сактайт (2 секунддан ашык убакытты талап кылгандар). Бул жерде узак транзакция үчүн панел:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Көрүнүп тургандай, эки ыкма көп убакытты талап кылат жана ошол эле учурда суроо-талап аткарылган учурда, анын URI жана домени да көрсөтүлөт. Көп учурда бул журналдардан сурамды табууга жардам берет. Бара жатам Издөө чоо-жайы, бул ыкмалардын кайдан чакырылганын көрө аласыз:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

жана Берилиштер базасы сурамдары — колдонмо иштеп турганда аткарылган маалыматтар базасына суроо-талаптарды баалоо:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Бул билим менен куралданып, биз колдонмо эмне үчүн жайлап жатканын баалайбыз жана маселени чечүү үчүн стратегияны иштеп чыгуучу менен иштеше алабыз. Чындыгында, New Relic дайыма эле так сүрөттөлүштү бере бербейт, бирок бул иликтөөнүн векторун тандоого жардам берет:

  • узун PDO::Construct пгполлдун кызыктай иштешине алып келди;
  • убакыттын өтүшү менен туруксуздук Memcache::Get виртуалдык машина туура эмес конфигурацияланган деп сунуштады;
  • шаблонду иштетүү үчүн шектүү түрдө көбөйгөн убакыт объект сактагычында 500 аватардын бар-жоктугун текшерүүчү уяча циклге алып келди;
  • жана башкалар…

Ошондой эле, кодду аткаруунун ордуна негизги экранда тышкы маалыматтарды сактоого байланыштуу бир нерсе өсөт - жана анын кандай болору маанилүү эмес: Redis же PostgreSQL - алардын баары өтмөктө жашырылган. маалымат базалары.

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Изилдөө жана сорттоо үчүн белгилүү бир базаны тандап алсаңыз болот - транзакциялардагыдай эле. Сурам өтмөгүнө өтүү менен, бул сурам ар бир тиркеме контроллерлорунда канча жолу болоорун көрө аласыз, ошондой эле анын канчалык көп чакырылганын баалай аласыз. Бул абдан ыңгайлуу:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Өтмөктө окшош маалыматтар камтылган Тышкы кызматтар, ал тышкы HTTP кызматтарына суроо-талаптарды жашырат, мисалы, объект сактагычка кирүү, окуяларды кароолчуга жөнөтүү же ушул сыяктуу. Өтмөктүн мазмуну маалымат базаларына толугу менен окшош:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Атаандаштар: мүмкүнчүлүктөр жана таасирлер

Эми эң кызыктуусу - New Relicтин мүмкүнчүлүктөрүн атаандаштар сунуштаган нерселер менен салыштыруу. Тилекке каршы, биз өндүрүштө иштеп жаткан бир колдонмонун бир версиясында үч куралды тең сынай алган жокпуз. Бирок, биз мүмкүн болушунча бирдей болгон жагдайларды/конфигурацияларды салыштырууга аракет кылдык.

1. Datadog

Datadog бизди кызматтардын дубалы бар панел менен тосуп алат:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Ал тиркемелерди компоненттерге/микросервистерге бөлүүгө аракет кылат, ошондуктан мисал Django тиркемесинде PostgreSQLге 2 байланышты көрөбүз (defaultdb и postgres), ошондой эле сельдерей, Редис. Datadog менен иштөө сизден MVC принциптери боюнча минималдуу билимге ээ болушуңузду талап кылат: колдонуучунун суроо-талаптары көбүнчө кайдан келерин түшүнүшүңүз керек. Бул, адатта, жардам берет кызматтар картасы:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Баса, New Relicте окшош нерсе бар:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

... жана алардын картасы, менин оюмча, жөнөкөй жана түшүнүктүүраак: ал бир тиркеменин компоненттерин көрсөтпөйт (бул аны Datadog окуясындагыдай өтө деталдуу кылат), бирок белгилүү бир кызматтарды же микросервистерди гана көрсөтөт.

Келгиле, Датадогго кайрылып көрөлү: тейлөө картасынан биз колдонуучулардын суроо-талаптары Djangoго келип жатканын көрөбүз. Келгиле, Django кызматына барып, акыры биз эмне күткөнүбүздү көрөлү:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Тилекке каршы, демейки боюнча бул жерде эч кандай график жок Веб транзакция убактысы, негизги New Relic панелинен көргөнүбүзгө окшош. Бирок, аны графиктин ордуна конфигурациялоого болот Сарпталган убакыттын %. Аны которуу жетиштүү Түрү боюнча сурамдын орточо убактысы... эми тааныш график бизди карап турат!

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Эмне үчүн Datadog башка диаграмманы тандап алганы биз үчүн табышмак. Дагы бир капаланткан нерсе, система колдонуучунун тандоосун эстей албайт (экөө тең атаандаштарынан айырмаланып), ошондуктан бир гана чечим - ыңгайлаштырылган панелдерди түзүү.

Бирок мен Datadog'тун бул графиктерден тиешелүү серверлердин метрикасына өтүү, журналдарды окуу жана веб-сервер иштетүүчүлөрүнүн (Gunicorn) жүктөмүн баалоо мүмкүнчүлүгүнө ыраазы болдум. Баары дээрлик New Relicтегидей эле... жана дагы бир аз көбүрөөк (логдор)!

Графиктердин астында New Relicке толугу менен окшош транзакциялар бар:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Datadog'та транзакциялар деп аталат ресурстар. Сиз контроллерлорду суроо-талаптардын саны, орточо жооп берүү убактысы жана тандалган убакытка сарпталган максималдуу убакыт боюнча иреттей аласыз.

Сиз ресурсту кеңейтип, New Relicте биз байкаган нерселердин бардыгын көрө аласыз:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Ресурс боюнча статистикалык маалыматтар, ички чалуулардын жалпыланган тизмеси жана жооп коддору боюнча иргеле турган суроо-талаптардын мисалдары бар... Айтмакчы, бул сорттоо биздин инженерлерге абдан жакты.

Datadog ичиндеги каалаган мисал ресурсту ачып, изилдесе болот:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Сурамдын параметрлери, ар бир компонентке сарпталган убакыттын кыскача диаграммасы жана чалуулардын ырааттуулугун көрсөткөн шаркыратма диаграммасы берилген. Ошондой эле шаркыратма диаграммасынын дарак көрүнүшүнө которула аласыз:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Эң кызыгы, суроо-талап аткарылган хосттун жүгүн көрүү жана суроо-талап журналдарын көрүү.

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Улуу интеграция!

Сиз өтмөктөр кайда деп таң калышыңыз мүмкүн маалымат базалары и Тышкы кызматтар, New Relic сыяктуу. Бул жерде эч ким жок: Datadog тиркемени компоненттерге ажыраткандыктан, PostgreSQL каралат өзүнчө кызмат, жана Тышкы кызматтардын ордуна аны издөө керек aws.storage (бул тиркеме кире алган башка тышкы кызматтар үчүн окшош болот).

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Бул жерде бир мисал postgres:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Негизи биз каалагандын баары бар:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Сурам кайсы "кызматтан" келгенин көрө аласыз.

Datadog NGINX Ingress менен эң сонун интеграцияланганын жана кластерге суроо-талап түшкөн учурдан тартып аягына чейин байкоо жүргүзүүгө, ошондой эле статистикалык көрсөткүчтөрдү алууга, журналдарды жана хост метрикаларын алууга мүмкүнчүлүк берерин эскертип коюу туура эмес. .

Datadog чоң плюс анын баасы болуп саналат өнүктүрөт инфраструктуранын мониторингинен, APM, Log Management жана Synthetics тестинен, б.а. Сиз планыңызды ийкемдүү тандай аласыз.

2.Ататус

Ататустун командасы алардын кызматы "Жаңы реликтикке окшош, бирок жакшыраак" деп ырастайт. Келгиле, бул чын эле ошондойбу, көрөлү.

Негизги панель окшош көрүнөт, бирок колдонмодо колдонулган Redis жана memcachedди аныктоо мүмкүн болгон жок.

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

APM демейки боюнча бардык транзакцияларды тандайт, бирок адатта веб транзакциялар гана керек. Datadog сыяктуу эле, негизги панелден каалаган кызматка өтүүгө эч кандай жол жок. Анын үстүнө, транзакциялар каталардан кийин тизмеленген, бул APM үчүн абдан логикалуу көрүнбөйт.

Ататус транзакцияларында бардыгы New Relic менен мүмкүн болушунча окшош. Кемчилиги - ар бир контроллердин динамикасы дароо эле байкалбайт. Сиз аны контроллер таблицасында, сорттоо боюнча издешиңиз керек Эң көп убакыт керектелет:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Адатта контроллерлордун тизмеси өтмөктө бар изилдөө:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Кандайдыр бир мааниде бул таблица Datadogду эске салат жана мага New Relicтеги окшошуна караганда жакшыраак жагат.

Ар бир транзакцияны кеңейтип, колдонмо эмне кылып жатканын көрө аласыз:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Панел дагы Datadogду көбүрөөк эске салат: бир катар суроо-талаптар, чалуулар жалпы сүрөтү бар. Жогорку панели ката өтмөгүн камсыз кылат HTTP каталары жана жай сурамдардын мисалдары Сеанстын издери:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Эгерде сиз транзакцияга барсаңыз, анда сиз издин мисалын көрө аласыз, сиз маалымат базасына суроо-талаптардын тизмесин ала аласыз жана суроо-талаптын аталыштарын карай аласыз. Баары New Relic менен окшош:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Жалпысынан алганда, Ататус деталдуу издер менен ыраазы болду - эскертүү блогуна чалууларды жаңы реликти жабыштырбастан:

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо
Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Бирок, анда (New Relic сыяктуу) ультра тез суроо-талаптарды (<5 мс) өчүрө турган чыпка жок. Башка жагынан алганда, мен акыркы транзакциянын жообун көрсөтүүнү жактырдым (ийгилик же ката).

Панел маалымат базалары колдонмо жасаган тышкы маалымат базаларына суроо-талаптарды изилдөөгө жардам берет. Эске сала кетейин, Ататус PostgreSQL жана MySQL гана тапкан, бирок Redis жана memcached да долбоорго тартылган.

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Сурамдар кадимки критерийлер боюнча иргелет: жооп берүү жыштыгы, орточо жооп берүү убактысы жана башкалар. Мен ошондой эле эң жай сурамдары бар өтмөктү белгилегим келет - бул абдан ыңгайлуу. Мындан тышкары, PostgreSQL үчүн бул өтмөктөгү маалыматтар кеңейтүүнүн маалыматтары менен дал келген pg_stat_statements - сонун натыйжа!

Жалгыз жаңы реликт эмес: Датадог менен Ататуска кароо

Tab Тышкы өтүнүчтөр маалымат базаларына толугу менен окшош.

табылгалары

Экөө тең сунушталган куралдар APM ролун жакшы аткарышты. Алардын ар бири талап кылынган минимумду сунуштай алат. Биздин таасирлерибиз кыскача төмөнкүчө чагылдырууга болот:

datadog

артыкчылыктары:

  • ыңгайлуу тарифтик график (APM бир хост үчүн 31 АКШ доллары турат);
  • Python менен жакшы иштеген;
  • OpenTracing менен интеграциялоо мүмкүнчүлүгү
  • Kubernetes менен интеграция;
  • NGINX Ingress менен интеграция.

жактары:

  • модулдун катасынан улам колдонмо жеткиликсиз болуп калган жалгыз APM (предис);
  • начар PHP автоинструменттери;
  • кызматтардын жана алардын максатынын жарым-жартылай кызыктай аныктамасы.

Ататус

артыкчылыктары:

  • терең PHP инструменттери;
  • колдонуучу интерфейси New Relicке окшош.

жактары:

  • эски операциялык системаларда иштебейт (Ubuntu 12.05, CentOS 5);
  • начар автоприборлор;
  • эки гана тилди колдоо (Node.js жана PHP);
  • Жай интерфейс.

Ататустун бир серверге айына 69 USD баасын эске алып, биз муктаждыктарыбызга (K8sдеги веб-тиркемелер) жакшы интеграцияланган жана көптөгөн пайдалуу өзгөчөлүктөргө ээ болгон Datadogту колдонгубуз келет.

PS

Биздин блогдон дагы окуңуз:

Source: www.habr.com

Комментарий кошуу