Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Dalam persekitaran jurutera SRE/DevOps, ia tidak akan mengejutkan sesiapa sahaja bahawa suatu hari nanti pelanggan (atau sistem pemantauan) muncul dan melaporkan bahawa "segala-galanya hilang": tapak tidak berfungsi, pembayaran tidak diteruskan, kehidupan semakin merosot ... Tidak kira berapa banyak anda ingin membantu dalam situasi sedemikian , ia boleh menjadi sangat sukar untuk melakukan ini tanpa alat yang mudah dan mudah difahami. Selalunya masalah itu tersembunyi dalam kod aplikasi itu sendiri; anda hanya perlu menyetempatkannya.

Dan dalam kesedihan dan kegembiraan…

Kebetulan kami telah lama dan sangat jatuh cinta dengan New Relic. Ia adalah dan kekal sebagai alat yang sangat baik untuk memantau prestasi aplikasi, dan juga membolehkan anda menggunakan seni bina perkhidmatan mikro (menggunakan ejennya) dan banyak lagi. Dan semuanya boleh menjadi hebat jika bukan kerana perubahan dalam dasar harga perkhidmatan: ia kos dari tahun 2013 meningkat 3+ kali ganda. Di samping itu, sejak tahun lepas, mendapatkan akaun percubaan memerlukan komunikasi dengan pengurus peribadi, yang menjadikannya sukar untuk membentangkan produk kepada bakal pelanggan.

Situasi biasa: Peninggalan Baharu tidak diperlukan secara "kekal"; mereka mengingatinya hanya pada saat masalah bermula. Tetapi anda masih perlu membayar secara tetap (140 USD setiap pelayan sebulan), dan dalam infrastruktur awan yang berskala automatik jumlahnya bertambah besar. Walaupun terdapat pilihan Pay-As-You-Go, mendayakan New Relic akan memerlukan anda untuk memulakan semula aplikasi, yang mungkin membawa kepada kehilangan situasi bermasalah yang mana semuanya dimulakan. Tidak lama dahulu, New Relic memperkenalkan pelan tarif baharu - Essentials, - yang pada pandangan pertama kelihatan seperti alternatif yang munasabah kepada Profesional... tetapi setelah diteliti lebih dekat ternyata beberapa fungsi penting hilang (khususnya, ia tidak mempunyai Transaksi Utama, Pengesanan Aplikasi Silang, Pengesanan Teragih).

Akibatnya, kami mula berfikir tentang mencari alternatif yang lebih murah, dan pilihan kami jatuh pada dua perkhidmatan: Datadog dan Atatus. Mengapa pada mereka?

Mengenai pesaing

Biar saya katakan dengan segera bahawa terdapat penyelesaian lain di pasaran. Kami juga mempertimbangkan pilihan Sumber Terbuka, tetapi tidak setiap pelanggan mempunyai kapasiti percuma untuk mengehoskan penyelesaian yang dihoskan sendiri... - selain itu, ia memerlukan penyelenggaraan tambahan. Pasangan yang kami pilih ternyata paling rapat keperluan kita:

  • sokongan terbina dalam dan dibangunkan untuk aplikasi PHP (timbunan pelanggan kami sangat pelbagai, tetapi ini adalah peneraju yang jelas dalam konteks mencari alternatif kepada New Relic);
  • kos berpatutan (kurang daripada 100 USD sebulan bagi setiap hos);
  • peralatan automatik;
  • penyepaduan dengan Kubernetes;
  • Persamaan dengan antara muka New Relic adalah tambahan yang ketara (kerana jurutera kami sudah biasa dengannya).

Oleh itu, pada peringkat pemilihan awal, kami menghapuskan beberapa penyelesaian popular lain, dan khususnya:

  • Tideways, AppDynamics dan Dynatrace - untuk kos;
  • Stackify disekat di Persekutuan Rusia dan menunjukkan terlalu sedikit data.

Selebihnya artikel disusun sedemikian rupa sehingga penyelesaian yang dipersoalkan akan dibentangkan secara ringkas dahulu, selepas itu saya akan bercakap tentang interaksi biasa kami dengan New Relic dan pengalaman/terasan daripada melaksanakan operasi serupa dalam perkhidmatan lain.

Persembahan pesaing terpilih

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus
pada Relik Baru, mungkin semua orang pernah dengar? Perkhidmatan ini memulakan pembangunannya lebih daripada 10 tahun yang lalu, pada tahun 2008. Kami telah menggunakannya secara aktif sejak 2012 dan tidak mempunyai masalah untuk menyepadukan sejumlah besar aplikasi dalam PHP, Ruby dan Python, dan kami juga mempunyai pengalaman menyepadukan dengan C# dan Go. Pengarang perkhidmatan mempunyai penyelesaian untuk memantau aplikasi, infrastruktur, mengesan infrastruktur perkhidmatan mikro, mencipta aplikasi mudah untuk peranti pengguna dan banyak lagi.

Walau bagaimanapun, ejen New Relic berjalan pada protokol proprietari dan tidak menyokong OpenTracing. Instrumen lanjutan memerlukan pengeditan khusus untuk New Relic. Akhirnya, sokongan Kubernetes masih bersifat eksperimen.

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus
Memulakan pembangunannya pada tahun 2010 anjing data kelihatan lebih menarik daripada New Relic dengan tepat dari segi penggunaan dalam persekitaran Kubernetes. Khususnya, ia menyokong penyepaduan dengan NGINX Ingress, pengumpulan log, statsd dan protokol OpenTracing, yang membolehkan anda menjejak permintaan pengguna dari saat ia disambungkan hingga selesai, serta mencari log untuk permintaan ini (kedua-duanya di sisi pelayan web dan pada pengguna).

Apabila menggunakan Datadog, kami mendapati ia kadangkala membina peta perkhidmatan mikro dengan tidak betul, dan beberapa kelemahan teknikal. Contohnya, ia tersilap mengenal pasti jenis perkhidmatan (tersilap Django sebagai perkhidmatan caching) dan menyebabkan 500 ralat dalam aplikasi PHP menggunakan perpustakaan Predis yang popular.

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus
Atatus - instrumen termuda; perkhidmatan ini dilancarkan pada 2014. Belanjawan pemasarannya jelas lebih rendah daripada pesaing yang disenaraikan, sebutan adalah kurang biasa. Walau bagaimanapun, alat itu sendiri sangat serupa dengan New Relic, bukan sahaja dalam keupayaannya (APM, Pemantauan Pelayar, dll.), tetapi juga dalam penampilan.

Kelemahan yang ketara ialah ia hanya menyokong Node.js dan PHP. Sebaliknya, ia dilaksanakan dengan ketara lebih baik daripada Datadog. Tidak seperti yang terakhir, Atatus tidak memerlukan aplikasi untuk membuat pengubahsuaian atau menambah label tambahan pada kod.

Cara kami bekerja dengan New Relic

Sekarang mari kita fikirkan bagaimana kita biasanya menggunakan New Relic. Katakan kita mempunyai masalah yang memerlukan penyelesaian:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Ia mudah dilihat pada graf lonjakan - Mari kita menganalisisnya. Dalam New Relic, urus niaga web serta-merta dipilih untuk aplikasi web, semua komponen ditunjukkan dalam graf prestasi, terdapat panel kadar ralat, kadar permintaan... Apa yang paling penting ialah terus daripada panel ini anda boleh bergerak antara yang berbeza bahagian aplikasi (contohnya, mengklik pada MySQL akan membawa ke bahagian pangkalan data).

Oleh kerana dalam contoh yang sedang dipertimbangkan kita melihat lonjakan dalam aktiviti PHP, klik pada carta ini dan secara automatik pergi ke Urusniaga:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Senarai urus niaga, yang pada asasnya adalah pengawal daripada model MVC, telah diisih mengikut Paling memakan masa, yang sangat mudah: kami segera melihat apa yang dilakukan oleh aplikasi. Berikut ialah contoh pertanyaan panjang yang dikumpulkan secara automatik oleh New Relic. Dengan menukar pengisihan, mudah dicari:

  • pengawal aplikasi yang paling dimuatkan;
  • pengawal yang paling kerap diminta;
  • pengawal yang paling perlahan.

Selain itu, anda boleh mengembangkan setiap urus niaga dan melihat perkara yang dilakukan oleh aplikasi pada masa kod itu dilaksanakan:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Akhir sekali, aplikasi menyimpan contoh jejak permintaan yang panjang (yang mengambil masa lebih daripada 2 saat). Berikut ialah panel untuk transaksi yang panjang:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Ia boleh dilihat bahawa dua kaedah mengambil banyak masa, dan pada masa yang sama apabila permintaan itu dilaksanakan, URI dan domainnya juga ditunjukkan. Selalunya ini membantu mencari permintaan dalam log. Pergi ke Perincian jejak, anda boleh melihat dari mana kaedah ini dipanggil:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Dan dalam Pertanyaan pangkalan data — menilai pertanyaan kepada pangkalan data yang telah dilaksanakan semasa aplikasi sedang berjalan:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Berbekalkan pengetahuan ini, kita boleh menilai mengapa aplikasi menjadi perlahan dan bekerjasama dengan pembangun untuk menghasilkan strategi untuk menyelesaikan masalah. Pada hakikatnya, New Relic tidak selalu memberikan gambaran yang jelas, tetapi ia membantu untuk memilih vektor penyiasatan:

  • lama PDO::Construct membawa kami kepada fungsi pelik pgpoll;
  • ketidakstabilan dari semasa ke semasa Memcache::Get mencadangkan bahawa mesin maya telah dikonfigurasikan secara tidak betul;
  • peningkatan masa yang mencurigakan untuk pemprosesan templat membawa kepada gelung bersarang yang memeriksa kehadiran 500 avatar dalam storan objek;
  • dan lain-lain…

Ia juga berlaku bahawa bukannya melaksanakan kod, sesuatu yang berkaitan dengan storan data luaran tumbuh pada skrin utama - dan tidak kira apa itu: Redis atau PostgreSQL - semuanya tersembunyi dalam tab Pangkalan data lain.

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Anda boleh memilih asas khusus untuk penyelidikan dan mengisih pertanyaan - serupa dengan cara ia dilakukan dalam Transaksi. Dan dengan pergi ke tab permintaan, anda boleh melihat berapa kali permintaan ini berlaku dalam setiap pengawal aplikasi, dan juga menganggarkan kekerapan permintaan ini dipanggil. Ia sangat selesa:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Tab mengandungi data yang serupa Perkhidmatan Luaran, yang menyembunyikan permintaan kepada perkhidmatan HTTP luaran, seperti mengakses storan objek, menghantar acara kepada sentri atau sebagainya. Tab ini sama sekali kandungannya dengan Pangkalan Data:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Pesaing: peluang dan tanggapan

Sekarang perkara yang paling menarik ialah membandingkan keupayaan New Relic dengan apa yang ditawarkan oleh pesaing. Malangnya, kami tidak dapat menguji ketiga-tiga alatan pada satu versi satu aplikasi yang dijalankan dalam pengeluaran. Walau bagaimanapun, kami cuba membandingkan situasi/konfigurasi yang seiras mungkin.

1.Datadog

Datadog menyambut kami dengan panel dengan dinding perkhidmatan:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Ia cuba memecahkan aplikasi kepada komponen/perkhidmatan mikro, jadi dalam contoh aplikasi Django kita akan melihat 2 sambungan ke PostgreSQL (defaultdb и postgres), serta Saderi, Redis. Bekerja dengan Datadog memerlukan anda mempunyai pengetahuan minimum tentang prinsip MVC: anda perlu memahami dari mana permintaan pengguna biasanya datang. Ini biasanya membantu peta perkhidmatan:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

By the way, ada sesuatu yang serupa dalam New Relic:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

... dan peta mereka, pada pendapat saya, dibuat lebih mudah dan jelas: ia tidak memaparkan komponen satu aplikasi (yang akan menjadikannya terlalu terperinci, seperti dalam kes Datadog), tetapi hanya perkhidmatan atau perkhidmatan mikro tertentu.

Mari kembali ke Datadog: dari peta perkhidmatan kita dapat melihat bahawa permintaan pengguna datang ke Django. Mari pergi ke perkhidmatan Django dan akhirnya lihat apa yang kami jangkakan:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Malangnya, tiada graf di sini secara lalai Masa transaksi web, sama seperti yang kita lihat pada panel New Relic utama. Walau bagaimanapun, ia boleh dikonfigurasikan sebagai ganti jadual % daripada Masa yang dibelanjakan. Ia cukup untuk menukarnya Purata masa setiap permintaan mengikut Jenis... dan kini graf yang biasa melihat kami!

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Mengapa Datadog memilih carta yang berbeza adalah misteri kepada kami. Satu lagi perkara yang mengecewakan ialah sistem tidak mengingati pilihan pengguna (tidak seperti kedua-dua pesaing), dan oleh itu satu-satunya penyelesaian ialah membuat panel tersuai.

Tetapi saya gembira dengan keupayaan dalam Datadog untuk beralih daripada graf ini kepada metrik pelayan yang berkaitan, membaca log dan menilai beban pada pengendali pelayan web (Gunicorn). Semuanya hampir sama seperti dalam New Relic... malah lebih sedikit lagi (log)!

Di bawah graf adalah urus niaga yang serupa dengan New Relic:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Dalam Datadog, transaksi dipanggil sumber. Anda boleh mengisih pengawal mengikut bilangan permintaan, mengikut purata masa tindak balas dan mengikut masa maksimum yang dibelanjakan untuk tempoh masa yang dipilih.

Anda boleh mengembangkan sumber dan melihat semua yang telah kami perhatikan dalam New Relic:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Terdapat statistik tentang sumber, senarai umum panggilan dalaman dan contoh permintaan yang boleh diisih mengikut kod respons... Sebenarnya, jurutera kami sangat menyukai pengisihan ini.

Sebarang contoh sumber dalam Datadog boleh dibuka dan dipelajari:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Parameter permintaan, carta ringkasan masa yang dibelanjakan untuk setiap komponen dan carta air terjun yang menunjukkan urutan panggilan dibentangkan. Anda juga boleh bertukar kepada paparan pokok carta air terjun:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Dan perkara yang paling menarik ialah melihat beban hos di mana permintaan itu dilaksanakan dan melihat log permintaan.

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Integrasi yang hebat!

Anda mungkin tertanya-tanya di mana tab itu berada Pangkalan data lain и Perkhidmatan Luaran, seperti dalam New Relic. Tiada di sini: memandangkan Datadog menguraikan aplikasi menjadi komponen, PostgreSQL akan dipertimbangkan perkhidmatan yang berasingan, dan bukannya Perkhidmatan Luaran, ia patut dicari aws.storage (ia akan serupa untuk setiap perkhidmatan luaran lain yang boleh diakses oleh aplikasi).

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Berikut adalah contoh dengan postgres:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Pada asasnya terdapat semua yang kami mahu:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Anda boleh melihat "perkhidmatan" mana permintaan itu datang.

Tidak salah untuk mengingatkan anda bahawa Datadog berintegrasi sempurna dengan NGINX Ingress dan membolehkan anda melakukan pengesanan hujung ke hujung dari saat permintaan tiba dalam kluster, dan juga membolehkan anda menerima metrik statistik, mengumpul log dan metrik hos .

Kelebihan besar Datadog ialah harganya berkembang daripada pemantauan infrastruktur, APM, Pengurusan Log dan ujian Sintetik, i.e. Anda boleh memilih pelan anda secara fleksibel.

2.Atatus

Pasukan Atatus mendakwa bahawa perkhidmatan mereka adalah "sama dengan New Relic, tetapi lebih baik." Mari kita lihat jika ini benar-benar begitu.

Panel utama memang kelihatan serupa, tetapi tidak mungkin untuk menentukan Redis dan memcached yang digunakan dalam aplikasi.

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

APM memilih semua transaksi secara lalai, walaupun biasanya hanya transaksi Web diperlukan. Seperti Datadog, tiada cara untuk menavigasi ke perkhidmatan yang dikehendaki dari panel utama. Selain itu, urus niaga disenaraikan selepas ralat, yang nampaknya tidak begitu logik untuk APM.

Dalam urus niaga Atatus, segala-galanya serupa mungkin dengan New Relic. Kelemahannya ialah dinamik untuk setiap pengawal tidak dapat dilihat dengan serta-merta. Anda perlu mencarinya dalam jadual pengawal, menyusun mengikut Paling Banyak Digunakan Masa:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Senarai biasa pengawal tersedia dalam tab Meneroka:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Dalam beberapa cara, jadual ini mengingatkan Datadog dan saya lebih menyukainya daripada yang serupa dalam New Relic.

Anda boleh mengembangkan setiap transaksi dan melihat perkara yang dilakukan oleh aplikasi:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Panel ini juga lebih mengingatkan Datadog: terdapat beberapa permintaan, gambaran umum panggilan. Panel atas menyediakan tab ralat Kegagalan HTTP dan contoh pertanyaan lambat Jejak Sesi:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Jika anda pergi ke transaksi, anda boleh melihat contoh jejak, anda boleh mendapatkan senarai permintaan ke pangkalan data dan melihat pengepala permintaan. Semuanya serupa dengan New Relic:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Secara umum, Atatus berpuas hati dengan kesan terperinci - tanpa menempelkan Relik Baharu biasa panggilan ke dalam blok peringatan:

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus
Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Walau bagaimanapun, ia tidak mempunyai penapis yang (seperti New Relic) akan memotong permintaan sangat pantas (<5ms). Sebaliknya, saya menyukai paparan respons transaksi terakhir (berjaya atau ralat).

Pane Pangkalan data lain akan membantu anda mengkaji permintaan kepada pangkalan data luaran yang dibuat oleh aplikasi. Biar saya ingatkan anda bahawa Atatus hanya menemui PostgreSQL dan MySQL, walaupun Redis dan memcached juga terlibat dalam projek itu.

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Permintaan diisih mengikut kriteria biasa: kekerapan respons, purata masa tindak balas dan sebagainya. Saya juga ingin menyebut tab dengan pertanyaan paling perlahan - ia sangat mudah. Selain itu, data dalam tab ini untuk PostgreSQL bertepatan dengan data daripada sambungan pg_stat_statements - keputusan cemerlang!

Bukan Relik Baru sahaja: ​​lihat Datadog dan Atatus

Tab Permintaan Luar sama sepenuhnya dengan Pangkalan Data.

Penemuan

Kedua-dua alatan yang dibentangkan telah menunjukkan prestasi yang baik dalam peranan APM. Mana-mana daripada mereka boleh menawarkan minimum yang diperlukan. Tanggapan kami boleh diringkaskan secara ringkas seperti berikut:

anjing data

Kelebihan:

  • jadual tarif yang mudah (APM berharga 31 USD bagi setiap hos);
  • bekerja dengan baik dengan Python;
  • Kemungkinan penyepaduan dengan OpenTracing
  • penyepaduan dengan Kubernetes;
  • integrasi dengan NGINX Ingress.

Cons:

  • satu-satunya APM yang menyebabkan aplikasi menjadi tidak tersedia kerana ralat modul (predis);
  • instrumen auto PHP yang lemah;
  • takrif perkhidmatan yang agak pelik dan tujuannya.

Atatus

Kelebihan:

  • instrumentasi PHP yang mendalam;
  • antara muka pengguna serupa dengan New Relic.

Cons:

  • tidak berfungsi pada sistem pengendalian lama (Ubuntu 12.05, CentOS 5);
  • auto-instrumentasi yang lemah;
  • sokongan untuk dua bahasa sahaja (Node.js dan PHP);
  • Antara muka perlahan.

Memandangkan harga Atatus sebanyak 69 USD sebulan setiap pelayan, kami lebih suka menggunakan Datadog, yang menyepadukan dengan baik dengan keperluan kami (aplikasi web dalam K8s) dan mempunyai banyak ciri berguna.

PS

Baca juga di blog kami:

Sumber: www.habr.com

Tambah komen