Henteu Anyar Relic nyalira: katingal di Datadog sareng Atatus
Di lingkungan insinyur SRE / DevOps, éta moal kaget saha waé yén hiji dinten klien (atanapi sistem ngawaskeun) némbongan sareng ngalaporkeun yén "sadayana leungit": situsna henteu jalan, pangmayaran henteu ngaliwat, hirup rusak. ... Henteu paduli sabaraha anjeun hoyong ngabantosan dina kaayaan sapertos kitu, tiasa sesah pisan ngalakukeun ieu tanpa alat anu sederhana sareng kaharti. Seringna masalahna disumputkeun dina kode aplikasi sorangan, anjeun ngan ukur kedah ngalokalkeunana.
Sareng dina kasedihan sareng kabagjaan…
Ieu jadi kajadian nu urang geus lila jeung deeply murag asih jeung New Relic. Éta sareng tetep janten alat anu saé pikeun ngawaskeun kinerja aplikasi, sareng ogé ngamungkinkeun anjeun pikeun ngintunkeun arsitéktur microservice (ngagunakeun agénna) sareng seueur deui. Sareng sadayana tiasa saé upami sanés parobihan dina kabijakan harga jasa: éta biaya kalawan 2013 taun tumuwuh 3+ kali. Sajaba ti éta, saprak taun ka tukang, meunangkeun akun sidang merlukeun komunikasi jeung manajer pribadi, nu ngajadikeun hésé nampilkeun produk ka konsumén poténsial.
Kaayaan biasa: Relic Anyar henteu diperyogikeun dina "dasar permanén"; aranjeunna ngan ukur émut nalika masalah dimimitian. Tapi anjeun masih kedah mayar rutin (140 USD per server per bulan), sarta dina infrastruktur awan skala otomatis jumlahna nambahan rada badag. Sanaos aya pilihan Pay-As-You-Go, ngaktifkeun New Relic bakal ngabutuhkeun anjeun ngabalikan deui aplikasi, anu tiasa nyababkeun leungitna kaayaan masalah anu sadayana dimimitian. Teu lami pisan, New Relic ngenalkeun rencana tarif énggal - poko, - nu di glance kahiji Sigana alternatif lumrah mun Profesional ... tapi kana ujian ngadeukeutan tétéla yén sababaraha fungsi penting leungit (khususna, teu boga Transaksi konci, Cross Aplikasi Tracing, Disebarkeun Tracing).
Hasilna, urang mimiti mikir ngeunaan milarian alternatif anu langkung mirah, sareng pilihan urang murag kana dua jasa: Datadog sareng Atatus. Naha on aranjeunna?
Ngeunaan pesaing
Hayu atuh langsung nyarios yén aya solusi sanés dina pasaran. Urang malah dianggap pilihan Open Source, tapi teu unggal klien boga kapasitas bébas host solusi timer hosted ... - salian ti éta, maranéhna bakal merlukeun pangropéa tambahan. Pasangan anu urang pilih tétéla anu pangdeukeutna kabutuhan urang:
diwangun-di tur dimekarkeun rojongan pikeun aplikasi PHP (tumpukan klien kami pisan rupa-rupa, tapi ieu téh pamimpin jelas dina konteks neangan alternatif pikeun New Relic);
ongkos affordable (kirang ti 100 USD per bulan per host);
alat-alat otomatis;
integrasi jeung Kubernetes;
Kasaruaan sareng antarmuka New Relic mangrupikeun tambah anu jelas (sabab insinyur kami biasa).
Ku alatan éta, dina tahap seleksi awal, urang ngaleungitkeun sababaraha solusi populér séjén, sarta hususna:
Tideways, AppDynamics sareng Dynatrace - kanggo biaya;
Stackify diblokir di Féderasi Rusia sareng nunjukkeun sakedik data.
Sesa tulisan disusun ku cara anu solusi anu ditaroskeun heula bakal dibere sakedap, saatos éta kuring bakal ngobrol ngeunaan interaksi has urang sareng New Relic sareng pangalaman / kesan tina ngalaksanakeun operasi anu sami dina jasa anu sanés.
Presentasi pesaing dipilih
dina anyar Relic, meureun dulur geus uninga? Ladenan ieu mimiti pangwangunanna langkung ti 10 taun ka pengker, dina taun 2008. Kami geus aktip ngagunakeun eta saprak 2012 sarta teu boga masalah ngahijikeun jumlah bener badag tina aplikasi dina PHP, Ruby jeung Python, sarta kami ogé geus ngalaman integrasi jeung C # na Go. Panulis jasa ngagaduhan solusi pikeun ngawaskeun aplikasi, infrastruktur, ngalacak infrastruktur jasa mikro, nyiptakeun aplikasi anu cocog pikeun alat pangguna, sareng seueur deui.
Nanging, agén New Relic dijalankeun dina protokol proprietary sareng henteu ngadukung OpenTracing. Instrumentasi canggih butuh éditan khusus pikeun New Relic. Tungtungna, dukungan Kubernetes masih ékspériméntal.
Ngamimitian pangwangunan dina 2010 datadog katingalina langkung pikaresepeun tibatan New Relic tepatna dina hal panggunaan di lingkungan Kubernetes. Khususna, éta ngadukung integrasi sareng NGINX Ingress, koléksi log, statsd sareng protokol OpenTracing, anu ngamungkinkeun anjeun ngalacak pamundut pangguna ti mimiti nyambung ka parantosan, ogé milarian log pikeun pamundut ieu (duanana dina sisi server wéb. sareng konsumen).
Nalika nganggo Datadog, urang mendakan yén éta kadang-kadang ngawangun peta microservice teu leres, sareng sababaraha kakurangan téknis. Contona, éta salah nangtukeun jenis jasa (mistaking Django pikeun layanan cache) sarta ngabalukarkeun 500 kasalahan dina aplikasi PHP ngagunakeun perpustakaan Predis populér.
Atatus - instrumen bungsu; jasa ieu diluncurkeun dina 2014. anggaran pamasaran na jelas inferior mun pesaing didaptarkeun, nyebutkeun loba kirang umum. Nanging, alat éta sami pisan sareng New Relic, henteu ngan ukur dina kamampuanna (APM, monitoring Browser, jsb), tapi ogé dina penampilan.
Kelemahan anu signifikan nyaéta ngan ukur ngadukung Node.js sareng PHP. Di sisi séjén, éta dilaksanakeun noticeably hadé ti Datadog. Beda sareng anu terakhir, Atatus henteu ngabutuhkeun aplikasi pikeun ngarobih atanapi nambihan labél tambahan kana kode éta.
Kumaha urang damel sareng New Relic
Ayeuna hayu urang terang kumaha urang umumna nganggo New Relic. Anggap urang gaduh masalah anu peryogi solusi:
Ieu gampang pikeun nempo dina grafik mumbul - Hayu urang analisa eta. Dina New Relic, transaksi web langsung dipilih pikeun aplikasi wéb, sadaya komponén dituduhkeun dina grafik kinerja, aya kasalahan-rate, panels request-rate... Anu paling penting nyaéta langsung tina panel ieu anjeun tiasa ngalih antara béda. bagian tina aplikasi (contona, ngaklik dina MySQL bakal ngakibatkeun bagian database).
Kusabab dina conto anu ditalungtik urang ningali hiji surge dina kagiatan PHP, klik dina bagan ieu sareng otomatis angkat ka transaksi:
Daptar transaksi, anu dasarna mangrupikeun pangendali tina modél MVC, parantos diurutkeun Pangpangna waktos, anu pohara merenah: urang langsung ningali naon aplikasi nu teu. Ieu conto patarosan panjang anu otomatis dikumpulkeun ku New Relic. Ku ngaganti asihan, éta gampang pikeun manggihan:
controller aplikasi paling dimuat;
controller pangseringna dipénta;
nu slowest tina controller.
Salaku tambahan, anjeun tiasa ngalegaan unggal transaksi sareng ningali naon anu dilakukeun ku aplikasi dina waktos kodeu dieksekusi:
Tungtungna, aplikasi nyimpen conto ngambah pamundut panjang (anu nyandak leuwih ti 2 detik). Ieu panel pikeun transaksi anu panjang:
Ieu bisa ditempo yén dua métode butuh loba waktu, sarta dina waktos anu sareng nalika pamundut ieu dieksekusi, URI na domain na ogé ditémbongkeun. Sering pisan ieu ngabantosan milarian pamundut dina log. Bade ka Rincian ngalacak, anjeun tiasa ningali ti mana metode ieu disebut:
Jeung dina Patarosan database - Evaluasi patarosan ka pangkalan data anu dieksekusi nalika aplikasi dijalankeun:
Bersenjata sareng pangaweruh ieu, urang tiasa ngira-ngira naha aplikasina ngalambatkeun sareng damel sareng pamekar pikeun ngadamel strategi pikeun ngabéréskeun masalah. Kanyataanana, New Relic henteu salawasna masihan gambaran anu jelas, tapi ngabantosan milih véktor panalungtikan:
panjang PDO::Construct ngarah urang kana fungsi aneh pgpoll;
instability kana waktu Memcache::Get ngusulkeun yén mesin virtual ieu ngonpigurasi leres;
waktos curiga ngaronjat pikeun ngolah template ngarah ka loop nested mariksa ayana 500 avatars dina gudang obyék;
teras salajengna…
Éta ogé kajadian yén tinimbang ngalaksanakeun kode, aya anu aya hubunganana sareng panyimpenan data éksternal tumbuh dina layar utama - sareng henteu masalah naon éta: Redis atanapi PostgreSQL - aranjeunna sadayana disumputkeun dina tab. basis data.
Anjeun tiasa milih dasar khusus pikeun panalungtikan sareng nyortir patarosan - sami sareng kumaha éta dilakukeun dina Transaksi. Sareng ku buka tab pamundut, anjeun tiasa ningali sabaraha kali pamundut ieu lumangsung dina unggal pangendali aplikasi, sareng ogé estimasi sabaraha sering disebut. Éta pisan nyaman:
Tab ngandung data anu sami Jasa éksternal, nu nyumputkeun pamundut ka jasa HTTP éksternal, kayaning ngakses gudang obyék, ngirim acara ka sentry, atawa kawas. Eusi tabna sami sareng Databases:
Pesaing: kasempetan jeung tayangan
Ayeuna anu paling pikaresepeun nyaéta ngabandingkeun kamampuan New Relic sareng anu ditawarkeun pesaing. Hanjakalna, kami henteu tiasa nguji sadaya tilu alat dina hiji vérsi hiji aplikasi anu dijalankeun dina produksi. Najan kitu, urang nyoba ngabandingkeun kaayaan / konfigurasi nu éta salaku idéntik sabisa.
1.Datadog
Datadog ngabagéakeun kami kalayan panel kalayan témbok jasa:
Ieu nyoba megatkeun aplikasi kana komponén / microservices, jadi dina conto aplikasi Django urang bakal ningali 2 sambungan kana PostgreSQL (defaultdb и postgres), kitu ogé Seledri, Redis. Gawe sareng Datadog merlukeun anjeun gaduh pangaweruh minimal ngeunaan prinsip MVC: Anjeun kudu ngarti ti mana requests pamaké umumna asalna. Ieu biasana mantuan peta jasa:
Ku jalan kitu, aya anu sami dina New Relic:
... jeung peta maranéhanana, dina pamadegan mah, dijieun basajan tur jelas: teu nembongkeun komponén hiji aplikasi (anu bakal nyieun overly lengkep, sakumaha dina kasus Datadog), tapi ngan jasa husus atawa microservices.
Hayu urang balik deui ka Datadog: tina peta jasa urang tiasa ningali yén pamundut pangguna sumping ka Django. Hayu urang angkat ka jasa Django sareng tungtungna ningali naon anu kami ngarepkeun:
Hanjakal, teu aya grafik di dieu sacara standar waktos urus web, sami sareng anu urang tingali dina panel New Relic utama. Sanajan kitu, eta bisa ngonpigurasi di tempat jadwal % waktos spent. Ieu cukup pikeun pindah ka Rata-rata waktos per pamundut ku Tipe... tur ayeuna grafik akrab keur nempo urang!
Naha Datadog milih bagan anu béda mangrupikeun misteri pikeun urang. Hal frustrating sejen nyaeta sistem teu apal pilihan pamaké (teu kawas duanana pesaing), sarta ku kituna hijina solusi pikeun nyieun panels custom.
Tapi kuring gumbira kalayan kamampuan Datadog pikeun ngalih tina grafik ieu kana métrik server anu aya hubunganana, maca log sareng ngaevaluasi beban dina pawang server wéb (Gunicorn). Sadayana ampir sami sareng New Relic ... komo deui sakedik (log)!
Di handap ieu grafik aya transaksi anu sami sareng New Relic:
Dina Datadog, transaksi disebut sumberdaya. Anjeun tiasa nyortir pangendali dumasar kana jumlah pamundut, ku waktos réspon rata-rata, sareng ku waktos maksimal anu dianggo pikeun waktos anu dipilih.
Anjeun tiasa ngalegaan sumberna sareng ningali sadaya anu parantos kami perhatikeun dina New Relic:
Aya statistik dina sumberdaya, daptar umum telepon internal, sarta conto requests nu bisa diurutkeun ku kode respon ... Ku jalan kitu, insinyur urang bener resep asihan ieu.
Sakur conto sumberdaya di Datadog tiasa dibuka sareng ditalungtik:
Parameter pamundut, bagan kasimpulan waktos anu dianggo dina unggal komponén, sareng bagan curug anu nunjukkeun urutan telepon anu dibere. Anjeun ogé tiasa ngalih ka tampilan tangkal tina bagan curug:
Sareng anu paling pikaresepeun nyaéta ningali beban host dimana pamundutna dieksekusi sareng ningali log pamundut.
Integrasi hébat!
Anjeun tiasa heran dimana tabna basis data и Jasa éksternal, sakumaha dina New Relic. Henteu aya di dieu: kumargi Datadog ngarobih aplikasi kana komponén, PostgreSQL bakal dianggap jasa misah, sarta tinimbang Layanan éksternal éta patut pilari aws.storage (éta bakal sami pikeun unggal jasa éksternal sanés anu tiasa diaksés ku aplikasi).
Ieu conto sareng postgres:
Intina aya sadayana anu urang pikahoyong:
Anjeun tiasa ningali mana "jasa" paménta éta asalna.
Éta moal salah pikeun ngingetkeun yén Datadog ngahijikeun sampurna sareng NGINX Ingress sareng ngamungkinkeun anjeun pikeun ngalacak tungtung-ka-tungtung tina waktos pamundut sumping dina kluster, sareng ogé ngamungkinkeun anjeun nampi métrik statsd, ngumpulkeun log sareng métrik host. .
A tambah badag tina Datadog nyaeta harga na nuju ngawangun ti ngawaskeun infrastruktur, APM, Manajemén Log jeung uji Synthetics, i.e. Anjeun tiasa milih rencana anjeun sacara fleksibel.
2.Atatus
Tim Atatus nyatakeun yén jasana "sarua sareng New Relic, tapi langkung saé." Hayu urang tingali lamun ieu bener kitu.
Panel utama katingalina sami, tapi henteu mungkin pikeun nangtukeun Redis sareng memcached anu dianggo dina aplikasi.
APM milih sadaya transaksi sacara standar, sanaos biasana ngan ukur transaksi wéb anu diperyogikeun. Sapertos Datadog, teu aya deui jalan pikeun napigasi ka layanan anu dipikahoyong tina panel utama. Leuwih ti éta, transaksi didaptarkeun sanggeus kasalahan, nu teu sigana pisan logis pikeun APM.
Dina transaksi Atatus, sadayana sami-sami sami sareng New Relic. The downside nyaeta dinamika pikeun tiap controller teu langsung katempo. Anjeun kudu neangan eta dina tabel controller, asihan ku Kalolobaan waktos dihakan:
Daptar biasa tina Controllers sayogi dina tab ngajajah:
Dina sababaraha cara, méja ieu ngingetkeun Datadog sareng kuring resep langkung saé tibatan anu sami dina New Relic.
Anjeun tiasa ngalegaan unggal transaksi sareng ningali naon anu dilakukeun ku aplikasi:
Panel ogé langkung ngingetkeun Datadog: aya sababaraha pamundut, gambaran umum telepon. Panel luhur nyadiakeun tab kasalahan Gagalna HTTP jeung conto queries slow Ngambah Sidang:
Lamun buka urus a, anjeun tiasa ningali conto renik a, anjeun bisa meunangkeun daptar requests ka database jeung kasampak di headers pamundut. Sadayana sami sareng New Relic:
Sacara umum, Atatus resep ngambah rinci - tanpa gluing New Relic has telepon kana blok panginget:
Nanging, teu aya saringan anu (sapertos New Relic) bakal ngiringan pamenta ultra-gancang (<5ms). Di sisi anu sanésna, kuring resep tampilan réspon transaksi ahir (kasuksésan atanapi kasalahan).
Panél basis data bakal ngabantosan anjeun ngulik pamundut ka pangkalan data éksternal anu didamel ku aplikasi. Hayu atuh ngingetan yén Atatus kapanggih ukur PostgreSQL na MySQL, sanajan Redis na memcached ogé kalibet dina proyék.
Paménta diurutkeun dumasar kana kritéria biasa: frékuénsi réspon, waktos réspon rata-rata, sareng sajabana. Abdi ogé hoyong nyebatkeun tab kalayan patarosan anu paling laun - éta saé pisan. Leuwih ti éta, data dina tab ieu pikeun PostgreSQL coincided jeung data ti extension nu pg_stat_statements - hasilna alus teuing!
Tab Requests éksternal lengkep idéntik jeung Databases.
papanggihan
Duanana parabot dibere dipigawé ogé dina peran APM. Salah sahijina tiasa nawiskeun minimum anu diperyogikeun. Tayangan urang tiasa diringkes sakeudeung kieu:
datadog
pro:
jadwal tarif merenah (APM waragad 31 USD per host);
digawé ogé kalawan Python;
Kamungkinan integrasi sareng OpenTracing
integrasi jeung Kubernetes;
integrasi sareng NGINX Ingress.
kontra:
hiji-hijina APM anu nyababkeun aplikasi henteu sayogi kusabab kasalahan modul (predis);
lemah PHP otomatis-instruméntasi;
harti sabagean aneh tina jasa jeung tujuanana.
Atatus
pro:
jero PHP instrumentation;
panganteur pamaké sarupa New Relic.
kontra:
teu dianggo dina sistem operasi heubeul (Ubuntu 12.05, CentOS 5);
lemah otomatis-instruméntasi;
ngadukung ngan ukur dua basa (Node.js sareng PHP);
panganteur slow.
Mertimbangkeun harga Atatus 69 USD per bulan per server, urang leuwih resep ngagunakeun Datadog, nu integrates ogé kalawan kaperluan urang (aplikasi web di K8s) sarta ngabogaan loba fitur mangpaat.