Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pencatatan log
Logging adalah proses menyimpan data tentang peristiwa yang terjadi dalam suatu sistem. Log dapat mencakup masalah, kesalahan, atau informasi tentang operasi saat ini. Log dapat diklasifikasikan ke dalam berbagai jenis, seperti berikut ini:
-
Log peristiwa
-
Log server
-
Log sistem
-
Otorisasi dan akses log
-
Log audit
Pengembang dapat mencari log untuk kode atau pola kesalahan tertentu, memfilternya berdasarkan bidang tertentu, atau mengarsipkannya dengan aman untuk analisis masa depan. Log membantu pengembang untuk melakukan analisis akar penyebab untuk masalah kinerja dan juga untuk berkorelasi antara komponen sistem.
Membangun solusi logging yang efektif melibatkan koordinasi yang erat antara tim aplikasi dan infrastruktur. Log aplikasi tidak berguna kecuali ada infrastruktur logging yang dapat diskalakan yang mendukung kasus penggunaan seperti parsing, filtering, buffering, dan korelasi log. Kasus penggunaan umum, seperti menghasilkan ID korelasi, mencatat waktu berjalan untuk metode penting bisnis, dan mendefinisikan pola log, dapat disederhanakan.
Tim aplikasi
Pengembang aplikasi harus memastikan bahwa log yang dihasilkan mengikuti praktik terbaik pencatatan. Praktik terbaik meliputi:
-
Menghasilkan ID korelasi untuk melacak permintaan unik
-
Mencatat waktu yang dibutuhkan oleh metode bisnis yang kritis
-
Logging pada tingkat log yang sesuai
-
Berbagi pustaka logging umum
Saat Anda merancang aplikasi yang berinteraksi dengan layanan mikro yang berbeda, gunakan prinsip desain logging ini untuk menyederhanakan penyaringan dan ekstraksi log di backend.
Menghasilkan ID korelasi untuk melacak permintaan unik
Ketika aplikasi menerima permintaan, itu dapat memeriksa apakah ID korelasi sudah ada di header. Jika ID tidak ada, aplikasi harus menghasilkan ID. Misalnya, Application Load Balancer menambahkan header yang disebut. X-Amzn-Trace-Id
Aplikasi dapat menggunakan header untuk menghubungkan permintaan dari penyeimbang beban ke aplikasi. Demikian pula, aplikasi harus menyuntikkan traceId
jika memanggil layanan mikro dependen sehingga log yang dihasilkan oleh komponen yang berbeda dalam aliran permintaan berkorelasi.
Mencatat waktu yang dibutuhkan oleh metode bisnis yang kritis
Ketika aplikasi menerima permintaan, ia berinteraksi dengan komponen yang berbeda. Aplikasi harus mencatat waktu yang dibutuhkan untuk metode bisnis kritis dalam pola yang ditentukan. Ini dapat membuatnya lebih mudah untuk mengurai log di backend. Ini juga dapat membantu Anda menghasilkan wawasan yang berguna dari log. Anda dapat menggunakan pendekatan seperti pemrograman berorientasi aspek (AOP) untuk menghasilkan log tersebut sehingga Anda dapat memisahkan masalah logging dari logika bisnis Anda.
Logging pada tingkat log yang sesuai
Aplikasi harus menulis log yang memiliki jumlah informasi yang bermanfaat. Gunakan level log untuk mengkategorikan peristiwa berdasarkan tingkat keparahannya. Misalnya, gunakan WARNING
dan ERROR
tingkatkan untuk peristiwa penting yang perlu diselidiki. Gunakan INFO
dan DEBUG
untuk penelusuran mendetail dan peristiwa volume tinggi. Atur penangan log untuk menangkap hanya level yang diperlukan dalam produksi. Menghasilkan terlalu banyak logging di INFO
level tersebut tidak membantu, dan itu menambah tekanan dalam infrastruktur backend. DEBUG
logging bisa bermanfaat, tetapi harus digunakan dengan hati-hati. Menggunakan DEBUG
log dapat menghasilkan volume data yang besar, sehingga tidak direkomendasikan dalam lingkungan pengujian kinerja.
Berbagi pustaka logging umum
Tim aplikasi harus menggunakan pustaka logging umum, seperti AWS SDK untuk Java, dengan pola logging umum yang telah ditentukan sebelumnya yang dapat digunakan pengembang sebagai dependensi dalam proyek mereka.
Tim infrastruktur
DevOps insinyur dapat mengurangi upaya dengan menggunakan prinsip desain logging berikut saat memfilter dan mengekstraksi log di backend. Tim infrastruktur harus mengatur dan mendukung sumber daya berikut.
Agen log
Agen log (pengirim log) adalah program yang membaca log dari satu lokasi dan mengirimkannya ke lokasi lain. Agen log digunakan untuk membaca file log yang disimpan di komputer dan mengunggah peristiwa log ke backend untuk sentralisasi.
Log adalah data tidak terstruktur yang harus terstruktur sebelum Anda dapat membuat wawasan yang berarti darinya. Agen log menggunakan parser untuk membaca pernyataan log dan mengekstrak bidang yang relevan seperti stempel waktu, tingkat log, dan nama layanan, dan mereka menyusun data tersebut ke dalam format JSON. Memiliki agen log ringan di tepi berguna karena mengarah pada pemanfaatan sumber daya yang lebih sedikit. Agen log dapat langsung mendorong ke backend, atau dapat menggunakan forwarder log perantara yang mendorong data ke backend. Menggunakan pengirim log membongkar pekerjaan dari agen log di sumbernya.
Pengurai log
Sebuah parser log mengubah log yang tidak terstruktur menjadi log terstruktur. Parser agen log juga memperkaya log dengan menambahkan metadata. Penguraian data data dapat dilakukan di sumber (akhir aplikasi) atau dapat dilakukan secara terpusat. Skema untuk menyimpan log harus dapat diperluas sehingga Anda dapat menambahkan bidang baru. Sebaiknya gunakan format log standar seperti JSON. Namun, dalam beberapa kasus, log harus diubah ke format JSON untuk pencarian yang lebih baik. Menulis ekspresi parser yang tepat memungkinkan transformasi yang efisien.
Log backend
Layanan backend log mengumpulkan, menyerap, dan memvisualisasikan data log dari berbagai sumber. Agen log dapat langsung menulis ke backend atau menggunakan forwarder log perantara. Saat pengujian kinerja, pastikan untuk menyimpan log sehingga dapat dicari di lain waktu. Simpan log di backend secara terpisah untuk setiap aplikasi. Misalnya, gunakan indeks khusus untuk aplikasi, dan gunakan pola indeks untuk mencari log yang tersebar di berbagai aplikasi terkait. Kami merekomendasikan menyimpan setidaknya 7 hari data untuk pencarian log. Namun, menyimpan data untuk durasi yang lebih lama dapat mengakibatkan biaya penyimpanan yang tidak perlu. Karena volume log yang besar dihasilkan selama pengujian kinerja, penting bagi infrastruktur logging untuk menskalakan dan mengukur backend logging dengan benar.
Visualisasi log
Untuk mendapatkan wawasan yang bermakna dan dapat ditindaklanjuti dari log aplikasi, gunakan alat visualisasi khusus untuk memproses dan mengubah data log mentah menjadi representasi grafis. Visualisasi seperti bagan, grafik, dan dasbor dapat membantu mengungkap tren, pola, dan anomali yang mungkin tidak mudah terlihat saat melihat log mentah.
Manfaat utama menggunakan alat visualisasi termasuk kemampuan untuk mengkorelasikan data di berbagai sistem dan aplikasi untuk mengidentifikasi dependensi dan kemacetan. Dasbor interaktif mendukung pengeboran data pada tingkat perincian yang berbeda untuk memecahkan masalah atau melihat tren penggunaan. Platform visualisasi data khusus menyediakan kemampuan seperti analitik, peringatan, dan berbagi data yang dapat meningkatkan pemantauan dan analisis.
Dengan menggunakan kekuatan visualisasi data pada log aplikasi, tim pengembangan dan operasi dapat memperoleh visibilitas ke dalam kinerja sistem dan aplikasi. Wawasan yang diperoleh dapat digunakan untuk berbagai tujuan, termasuk mengoptimalkan efisiensi, meningkatkan pengalaman pengguna, meningkatkan keamanan, dan perencanaan kapasitas. Hasil akhirnya adalah dasbor yang disesuaikan dengan berbagai pemangku kepentingan, memberikan at-a-glance pandangan yang merangkum data log menjadi informasi yang dapat ditindaklanjuti dan berwawasan luas.
Mengotomatiskan infrastruktur logging
Karena aplikasi yang berbeda memiliki persyaratan yang berbeda, penting untuk mengotomatiskan instalasi dan pengoperasian infrastruktur logging. Gunakan alat infrastruktur sebagai kode (IAc) untuk menyediakan backend infrastruktur logging. Kemudian Anda dapat menyediakan infrastruktur logging baik sebagai layanan bersama atau sebagai penyebaran pesan lebih dahulu independen untuk aplikasi tertentu.
Kami menyarankan agar pengembang menggunakan pipeline pengiriman berkelanjutan (CD) untuk mengotomatiskan hal-hal berikut:
-
Terapkan infrastruktur logging sesuai permintaan dan hancurkan saat tidak diperlukan.
-
Menyebarkan agen log di berbagai target.
-
Terapkan konfigurasi parser log dan forwarder.
-
Menyebarkan dasbor aplikasi.
Alat pencatatan
AWS menyediakan layanan pencatatan asli, mengkhawatirkan, dan dasbor. Berikut ini adalah populer Layanan AWS dan sumber daya untuk logging:
-
Amazon OpenSearch Service membantu organisasi mengumpulkan, menyerap, dan memvisualisasikan data log dari berbagai sumber. Untuk informasi selengkapnya, lihat Pencatatan Terpusat dengan OpenSearch
. -
CloudWatch Agen Amazon dan AWS Fluent Bit
adalah agen log paling populer di AWS. Untuk informasi tentang penggunaan CloudWatch agen dengan Amazon CloudWatch Logs Insights, lihat posting blog Menyederhanakan log server Apache dengan Amazon CloudWatch Logs Insights. AWS Untuk implementasi referensi Fluent Bit, lihat posting blog Sentralized Container Logging with Fluent Bit.