Sio Relic Mpya pekee: angalia Datadog na Atatus

Sio Relic Mpya pekee: angalia Datadog na Atatus

Katika mazingira ya wahandisi wa SRE/DevOps, haitashangaza mtu yeyote kwamba siku moja mteja (au mfumo wa ufuatiliaji) anaonekana na anaripoti kwamba "kila kitu kimepotea": tovuti haifanyi kazi, malipo hayafanyiki, maisha yanaharibika. ... Haijalishi ni kiasi gani ungependa kusaidia katika hali hiyo , kufanya hivyo bila chombo rahisi na kinachoeleweka inaweza kuwa vigumu sana. Mara nyingi tatizo limefichwa kwenye msimbo wa maombi yenyewe;

Na katika huzuni na furaha ...

Ilifanyika kwamba tumependa kwa muda mrefu na kwa kina New Relic. Ilikuwa na inabaki kuwa zana bora ya ufuatiliaji wa utendaji wa programu, na pia hukuruhusu kutumia usanifu wa huduma ndogo (kwa kutumia wakala wake) na mengi zaidi. Na kila kitu kingekuwa kizuri ikiwa si kwa mabadiliko katika sera ya bei ya huduma: it gharama kutoka mwaka wa 2013 ilikua mara 3+. Kwa kuongeza, tangu mwaka jana, kupata akaunti ya majaribio inahitaji mawasiliano na meneja binafsi, ambayo inafanya kuwa vigumu kuwasilisha bidhaa kwa mteja anayeweza.

Hali ya kawaida: Relic Mpya haihitajiki kwa "msingi wa kudumu" wanakumbuka tu wakati matatizo yanapoanza. Lakini bado unahitaji kulipa mara kwa mara (USD 140 kwa kila seva kwa mwezi), na katika miundombinu ya wingu inayoongeza kiotomatiki hela zinaongezeka zaidi. Ingawa kuna chaguo la Pay-As-You-Go, kuwezesha Relic Mpya itakuhitaji uanzishe tena programu, ambayo inaweza kusababisha upotevu wa hali ya matatizo ambayo yote yalianzishwa. Sio muda mrefu uliopita, New Relic ilianzisha mpango mpya wa ushuru - Muhimu, - ambayo kwa mtazamo wa kwanza inaonekana kama mbadala inayofaa kwa Professional ... lakini baada ya uchunguzi wa karibu ilibainika kuwa kazi zingine muhimu hazipo (haswa, hazina Miamala Muhimu, Ufuatiliaji wa Maombi ya Msalaba, Ufuatiliaji Uliosambazwa).

Matokeo yake, tulianza kufikiria kutafuta njia mbadala ya bei nafuu, na uchaguzi wetu ulianguka kwenye huduma mbili: Datadog na Atatus. Kwa nini juu yao?

Kuhusu washindani

Acha niseme mara moja kuwa kuna suluhisho zingine kwenye soko. Tulizingatia hata chaguzi za Open Source, lakini si kila mteja ana uwezo wa bure wa kukaribisha ufumbuzi wa kujitegemea ... - kwa kuongeza, watahitaji matengenezo ya ziada. Wanandoa tuliowachagua waligeuka kuwa wa karibu zaidi mahitaji yetu:

  • usaidizi uliojengwa ndani na ulioendelezwa kwa programu za PHP (stack ya wateja wetu ni tofauti sana, lakini huyu ni kiongozi wazi katika muktadha wa kutafuta njia mbadala ya New Relic);
  • gharama nafuu (chini ya 100 USD kwa mwezi kwa mwenyeji);
  • vifaa vya moja kwa moja;
  • ushirikiano na Kubernetes;
  • Kufanana kwa kiolesura kipya cha Relic ni jambo linaloonekana zaidi (kwa sababu wahandisi wetu wamezoea).

Kwa hivyo, katika hatua ya awali ya uteuzi, tuliondoa suluhisho zingine kadhaa maarufu, na haswa:

  • Tideways, AppDynamics na Dynatrace - kwa gharama;
  • Stackify imefungwa katika Shirikisho la Urusi na inaonyesha data kidogo sana.

Kifungu kilichosalia kimeundwa kwa njia ambayo suluhu zinazohusika zitawasilishwa kwa ufupi kwanza, baada ya hapo nitazungumza juu ya mwingiliano wetu wa kawaida na Relic Mpya na uzoefu/maoni kutokana na kufanya shughuli kama hizo katika huduma zingine.

Uwasilishaji wa washindani waliochaguliwa

Sio Relic Mpya pekee: angalia Datadog na Atatus
juu ya Jipya Mpya, labda kila mtu amesikia? Huduma hii ilianza maendeleo yake zaidi ya miaka 10 iliyopita, mnamo 2008. Tumekuwa tukitumia kikamilifu tangu 2012 na hatujapata matatizo ya kuunganisha idadi kubwa ya programu katika PHP, Ruby na Python, na pia tumekuwa na uzoefu wa kuunganisha na C # na Go. Waandishi wa huduma wana suluhisho za ufuatiliaji wa programu, miundombinu, kufuatilia miundombinu ya huduma ndogo, kuunda programu zinazofaa kwa vifaa vya watumiaji, na mengi zaidi.

Hata hivyo, wakala wa New Relic huendesha kwa itifaki za umiliki na hauauni OpenTracing. Ala za hali ya juu zinahitaji mabadiliko mahususi kwa Mabaki Mapya. Hatimaye, msaada wa Kubernetes bado ni wa majaribio.

Sio Relic Mpya pekee: angalia Datadog na Atatus
Ilianza maendeleo yake mnamo 2010 mbwa data inaonekana ya kuvutia zaidi kuliko New Relic haswa katika suala la matumizi katika mazingira ya Kubernetes. Hasa, inasaidia kuunganishwa na NGINX Ingress, mkusanyiko wa logi, itifaki za statsd na OpenTracing, ambayo inakuwezesha kufuatilia ombi la mtumiaji kutoka wakati limeunganishwa hadi kukamilika, na pia kupata kumbukumbu za ombi hili (zote kwa upande wa seva ya wavuti. na kwa watumiaji).

Wakati wa kutumia Datadog, tulikutana na kwamba wakati mwingine ilijenga ramani ya huduma ndogo kimakosa, na baadhi ya mapungufu ya kiufundi. Kwa mfano, ilitambua vibaya aina ya huduma (kukosea Django kwa huduma ya kache) na kusababisha makosa 500 katika programu ya PHP kwa kutumia maktaba maarufu ya Predis.

Sio Relic Mpya pekee: angalia Datadog na Atatus
Atas - chombo cha mdogo; huduma hiyo ilizinduliwa mwaka 2014. Bajeti yake ya uuzaji ni wazi kuwa duni kwa washindani walioorodheshwa, kutajwa sio kawaida sana. Hata hivyo, chombo yenyewe ni sawa na New Relic, si tu katika uwezo wake (APM, ufuatiliaji wa Kivinjari, nk), lakini pia kwa kuonekana.

Kikwazo kikubwa ni kwamba inasaidia tu Node.js na PHP. Kwa upande mwingine, inatekelezwa vizuri zaidi kuliko Datadog. Tofauti na ya mwisho, Atatus haihitaji programu kufanya marekebisho au kuongeza lebo za ziada kwenye msimbo.

Jinsi tunavyofanya kazi na New Relic

Sasa hebu tuone jinsi tunavyotumia New Relic. Wacha tuseme tuna shida ambayo inahitaji suluhisho:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Ni rahisi kuona kwenye grafu piga - Hebu tuchambue. Katika New Relic, miamala ya mtandao huchaguliwa mara moja kwa programu ya wavuti, vipengele vyote vinaonyeshwa kwenye jedwali la utendakazi, kuna vidirisha vya viwango vya makosa, viwango vya ombi... Muhimu zaidi ni kwamba moja kwa moja kutoka kwa paneli hizi unaweza kusonga kati ya tofauti. sehemu za programu (kwa mfano, kubofya MySQL itasababisha sehemu ya hifadhidata).

Kwa kuwa katika mfano unaozingatiwa tunaona kuongezeka kwa shughuli PHP, bofya kwenye chati hii na uende kiotomatiki Shughuli:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Orodha ya miamala, ambayo kimsingi ni vidhibiti kutoka kwa mtindo wa MVC, tayari imepangwa Inachukua muda mwingi, ambayo ni rahisi sana: tunaona mara moja kile programu inafanya. Hapa kuna mifano ya maswali marefu ambayo hukusanywa kiotomatiki na New Relic. Kwa kubadili kupanga, ni rahisi kupata:

  • mtawala wa programu iliyopakiwa zaidi;
  • kidhibiti kinachoombwa mara nyingi zaidi;
  • polepole zaidi ya vidhibiti.

Kwa kuongeza, unaweza kupanua kila ununuzi na kuona kile programu ilikuwa ikifanya wakati msimbo unatekelezwa:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Hatimaye, maombi huhifadhi mifano ya athari za maombi ya muda mrefu (yale ambayo huchukua zaidi ya sekunde 2). Hapa kuna paneli kwa shughuli ndefu:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Inaweza kuonekana kuwa mbinu mbili huchukua muda mwingi, na wakati huo huo wakati ombi lilitekelezwa, URI na kikoa chake pia huonyeshwa. Mara nyingi hii husaidia kupata ombi kwenye magogo. Kwenda kwa Fuatilia maelezo, unaweza kuona ambapo njia hizi zinaitwa kutoka:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Na ndani Maswali ya hifadhidata - Tathmini maswali kwa hifadhidata ambayo yalitekelezwa wakati programu inaendelea:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Tukiwa na maarifa haya, tunaweza kutathmini ni kwa nini programu inapunguza kasi na kufanya kazi na msanidi programu kuja na mkakati wa kutatua tatizo. Kwa kweli, Relic Mpya haitoi picha wazi kila wakati, lakini inasaidia kuchagua vekta ya uchunguzi:

  • kwa muda mrefu PDO::Construct ilituongoza kwenye utendaji wa ajabu wa pgpoll;
  • kutokuwa na utulivu kwa muda Memcache::Get ilipendekeza kuwa mashine ya mtandaoni ilisanidiwa vibaya;
  • wakati ulioongezeka wa kutiliwa shaka wa usindikaji wa template ulisababisha kitanzi kilichowekwa kuangalia uwepo wa avatari 500 kwenye hifadhi ya kitu;
  • na kadhalika…

Pia hutokea kwamba badala ya kutekeleza msimbo, kitu kinachohusiana na hifadhi ya data ya nje kinakua kwenye skrini kuu - na haijalishi itakuwa nini: Redis au PostgreSQL - zote zimefichwa kwenye kichupo. Hifadhidata.

Sio Relic Mpya pekee: angalia Datadog na Atatus

Unaweza kuchagua msingi mahususi kwa ajili ya utafiti na kupanga hoja - sawa na jinsi inavyofanywa katika Miamala. Na kwa kwenda kwenye kichupo cha ombi, unaweza kuona ni mara ngapi ombi hili hutokea katika kila moja ya watawala wa maombi, na pia kukadiria mara ngapi inaitwa. Ni vizuri sana:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Kichupo kina data sawa Huduma za Nje, ambayo huficha maombi kwa huduma za nje za HTTP, kama vile kufikia hifadhi ya kitu, kutuma matukio kwa mtumaji, au kadhalika. Yaliyomo kwenye kichupo ni sawa na Hifadhidata:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Washindani: fursa na hisia

Sasa jambo la kufurahisha zaidi ni kulinganisha uwezo wa New Relic na kile ambacho washindani hutoa. Kwa bahati mbaya, hatukuweza kujaribu zana zote tatu kwenye toleo moja la programu inayoendeshwa katika toleo la umma. Hata hivyo, tulijaribu kulinganisha hali/mipangilio ambayo ilikuwa sawa iwezekanavyo.

1. Datadog

Datadog inatusalimia na jopo na ukuta wa huduma:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Inajaribu kuvunja programu katika vipengele/huduma ndogo, kwa hivyo katika mfano programu ya Django tutaona miunganisho 2 kwa PostgreSQL (defaultdb ΠΈ postgres), pamoja na Celery, Redis. Kufanya kazi na Datadog kunahitaji uwe na ujuzi mdogo wa kanuni za MVC: unahitaji kuelewa maombi ya watumiaji hutoka wapi kwa ujumla. Hii kawaida husaidia ramani ya huduma:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Kwa njia, kuna kitu sawa katika Relic Mpya:

Sio Relic Mpya pekee: angalia Datadog na Atatus

... na ramani yao, kwa maoni yangu, inafanywa rahisi na wazi zaidi: haionyeshi vipengele vya programu moja (ambayo inaweza kuifanya kuwa ya kina zaidi, kama ilivyo kwa Datadog), lakini huduma maalum tu au huduma ndogo.

Wacha turudi kwa Datadog: kutoka kwa ramani ya huduma tunaweza kuona kwamba maombi ya watumiaji huja kwa Django. Wacha tuende kwenye huduma ya Django na hatimaye tuone kile tulichotarajia:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Kwa bahati mbaya, hakuna grafu hapa kwa chaguo-msingi Muda wa manunuzi ya wavuti, sawa na kile tunachoona kwenye paneli kuu ya Relic Mpya. Walakini, inaweza kusanidiwa badala ya ratiba % ya Muda uliotumika. Inatosha kuibadilisha Muda wa wastani kwa kila ombi kulingana na Aina... na sasa grafu inayojulikana inatutazama!

Sio Relic Mpya pekee: angalia Datadog na Atatus

Kwa nini Datadog ilichagua chati tofauti ni siri kwetu. Jambo lingine la kukata tamaa ni kwamba mfumo haukumbuki chaguo la mtumiaji (tofauti na washindani wote), na kwa hiyo suluhisho pekee ni kuunda paneli za desturi.

Lakini nilifurahishwa na uwezo katika Datadog kubadili kutoka kwa grafu hizi kwenda kwa metriki za seva zinazohusiana, kusoma kumbukumbu na kutathmini mzigo kwenye vidhibiti vya seva ya wavuti (Gunicorn). Kila kitu ni karibu sawa na katika New Relic ... na hata zaidi kidogo (magogo)!

Chini ya grafu ni shughuli zinazofanana kabisa na New Relic:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Katika Datadog, shughuli zinaitwa rasilimali. Unaweza kupanga vidhibiti kwa idadi ya maombi, kwa wastani wa muda wa kujibu, na kwa muda wa juu zaidi unaotumiwa kwa kipindi fulani cha muda.

Unaweza kupanua rasilimali na kuona kila kitu ambacho tayari tumeona kwenye Relic Mpya:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Kuna takwimu kwenye nyenzo, orodha ya jumla ya simu za ndani, na mifano ya maombi ambayo yanaweza kupangwa kwa msimbo wa majibu... Kwa njia, wahandisi wetu walipenda sana upangaji huu.

Rasilimali yoyote ya mfano katika Datadog inaweza kufunguliwa na kusomwa:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Vigezo vya ombi, chati ya muhtasari wa muda uliotumika kwenye kila sehemu, na chati ya maporomoko ya maji inayoonyesha mlolongo wa simu huwasilishwa. Unaweza pia kubadili mwonekano wa mti wa chati ya maporomoko ya maji:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Na jambo la kufurahisha zaidi ni kutazama mzigo wa mwenyeji ambao ombi lilitekelezwa na kutazama kumbukumbu za ombi.

Sio Relic Mpya pekee: angalia Datadog na Atatus

Ushirikiano mkubwa!

Unaweza kujiuliza vichupo viko wapi Hifadhidata ΠΈ Huduma za Nje, kama katika New Relic. Hakuna hapa: kwa kuwa Datadog inatenganisha programu katika vipengele, PostgreSQL itazingatiwa huduma tofauti, na badala ya Huduma za Nje inafaa kutafuta aws.storage (itakuwa sawa kwa kila huduma nyingine ya nje ambayo programu inaweza kufikia).

Sio Relic Mpya pekee: angalia Datadog na Atatus

Hapa kuna mfano na postgres:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Kimsingi kuna kila kitu tulichotaka:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Unaweza kuona "huduma" ambayo ombi lilitoka.

Haitakuwa vibaya kukukumbusha kuwa Datadog inaunganishwa kikamilifu na NGINX Ingress na hukuruhusu kutekeleza ufuatiliaji wa mwisho hadi mwisho kutoka wakati ombi linapowasili kwenye nguzo, na pia hukuruhusu kupokea vipimo vya takwimu, kukusanya kumbukumbu na vipimo vya mwenyeji. .

Faida kubwa ya Datadog ni kwamba bei yake yanaendelea kutoka kwa ufuatiliaji wa miundombinu, APM, Usimamizi wa Magogo na mtihani wa Synthetics, i.e. Unaweza kuchagua mpango wako kwa urahisi.

2.Atatu

Timu ya Atatus inadai kuwa huduma yao ni "sawa na Relic Mpya, lakini bora." Hebu tuone kama hii ni kweli.

Paneli kuu inaonekana sawa, lakini haikuwezekana kuamua Redis na memcached kutumika katika programu.

Sio Relic Mpya pekee: angalia Datadog na Atatus

APM huchagua miamala yote kwa chaguo-msingi, ingawa kwa kawaida ni miamala ya Wavuti pekee ndiyo inayohitajika. Kama Datadog, hakuna njia ya kwenda kwa huduma inayotaka kutoka kwa paneli kuu. Zaidi ya hayo, shughuli zimeorodheshwa baada ya makosa, ambayo haionekani kuwa ya kimantiki kwa APM.

Katika shughuli za Atatus, kila kitu kinafanana iwezekanavyo na New Relic. Upande wa chini ni kwamba mienendo kwa kila mtawala haionekani mara moja. Lazima utafute kwenye jedwali la kidhibiti, ukipanga kulingana Muda Unaotumiwa Zaidi:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Orodha ya kawaida ya vidhibiti inapatikana kwenye kichupo kuchunguza:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Kwa njia zingine, jedwali hili linawakumbusha Datadog na ninaipenda bora kuliko ile iliyo kwenye New Relic.

Unaweza kupanua kila shughuli na kuona kile ambacho programu ilikuwa ikifanya:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Jopo pia linawakumbusha zaidi Datadog: kuna idadi ya maombi, picha ya jumla ya simu. Paneli ya juu hutoa kichupo cha makosa HTTP Imeshindwa na mifano ya maswali ya polepole Athari za Kikao:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Ikiwa unakwenda kwenye shughuli, unaweza kuona mfano wa ufuatiliaji, unaweza kupata orodha ya maombi kwenye hifadhidata na uangalie vichwa vya ombi. Kila kitu ni sawa na Relic Mpya:

Sio Relic Mpya pekee: angalia Datadog na Atatus

Kwa ujumla, Atatus alifurahishwa na athari za kina - bila gluing ya kawaida ya Relic ya simu kwenye kizuizi cha ukumbusho:

Sio Relic Mpya pekee: angalia Datadog na Atatus
Sio Relic Mpya pekee: angalia Datadog na Atatus

Walakini, haina kichungi ambacho (kama New Relic) kinaweza kukata maombi ya haraka sana (<5ms). Kwa upande mwingine, nilipenda onyesho la jibu la mwisho la shughuli (mafanikio au kosa).

Jopo Hifadhidata itakusaidia kusoma maombi kwa hifadhidata za nje ambazo programu hufanya. Acha nikukumbushe kwamba Atatus ilipata PostgreSQL na MySQL pekee, ingawa Redis na memcached pia wanahusika katika mradi huo.

Sio Relic Mpya pekee: angalia Datadog na Atatus

Maombi yanapangwa kulingana na vigezo vya kawaida: mzunguko wa majibu, muda wa wastani wa majibu, na kadhalika. Ningependa pia kutaja kichupo chenye maswali ya polepole zaidi - ni rahisi sana. Zaidi ya hayo, data katika kichupo hiki cha PostgreSQL iliambatana na data kutoka kwa kiendelezi pg_stat_statements - matokeo bora!

Sio Relic Mpya pekee: angalia Datadog na Atatus

Kichupo Maombi ya Nje kufanana kabisa na Hifadhidata.

Matokeo

Zana zote mbili zilizowasilishwa zilifanya vyema katika jukumu la APM. Yeyote kati yao anaweza kutoa kiwango cha chini kinachohitajika. Maoni yetu yanaweza kufupishwa kwa ufupi kama ifuatavyo:

mbwa data

Faida:

  • ratiba ya ushuru rahisi (APM inagharimu USD 31 kwa mwenyeji);
  • ilifanya kazi vizuri na Python;
  • Uwezekano wa kuunganishwa na OpenTracing
  • ushirikiano na Kubernetes;
  • ushirikiano na NGINX Ingress.

Minus:

  • APM pekee iliyosababisha programu kutopatikana kwa sababu ya hitilafu ya moduli (predis);
  • ala dhaifu ya PHP;
  • ufafanuzi wa ajabu wa huduma na madhumuni yao.

Atas

Faida:

  • ala ya kina ya PHP;
  • kiolesura cha mtumiaji sawa na New Relic.

Minus:

  • haifanyi kazi kwenye mifumo ya zamani ya uendeshaji (Ubuntu 12.05, CentOS 5);
  • chombo dhaifu cha kiotomatiki;
  • msaada kwa lugha mbili tu (Node.js na PHP);
  • Kiolesura cha polepole.

Kwa kuzingatia bei ya Atatus ya USD 69 kwa mwezi kwa kila seva, tungependelea kutumia Datadog, ambayo inaunganishwa vyema na mahitaji yetu (programu za wavuti katika K8s) na ina vipengele vingi muhimu.

PS

Soma pia kwenye blogi yetu:

Chanzo: mapenzi.com

Kuongeza maoni