
Ketika aplikasi itu monolitik dan tiba-tiba, setelah didistribusikan, tidak diketahui lagi ditambahkan ke rumus perhitungan ketersediaan - jaringan. Karena masalah dengan panggilan antar komponen, aplikasi sering kali jatuh dan mulai menyentak. Dan menemukan alasan untuk pekerjaan yang tidak stabil dari aplikasi terdistribusi adalah tugas lain. Kekacauan tambahan dalam struktur aplikasi dibuat oleh kubernet bersyarat, yang, atas kebijakannya sendiri, dapat secara sewenang-wenang mendistribusikan pod bersyarat dengan node bersyarat. Saya menulis "kondisional", karena sebagai pengganti kubernet mungkin ada Swarm dan Openshift, dan yang lainnya dan yang lainnya.
Maksud saya, tanpa visualisasi normal, mencari tahu di mana suhunya bisa sangat sulit. Di bawah potongan, ide saya tentang kemampuan potensial alat yang dapat menggambar peta aplikasi dan menyorot tempat untuk menerapkan pisang raja, serta daftar alat-alat ini dengan screenshot.
Mari kita mulai mencari tahu apa yang diinginkan untuk dilihat pada peta aplikasi, maka kita akan mempertimbangkan pendekatan pemantauan dan kemudian kita akan beralih ke vendor tertentu.
Apa yang ingin saya lihat di peta aplikasi
Hal pertama yang terlintas dalam pikiran adalah kemampuan untuk mengelompokkan node aplikasi dengan kriteria tertentu. Sebagai contoh, saya katakan bahwa di grup ini saya punya frontend, dan di backend ini atau di sini saya punya contoh layanan Pembayaran, dan di sini Pengiriman. Ya, dan seterusnya. Dan orang-orang yang bertanggung jawab untuk bagian ini atau itu segera melihat gambaran lengkap tentang apa yang terjadi dalam wilayah tanggung jawab mereka.
Yang kedua adalah untuk meletakkan aplikasi berdasarkan level dengan kemampuan untuk melihat, misalnya, dalam hal infrastruktur, layanan, contoh layanan, dll. Seperti halnya dalam kasus pertama, ini membantu untuk mengidentifikasi lapisan masalah.
Ketiga , output dan input dari node ini, termasuk koneksi di antara mereka. Pada string ini, saya ingin melihat sinyal emas yang dijelaskan Google di Rekayasa Keandalan Situs 6 di Bab 6 dari Pemantauan Sistem Terdistribusi. Saya sudah
menerbitkan terjemahan bab ini
di blog di Medium . Dan sinyalnya adalah sebagai berikut: latensi, lalu lintas (throughput), kesalahan (tingkat kesalahan) dan saturasi (saturasi).
Mungkin saya tidak memperhitungkan sesuatu. Silakan pergi ke komentar jika Anda berpikir bahwa hal-hal penting lainnya hilang.
Apa perbedaan pendekatan pemantauan
Saya tidak tahu apa lagi namanya, karena itu saya akan memanggil agen pendekatan dan pemantauan agen. Sekarang saya akan menjelaskan hu dari hu.
Pemantauan agen
Pemantauan agen berarti kebutuhan untuk mengimplementasikan agen pemantauan khusus dalam aplikasi yang terkontrol. Agen menyematkan jejak ID di header paket.
Jenis ini mencakup solusi pemantauan APM dan semua yang tertanam dengan menyuntikkan SDK ke dalam kode aplikasi.
Pro: membantu menemukan akar penyebab masalah, header dapat secara akurat melacak jalur transaksi.
Cons: overhead mungkin karena modifikasi algoritma aplikasi, ketidakmampuan untuk menanamkan ke dalam aplikasi warisan, dukungan untuk satu set bahasa pemrograman yang terbatas
Pemantauan tanpa agen
Pemantauan tanpa modifikasi aplikasi. Jenis ini termasuk log, penelusuran di tingkat sistem operasi, dan pemantauan lalu lintas jaringan.
Kelebihan: cakupan pemantauan berbagai kerangka kerja dan bahasa pemrograman, dapat bekerja di mana jejak injeksi ID tidak mungkin, tidak ada overhead pada aplikasi yang dikendalikan.
Cons: tanpa jejak ID, bisa sulit untuk mengembalikan konteks transaksi bisnis, ketidakmampuan untuk mendengarkan lalu lintas jika enkapsulasi SSL dikonfigurasi dan tidak ada kunci,
Apa yang ditawarkan vendor
Vendorov dibongkar berdasarkan agen / agen, Anda dapat meminta karakteristik lain dalam komentar atau dalam pesan pribadi. Pengalaman terbesar yang saya miliki dengan Instana, Appdynamics dan New Relic, jika Anda ingin melihatnya, saya dapat membantu dengan lisensi demo untuk jangka waktu lebih dari 14 hari (seperti yang mereka tawarkan di situs mereka secara default).
Pemantauan agen
Instana adalah alat untuk memonitor sistem terdistribusi. Fitur utama adalah agen tunggal untuk semua teknologi yang didukung dan pengumpulan metrik setiap detik.
Appdynamics adalah solusi terkenal untuk pemantauan APM. Mampu membuat peta aplikasi berdasarkan panggilan antar komponen aplikasi. Pemantauan agen diperlukan untuk memonitor panggilan.
Relik Baru adalah pesaing langsung Appdynamics. Perbedaan utama adalah bahwa hanya pemantauan dari cloud yang dimungkinkan (agen juga diinstal pada server target). Membuat peta aplikasi berdasarkan panggilan.
Dynatrace adalah alat pemantauan APM. Ini mendukung pemantauan berbagai bahasa pemrograman dan dapat bekerja baik dari cloud dan di tempat.
AWS X-Ray - Memantau aplikasi yang dihosting di AWS. Mendukung visualisasi peta aplikasi, membutuhkan instalasi SDK sendiri.
OpenTracing adalah API untuk instrumentasi aplikasi terdistribusi. Banyak
solusi komersial dan non-komersial didasarkan pada API ini.
Jaeger adalah alat perdagangan open source gratis. Dibangun berdasarkan OpenTracing.
Datadog APM adalah alat komersial untuk memantau aplikasi terdistribusi. Ini bekerja berdasarkan OpenTracing yang disebutkan.

Pemantauan tanpa agen
OpenZipkin adalah alat gratis untuk melacak aplikasi terdistribusi. Fitur karyanya adalah pengumpulan data tentang panggilan menggunakan perpustakaan instrumentasi dan pengiriman lebih lanjut dari data ini ke kolektor OpenZipkin.
Linkerd adalah alat gratis untuk melacak panggilan dalam aplikasi. Ini adalah add-on untuk OpenZipkin, diinstal pada infrastruktur kubernetes sebagai wadah sespan.
Utusan adalah alat gratis. Ini berfungsi sebagai proksi ke mana data panggilan dikirim antara komponen aplikasi. Tidak ada antarmuka web sendiri, data dapat diterima melalui permintaan GET HTTP atau dikirim ke statsd.
Netsil adalah alat untuk memonitor aplikasi yang didistribusikan berdasarkan pada mendengarkan lalu lintas. Ini berfungsi terlepas dari bahasa di mana aplikasi itu ditulis.

Katakan siapa yang menggunakan apa dan kesan apa yang tersisa.