Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

SRE/DevOps mühəndisləri mühitində bir gün müştərinin (və ya monitorinq sisteminin) görünməsi və “hər şeyin itirildiyini” bildirməsi heç kəsi təəccübləndirməyəcək: sayt işləmir, ödənişlər keçmir, həyat çürüməkdədir. ... Belə bir vəziyyətdə nə qədər kömək etmək istəsəniz də, sadə və başa düşülən alət olmadan bunu etmək çox çətin ola bilər. Çox vaxt problem proqram kodunun özündə gizlənir, sadəcə onu lokallaşdırmaq lazımdır.

Həm kədərdə, həm də sevincdə...

Elə oldu ki, biz Yeni Reliktə çoxdan və dərindən aşiq olduq. Tətbiq işinin monitorinqi üçün əla alət idi və qalır, həmçinin mikroservis arxitekturasını (agentindən istifadə edərək) və daha çoxunu alət etməyə imkan verir. Xidmətin qiymət siyasətində dəyişikliklər olmasaydı, hər şey əla ola bilərdi: bu qiymət 2013 ildən 3+ dəfə artdı. Bundan əlavə, ötən ildən sınaq hesabı əldə etmək üçün şəxsi menecerlə ünsiyyət tələb olunur ki, bu da məhsulu potensial müştəriyə təqdim etməyi çətinləşdirir.

Adi vəziyyət: Yeni Reliktə "daimi əsasda" ehtiyac yoxdur, onlar bunu yalnız problemlər başlayanda xatırlayırlar. Ancaq yenə də müntəzəm olaraq ödəməlisən (bir server üçün ayda 140 ABŞ dolları) və avtomatik miqyaslanan bulud infrastrukturunda məbləğlər kifayət qədər böyük olur. Getdikcə Ödə seçimi olsa da, New Relic-i işə salmaq sizdən tətbiqi yenidən başlatmağınızı tələb edəcək, bu da hər şeyin başladığı problemli vəziyyətin itirilməsinə səbəb ola bilər. Bir müddət əvvəl New Relic yeni tarif planını təqdim etdi - Essentials, - ilk baxışdan Peşəkara ağlabatan alternativ kimi görünən... lakin yaxından araşdırdıqdan sonra məlum oldu ki, bəzi vacib funksiyalar çatışmır (xüsusən də yoxdur Əsas Əməliyyatlar, Çarpaz Tətbiq İzləmə, Paylanmış İzləmə).

Nəticədə daha ucuz alternativ axtarmaq barədə düşünməyə başladıq və seçimimiz iki xidmətin üzərinə düşdü: Datadog və Atatus. Niyə onlarda?

Rəqiblər haqqında

Dərhal deyim ki, bazarda başqa həllər var. Biz hətta Açıq Mənbə variantlarını nəzərdən keçirdik, lakin hər bir müştərinin öz-özünə yerləşdirilən həlləri yerləşdirmək üçün pulsuz imkanları yoxdur... - əlavə olaraq, onlar əlavə texniki xidmət tələb edəcəklər. Seçdiyimiz cütlük ən yaxın cütlük oldu ehtiyaclarımız:

  • PHP proqramları üçün quraşdırılmış və işlənmiş dəstək (müştərilərimizin yığını çox müxtəlifdir, lakin bu, New Relic-ə alternativ axtarış kontekstində aydın liderdir);
  • əlverişli qiymət (hər ev sahibi üçün ayda 100 ABŞ dollarından az);
  • avtomatik cihaz;
  • Kubernetes ilə inteqrasiya;
  • New Relic interfeysi ilə oxşarlıq nəzərə çarpan bir artıdır (çünki bizim mühəndislər buna öyrəşiblər).

Buna görə də, ilkin seçim mərhələsində bir neçə digər populyar həlləri aradan qaldırdıq, xüsusən:

  • Tideways, AppDynamics və Dynatrace - qiymətə;
  • Stackify Rusiya Federasiyasında bloklanıb və çox az məlumat göstərir.

Məqalənin qalan hissəsi elə qurulub ki, sözügedən həllər əvvəlcə qısa şəkildə təqdim olunacaq, bundan sonra mən New Relic ilə tipik qarşılıqlı əlaqəmiz və digər xidmətlərdə oxşar əməliyyatların yerinə yetirilməsi ilə bağlı təcrübə/təəssüratlarımız haqqında danışacağam.

Seçilmiş rəqiblərin təqdimatı

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış
haqqında New relikt, yəqin ki, hamı eşitmişdir? Bu xidmət 10 ildən çox əvvəl, 2008-ci ildə inkişaf etməyə başladı. Biz onu 2012-ci ildən fəal şəkildə istifadə edirik və PHP, Ruby və Python-da həqiqətən çoxlu sayda tətbiqetməni inteqrasiya etməkdə heç bir problem yaşamamışıq, həmçinin C# və Go ilə inteqrasiya təcrübəmiz də var. Xidmətin müəllifləri proqramların, infrastrukturun monitorinqi, mikroservis infrastrukturlarının izlənilməsi, istifadəçi cihazları üçün rahat proqramların yaradılması və s. üçün həllərə malikdir.

Bununla belə, New Relic agenti mülkiyyət protokolları üzərində işləyir və OpenTracing-i dəstəkləmir. Qabaqcıl cihazlar xüsusi olaraq New Relic üçün redaktə tələb edir. Nəhayət, Kubernetes dəstəyi hələ də eksperimentaldır.

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış
İnkişafına 2010-cu ildə başlamışdır datadog Kubernetes mühitlərində istifadə baxımından New Relic-dən nəzərəçarpacaq dərəcədə maraqlı görünür. Xüsusilə, o, NGINX Ingress, log kolleksiyası, statsd və OpenTracing protokolları ilə inteqrasiyanı dəstəkləyir ki, bu da istifadəçi sorğusunu tamamlanana qoşulduğu andan izləməyə, həmçinin bu sorğu üçün qeydləri tapmağa imkan verir (hər ikisi veb server tərəfində). və istehlakçıya).

Datadog-dan istifadə edərkən onun bəzən mikroservis xəritəsini səhv qurması və bəzi texniki çatışmazlıqlarla rastlaşdıq. Məsələn, o, xidmət növünü səhv müəyyənləşdirdi (Django-nu keşləmə xidməti ilə səhv saldı) və məşhur Predis kitabxanasından istifadə edərək PHP proqramında 500 səhvə səbəb oldu.

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış
Atatus — ən gənc alət; xidmət 2014-cü ildə istifadəyə verilib. Onun marketinq büdcəsi sadalanan rəqiblərdən açıq-aydın aşağıdır, qeydlər daha az yayılmışdır. Bununla belə, alətin özü təkcə imkanlarına (APM, Brauzer monitorinqi və s.) deyil, həm də görünüşünə görə New Relic-ə çox bənzəyir.

Əhəmiyyətli çatışmazlıq onun yalnız Node.js və PHP-ni dəstəkləməsidir. Digər tərəfdən, Datadog-dan nəzərəçarpacaq dərəcədə yaxşı həyata keçirilir. Sonuncudan fərqli olaraq, Atatus proqramlardan koda dəyişiklik etmək və ya əlavə etiketlər əlavə etmək tələb etmir.

New Relic ilə necə işləyirik

İndi gəlin ümumiyyətlə New Relic-dən necə istifadə etdiyimizə baxaq. Deyək ki, həllini tələb edən problemimiz var:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Qrafikdə bunu görmək asandır sıçrayış - Gəlin təhlil edək. New Relic-də veb əməliyyatları dərhal veb tətbiqi üçün seçilir, bütün komponentlər performans qrafikində göstərilir, səhv dərəcəsi, sorğu dərəcəsi panelləri var... Ən vacibi odur ki, birbaşa bu panellərdən müxtəlif proqramlar arasında hərəkət edə bilərsiniz. tətbiqin hissələri (məsələn, MySQL-ə klikləmək verilənlər bazası bölməsinə aparacaq).

Baxılan nümunədə aktivliyin artmasını görürük PHP, bu diaqrama klikləyin və avtomatik olaraq keçin Əməliyyatlar:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Əsasən MVC modelinin nəzarətçiləri olan əməliyyatların siyahısı artıq sıralanır Ən çox vaxt aparan, bu çox rahatdır: tətbiqin nə etdiyini dərhal görürük. Budur, New Relic tərəfindən avtomatik toplanan uzun sorğuların nümunələri. Çeşidləməni dəyişdirməklə, tapmaq asandır:

  • ən çox yüklənmiş proqram nəzarətçisi;
  • ən çox tələb olunan nəzarətçi;
  • nəzarətçilərin ən yavaşı.

Bundan əlavə, hər bir əməliyyatı genişləndirə və kodun icra edildiyi anda tətbiqin nə etdiyini görə bilərsiniz:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Nəhayət, proqram uzun sorğuların izlərinin nümunələrini (2 saniyədən çox çəkənlər) saxlayır. Uzun bir əməliyyat üçün panel budur:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Görünür ki, iki metod çox vaxt aparır və eyni zamanda sorğunun icra edildiyi vaxt, onun URI və domeni də göstərilir. Çox vaxt bu, qeydlərdə sorğu tapmağa kömək edir. Getmək İz detalları, bu metodların haradan çağırıldığını görə bilərsiniz:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Verilənlər bazası sorğuları — proqram işləyərkən icra edilən verilənlər bazası sorğularını qiymətləndirmək:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Bu biliklərlə silahlanmış, tətbiqin niyə yavaşladığını qiymətləndirə və problemi həll etmək üçün bir strategiya hazırlamaq üçün tərtibatçı ilə işləyə bilərik. Əslində, New Relic həmişə aydın bir şəkil vermir, lakin araşdırma vektorunu seçməyə kömək edir:

  • Uzun müddətdir PDO::Construct bizi pgpoll-un qəribə işləməsinə apardı;
  • zamanla qeyri-sabitlik Memcache::Get virtual maşının səhv konfiqurasiya edildiyini təklif etdi;
  • şablonun işlənməsi üçün şübhəli şəkildə artan vaxt, obyekt anbarında 500 avatarın mövcudluğunu yoxlayan iç-içə döngəyə səbəb oldu;
  • və s ...

Həm də olur ki, kodun yerinə yetirilməsi əvəzinə əsas ekranda xarici məlumatların saxlanması ilə əlaqəli bir şey böyüyür - və bunun nə olacağı vacib deyil: Redis və ya PostgreSQL - onların hamısı nişanda gizlənir. Verilənlər bazası.

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Tədqiqat üçün xüsusi baza seçə və sorğuları çeşidləyə bilərsiniz - bunun Əməliyyatlarda necə edildiyi kimi. Və sorğu sekmesine keçərək, bu sorğunun proqram nəzarətçilərinin hər birində neçə dəfə baş verdiyini görə bilərsiniz və həmçinin onun nə qədər tez-tez çağırıldığını təxmin edə bilərsiniz. Çox rahatdır:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Nişanda oxşar məlumatlar var Xarici XidmətlərObyekt yaddaşına daxil olmaq, hadisələrin keşikçiyə göndərilməsi və ya s. kimi xarici HTTP xidmətlərinə sorğuları gizlədir. Nişanın məzmunu Verilənlər Bazalarına tamamilə bənzəyir:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Rəqiblər: imkanlar və təəssüratlar

İndi ən maraqlısı New Relic-in imkanlarını rəqiblərin təklif etdikləri ilə müqayisə etməkdir. Təəssüf ki, istehsalda işləyən bir tətbiqin bir versiyasında hər üç aləti sınaqdan keçirə bilmədik. Bununla belə, mümkün qədər eyni olan vəziyyətləri/konfiqurasiyaları müqayisə etməyə çalışdıq.

1.Datadog

Datadog bizi xidmətlər divarı olan panellə qarşılayır:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Tətbiqləri komponentlərə/mikroservislərə ayırmağa çalışır, buna görə də nümunə Django tətbiqində PostgreSQL-ə 2 bağlantı görəcəyik (defaultdb и postgres), həmçinin Kərəviz, Redis. Datadog ilə işləmək sizdən MVC prinsipləri haqqında minimal biliklərə malik olmağı tələb edir: istifadəçi sorğularının ümumiyyətlə haradan gəldiyini başa düşməlisiniz. Bu adətən kömək edir xidmətlərin xəritəsi:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Yeri gəlmişkən, New Relic-də oxşar bir şey var:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

... və onların xəritəsi, mənim fikrimcə, daha sadə və aydınlaşdırılıb: o, bir tətbiqin komponentlərini (bu, Datadog-da olduğu kimi onu həddindən artıq təfərrüatlı edəcək) deyil, yalnız xüsusi xidmətlər və ya mikroservisləri göstərir.

Datadog-a qayıdaq: xidmət xəritəsindən istifadəçi sorğularının Django-ya gəldiyini görə bilərik. Gəlin Django xidmətinə gedək və nəhayət nə gözlədiyimizi görək:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Təəssüf ki, burada standart olaraq heç bir qrafik yoxdur Veb əməliyyat vaxtı, əsas Yeni Relikt panelində gördüyümüz kimi. Bununla belə, onu cədvəlin yerinə konfiqurasiya etmək olar sərf olunan vaxtın faizi. Onu dəyişdirmək kifayətdir Növə görə hər sorğu üçün orta vaxt... və indi tanış qrafik bizə baxır!

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Datadog-un niyə fərqli qrafik seçməsi bizim üçün sirrdir. Başqa bir sinir bozucu şey sistemin istifadəçinin seçimini xatırlamamasıdır (hər iki rəqibdən fərqli olaraq) və buna görə də yeganə həll yolu xüsusi panellər yaratmaqdır.

Ancaq Datadog-da bu qrafiklərdən əlaqəli serverlərin ölçülərinə keçmək, qeydləri oxumaq və veb server işləyicilərinə (Gunicorn) yükü qiymətləndirmək bacarığından məmnun qaldım. Hər şey New Relic-də olduğu kimi demək olar ki, eynidir ... və hətta bir az daha çox (loglar)!

Qrafiklərin altında tamamilə New Relic-ə bənzər əməliyyatlar var:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Datadog-da əməliyyatlar çağırılır resurslar. Siz nəzarətçiləri sorğuların sayına, orta cavab müddətinə və seçilmiş müddət üçün sərf olunan maksimum vaxta görə çeşidləyə bilərsiniz.

Mənbəni genişləndirə və New Relic-də artıq müşahidə etdiyimiz hər şeyi görə bilərsiniz:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Resursda statistik məlumatlar, daxili zənglərin ümumiləşdirilmiş siyahısı və cavab kodu ilə sıralana bilən sorğu nümunələri var... Yeri gəlmişkən, mühəndislərimiz bu çeşidləməni çox bəyəndilər.

Datadog-da istənilən nümunə resurs açıla və öyrənilə bilər:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Sorğu parametrləri, hər bir komponentə sərf olunan vaxtın xülasə qrafiki və zənglərin ardıcıllığını göstərən şəlalə diaqramı təqdim olunur. Siz həmçinin şəlalə cədvəlinin ağac görünüşünə keçə bilərsiniz:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Ən maraqlısı isə sorğunun icra olunduğu hostun yükünü görmək və sorğu qeydlərinə baxmaqdır.

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Əla inteqrasiya!

Nişanların harada olduğunu düşünə bilərsiniz Verilənlər bazası и Xarici Xidmətlər, New Relic-də olduğu kimi. Burada heç biri yoxdur: Datadog tətbiqi komponentlərə ayırdığı üçün PostgreSQL nəzərdən keçiriləcək ayrı bir xidmət, və Xarici Xidmətlər əvəzinə onu axtarmağa dəyər aws.storage (tətbiqin daxil ola biləcəyi hər bir xarici xidmət üçün oxşar olacaq).

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Burada bir nümunə var postgres:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Əslində istədiyimiz hər şey var:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Sorğunun hansı “xidmətdən” gəldiyini görə bilərsiniz.

Datadog-un NGINX Ingress ilə mükəmməl inteqrasiya etdiyini və sorğunun klasterə daxil olduğu andan başdan sona izləməni həyata keçirməyə imkan verdiyini, həmçinin statsd ölçülərini qəbul etməyə, qeydləri və host göstəricilərini toplamağa imkan verdiyini xatırlatmaq yanlış olmaz. .

Datadog-un böyük bir üstünlüyü onun qiymətidir inkişaf edir infrastruktur monitorinqindən, APM, Log Management və Synthetics testindən, yəni. Planınızı çevik seçə bilərsiniz.

2.Atatus

Atatus komandası, xidmətlərinin "Yeni Reliktlə eyni olduğunu, lakin daha yaxşı olduğunu" iddia edir. Gəlin görək bu həqiqətən belədirmi?

Əsas panel oxşar görünür, lakin tətbiqdə istifadə olunan Redis və memcached-i müəyyən etmək mümkün olmadı.

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

APM standart olaraq bütün əməliyyatları seçir, baxmayaraq ki, adətən yalnız Veb əməliyyatları tələb olunur. Datadog kimi, əsas paneldən istədiyiniz xidmətə getmək üçün heç bir yol yoxdur. Üstəlik, əməliyyatlar səhvlərdən sonra sıralanır ki, bu da APM üçün çox da məntiqli görünmür.

Atatus əməliyyatlarında hər şey mümkün qədər New Relic-ə bənzəyir. İşin mənfi tərəfi hər bir nəzarətçi üçün dinamikanın dərhal görünməməsidir. Siz onu nəzarətçi cədvəlində axtarmalı və çeşidləməlisiniz Ən çox vaxt sərf olunur:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Nəzarətçilərin adi siyahısı tabda mövcuddur araşdırmaq:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Bəzi mənalarda bu cədvəl Datadog-u xatırladır və mən onu New Relic-dəki oxşardan daha çox bəyənirəm.

Siz hər bir əməliyyatı genişləndirə və tətbiqin nə etdiyini görə bilərsiniz:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Panel həm də daha çox Datadog-u xatırladır: bir sıra sorğular, zənglərin ümumi mənzərəsi var. Üst panel xəta nişanını təqdim edir HTTP uğursuzluqları və yavaş sorğuların nümunələri Sessiya izləri:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Bir əməliyyata getsəniz, bir iz nümunəsini görə bilərsiniz, verilənlər bazasına sorğuların siyahısını əldə edə və sorğu başlıqlarına baxa bilərsiniz. Hər şey New Relic-ə bənzəyir:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Ümumiyyətlə, Atatus ətraflı izlərdən məmnundur - zənglərin xatırlatma blokuna tipik Yeni Relikt yapışdırılması olmadan:

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış
Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Bununla belə, onun (New Relic kimi) ultra sürətli sorğuları (<5ms) kəsəcək bir filtri yoxdur. Digər tərəfdən, son əməliyyat cavabının (uğur və ya səhv) göstərilməsi xoşuma gəldi.

Panel Verilənlər bazası tətbiqin etdiyi xarici verilənlər bazalarına sorğuları öyrənməyə kömək edəcək. Xatırladım ki, Atatus yalnız PostgreSQL və MySQL tapdı, baxmayaraq ki, Redis və memcached də layihədə iştirak edir.

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Sorğular adi meyarlara görə çeşidlənir: cavab tezliyi, orta cavab müddəti və s. Ən yavaş sorğuları olan nişanı da qeyd etmək istərdim - bu çox rahatdır. Üstəlik, PostgreSQL üçün bu tabdakı məlumatlar genişləndirmə məlumatları ilə üst-üstə düşdü pg_stat_statements - əla nəticə!

Tək Yeni Relikt Deyil: Datadog və Atatus-a Baxış

Nişan Xarici sorğular verilənlər bazası ilə tamamilə eynidir.

Tapıntılar

Təqdim olunan hər iki alət APM rolunda yaxşı çıxış etdi. Onlardan hər hansı biri tələb olunan minimumu təklif edə bilər. Təəssüratlarımızı qısaca aşağıdakı kimi ümumiləşdirmək olar:

datadog

Pros:

  • rahat tarif cədvəli (APM bir host üçün 31 ABŞ dollarına başa gəlir);
  • Python ilə yaxşı işləyib;
  • OpenTracing ilə inteqrasiya imkanı
  • Kubernetes ilə inteqrasiya;
  • NGINX Ingress ilə inteqrasiya.

Eksiler:

  • modul xətası (predis) səbəbindən tətbiqin əlçatmaz olmasına səbəb olan yeganə APM;
  • zəif PHP avtomatik alətləri;
  • xidmətlərin və onların məqsədinin qismən qəribə tərifi.

Atatus

Pros:

  • dərin PHP alətləri;
  • New Relic-ə bənzər istifadəçi interfeysi.

Eksiler:

  • köhnə əməliyyat sistemlərində işləmir (Ubuntu 12.05, CentOS 5);
  • zəif avtomatik alətlər;
  • yalnız iki dil üçün dəstək (Node.js və PHP);
  • Yavaş interfeys.

Atatusun server başına ayda 69 ABŞ dolları qiymətini nəzərə alsaq, ehtiyaclarımızla yaxşı inteqrasiya edən (K8s-də veb proqramlar) və bir çox faydalı xüsusiyyətlərə malik olan Datadog-dan istifadə etməyi üstün tuturuq.

PS

Bloqumuzda da oxuyun:

Mənbə: www.habr.com

Добавить комментарий