Panduan Lengkap untuk Pemula: Logging di Docker

Hai teman-teman masa depan yang akan menjadi ahli Docker! Saya sangat senang menjadi panduan Anda dalam perjalanan menarik ini ke dunia logging Docker. Sebagai seseorang yang telah mengajar ilmu komputer selama bertahun-tahun, saya tidak bisa memberitahu Anda berapa kali saya melihat mata murid-muridku bercahaya saat mereka akhirnya mengerti konsep yang kompleks. Jadi, mari kita mulai petualangan ini bersama, dan saya berjanji untuk membuatnya sebisa mungkin menyenangkan dan membangkitkan!

Docker - Logging

Bagaimana Logging Docker Menyusahkan?

Sebelum kita masuk ke dalam, mari kita merasakan air pertama dan memahami apa yang membuat logging Docker unik. Bayangkan Anda mencoba untuk mencatat semua percakapan yang terjadi di pesta yang sibuk. Itu seperti halnya logging Docker, tapi untuk kontainer!

Logging Docker berbeda karena:

  1. Itu berhubungan dengan kontainer yang efemeral.
  2. Itu mengelola banyak instance dari aplikasi yang sama.
  3. Itu perlu mengakumulasi log dari berbagai sumber.

Ini adalah analogi sederhana: Jika logging tradisional seperti mencatat catatan harian, logging Docker seperti mencoba mencatat semua catatan sticky di kantor yang sibuk!

Strategi dan Praktek Terbaik Logging Docker

Sekarang kita memahami mengapa logging Docker istimewa, mari kita lihat beberapa strategi dan praktek terbaik. Pahami ini sebagai "aturan permainan" saat Anda melakukan logging Docker.

Logging Melalui Aplikasi

Ini adalah pendekatan yang paling mudah. Itu seperti meminta setiap orang di pesta untuk mencatat percakapan mereka sendiri.

FROM python:3.8
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

Dalam Dockerfile ini, aplikasi kami (app.py) akan mengelola loggingnya sendiri. Itu sederhana, tapi bisa menjadi kacau jika kita memiliki banyak kontainer.

Logging Dengan Volumes Data

Strategi ini seperti memiliki buku catatan pusat di pesta tempat semua orang mencatat percakapan mereka.

docker run -v /host/path:/container/path my-image

Perintah ini memount sebuah volume, memungkinkan kontainer menulis log ke lokasi tertentu di host.

Logging Dengan Driver Logging Docker

Driver logging Docker seperti memiliki stenografer profesional di pesta, merekam segala sesuatu secara otomatis.

docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=5 my-image

Perintah ini menggunakan driver json-file dan mengatur beberapa opsi untuk rotasi log.

Logging Dengan Kontainer Logging tertentu

Pendekatan ini seperti memiliki orang khusus di pesta yang hanya bertugas untuk mengumpulkan dan mengatur catatan semua orang.

docker run --log-driver=fluentd my-image

Perintah ini menggunakan driver logging Fluentd untuk mengirim log ke kontainer Fluentd.

Logging Melalui Pendekatan Sidecar

Pendekatan sidecar seperti memiliki asisten pribadi untuk setiap orang di pesta, membantu mereka mencatat percakapan mereka.

version: '3'
services:
app:
image: my-app
log_sidecar:
image: log-collector
volumes:
- /var/log/app:/var/log/app

Berkas Docker Compose ini mendefinisikan dua layanan: aplikasi utama dan kontainer sidecar untuk logging.

Cara Kerja dengan Log Kontainer Docker Menggunakan Perintah docker logs?

Perintah docker logs adalah kacamata tebal Anda untuk memeriksa log kontainer. Mari kita lihatnya dalam aksi!

docker logs container_name

Perintah ini menampilkan semua log untuk kontainer tertentu. Tunggu, masih ada lagi!

docker logs --since 1h container_name

Ini menampilkan log dari jam terakhir. Itu seperti memutar waktu di pesta khayalan kita!

Apa Itu Driver Logging?

Driver logging di Docker seperti memilih jenis buku catatan yang Anda inginkan di pesta. Beberapa memiliki fitur khusus, yang lainnya sederhana tapi dapat dipercaya.

Berikut adalah tabel driver logging yang tersedia:

Driver Deskripsi
json-file Logs disimpan dalam format JSON
syslog Menulis pesan log ke syslog
journald Menulis pesan log ke journald
gelf Menulis pesan log ke endpoint GELF
fluentd Menulis pesan log ke fluentd
awslogs Menulis pesan log ke Amazon CloudWatch Logs
splunk Menulis pesan log ke splunk

Cara Mengonfigurasi Driver Logging Docker?

Mengonfigurasi driver logging adalah seperti menentukan aturan untuk sistem catatan catatan pesta kita. Berikut cara melakukannya:

{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}

Konfigurasi ini di /etc/docker/daemon.json mengatur driver logging default ke json-file dan membatasi ukuran dan jumlah file log.

Apa Itu Mode Pengiriman?

Mode pengiriman di logging Docker seperti memilih antara pesan instan dan email untuk komunikasi pesta kita. Dua mode utama adalah:

  1. Mode blokir: Menjamin semua log dikirim, tapi mungkin memperlambat aplikasi.
  2. Mode non-blokir: Menjaga aplikasi berjalan lancar, tapi mungkin kehilangan beberapa log.

Opsi/Flag Driver Logging

Opsi driver logging adalah seperti fitur khusus buku catatan pesta kita. Berikut adalah beberapa yang umum:

Opsi Deskripsi
max-size Ukuran maksimum log sebelum rotasi
max-file Jumlah maksimum file log yang disimpan
labels Daftar terpisah koma dari label yang dimasukkan
env Daftar terpisah koma dari variabel lingkungan

Kesimpulan

Wah! Kita telah menempuh banyak permukaan, kan? Dari memahami apa yang membuat logging Docker istimewa hingga mengeksplorasi berbagai strategi dan perintah, kita telah masuk ke dalam dunia logging Docker.

Ingat, logging di Docker tentang mencatat apa yang terjadi di kontainer Anda. Itu seperti menjadi tuan rumah yang baik yang tahu persis apa yang terjadi dengan setiap tamu. Dengan pengetahuan yang Anda peroleh hari ini, Anda sudah jauh menuju menjadi ahli logging Docker!

FAQ

  1. P: Mengapa logging Docker penting? J: Logging Docker sangat penting untuk troubleshooting, monitoring kesehatan aplikasi, dan memahami perilaku sistem di lingkungan kontainerisasi.

  2. P: Bisakah saya menggunakan beberapa driver logging? J: Ya, Anda dapat menggunakan driver logging yang berbeda untuk kontainer yang berbeda, atau bahkan menggabungkannya menggunakan pendekatan sidecar.

  3. P: Bagaimana saya bisa melihat log secara real-time? J: Gunakan perintah docker logs -f container_name untuk mengikuti output log secara real-time.

  4. P: Apa strategi logging terbaik untuk microservices? J: Untuk microservices, sistem logging terpusat seperti stack ELK (Elasticsearch, Logstash, Kibana) atau menggunakan driver logging seperti fluentd sering direkomendasikan.

  5. P: Bagaimana saya bisa memutar log untuk mengelola ruang disk? J: Gunakan opsi max-size dan max-file dengan driver logging json-file untuk implementasi rotasi log.

Ingat, latihan membuat sempurna! Jangan khawatir untuk mencoba strategi logging yang berbeda dan lihat apa yang cocok terbaik untuk kasus penggunaan Anda. Semoga Anda senang logging, dan may your containers always be chatty (in a good way)!

Credits: Image by storyset