Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pencatatan
Aplikasi kontainer biasanya mengarahkan log aplikasi ke STDOUT. Runtime wadah menjebak log ini dan melakukan sesuatu dengannya - biasanya menulis ke file. Di mana file-file ini disimpan tergantung pada runtime dan konfigurasi wadah.
Satu perbedaan mendasar dengan pod Windows adalah mereka tidak menghasilkan STDOUT. Anda dapat menjalankan LogMonitor
Mekanisme pengumpulan log mengambil STDOUT/STDERR log dari pod Kubernetes. A DaemonSet
Informasi lebih rinci tentang streaming log dari beban kerja Windows ke CloudWatch dijelaskan di sini https://aws.amazon.com/blogs/containers/streaming-logs-from-amazon-eks-windows-pods-to-amazon-cloudwatch-logs-using-fluentd/
Rekomendasi Pencatatan Logging
Praktik terbaik logging umum tidak berbeda saat mengoperasikan beban kerja Windows di Kubernetes.
-
Selalu log entri log terstruktur (JSON/SYSLOG) yang membuat penanganan entri log lebih mudah karena ada banyak parser pra-tertulis untuk format terstruktur tersebut.
-
Sentralisasi log - wadah logging khusus dapat digunakan secara khusus untuk mengumpulkan dan meneruskan pesan log dari semua wadah ke tujuan
-
Pertahankan verbositas log tetap rendah kecuali saat debugging. Verbositas menempatkan banyak tekanan pada infrastruktur penebangan dan peristiwa penting dapat hilang dalam kebisingan.
-
Selalu catat informasi aplikasi bersama dengan transaction/request id untuk keterlacakan. Objek Kubernetes tidak membawa nama aplikasi, jadi misalnya nama pod
windows-twryrqywmungkin tidak memiliki arti apa pun saat men-debug log. Ini membantu dengan penelusuran dan pemecahan masalah aplikasi dengan log gabungan Anda.Bagaimana Anda menghasilkan transaction/correlation id ini tergantung pada konstruksi pemrograman. Tetapi pola yang sangat umum adalah menggunakan logging Aspect/Interceptor, yang dapat menggunakan MDC
(konteks diagnostik yang dipetakan) untuk menyuntikkan transaction/correlation id unik ke setiap permintaan yang masuk, seperti:
import org.slf4j.MDC; import java.util.UUID; Class LoggingAspect { //interceptor @Before(value = "execution(* *.*(..))") func before(...) { transactionId = generateTransactionId(); MDC.put(CORRELATION_ID, transactionId); } func generateTransactionId() { return UUID.randomUUID().toString(); } }