GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Pemantauan Docker Containers:Manfaat, Praktik Terbaik, dan Alat yang Harus Dimiliki

Delapan tahun yang lalu kontainer adalah teknologi yang dikenal, tetapi dengan sedikit adopsi publik. Kemudian, Solomon Hykes menciptakan Docker, sebuah teknologi container, yang membuat container lebih mudah digunakan. Saat ini, container menguasai dunia IT. Gartner memperkirakan 70% organisasi akan menjalankan aplikasi dalam container pada tahun 2023.

Mengapa? Organisasi menyadari manfaat dari konfigurasi yang lebih mudah, penerapan yang lebih cepat, dan kemampuan untuk menjalankan lebih banyak beban kerja pada perangkat keras yang sama dengan aplikasi dalam container.

Untuk memanfaatkan wadah sebaik mungkin, pemantauan wadah Docker adalah suatu keharusan. Tanpa pemantauan kontainer, Anda bepergian dalam kegelapan. Anda benar-benar tidak dapat melihat seberapa baik container Anda bekerja, apa yang mereka lakukan, atau seberapa baik mereka melakukan tugasnya.

Selain itu, tanpa pemantauan container Docker, Anda tidak dapat mengetahui cara kerja layanan mikro dan aplikasi yang dibangun di atas container. Pemantauan container memungkinkan Anda mengetahui apa yang terjadi dengan container itu sendiri, dan dengan program Anda yang lebih besar dan menghadap pengguna.

Pemantauan Kontainer Docker:Dasar-dasar

Alasan utama mengapa container populer adalah karena container cocok untuk Continuous Integration/Continuous Deployment (CI/CD). Ini adalah metodologi aDevOps yang dirancang untuk memungkinkan pemrogram untuk mengintegrasikan kode mereka ke dalam repositori bersama lebih awal dan sering. Sesampai di sana, program dalam container diterapkan dengan cepat dan efisien.

Docker juga memungkinkan pengembang untuk mengemas, mengirim, dan menjalankan aplikasi apa pun sebagai wadah yang ringan, portabel, mandiri, yang dapat dijalankan hampir di mana saja. Container memberi Anda portabilitas aplikasi instan.

Wadah melakukan ini dengan memungkinkan pengembang untuk mengisolasi kode ke dalam satu wadah, sehingga lebih efisien untuk memodifikasi dan memperbarui program. Ini memungkinkan perusahaan untuk memecah proyek pengembangan besar di antara beberapa tim Agile yang lebih kecil menggunakan pipeline CI/CD untuk mengotomatiskan pengiriman kode baru dan yang diperbarui melalui container.

Terakhir, dan mungkin poin terpenting untuk bisnis, container memungkinkan perusahaan untuk memaksimalkan sumber daya perangkat keras dan cloud. Seperti yang dijelaskan James Bottomley, sebelumnya CTO Parallels untuk virtualisasi server dan pengembang kernel Linux terkemuka, “Hypervisor VM, seperti Hyper-V, KVM, dan Xen, semuanya didasarkan pada meniru perangkat keras virtual. Itu berarti mereka gemuk dalam hal persyaratan sistem."

Kontainer, bagaimanapun, menggunakan sistem operasi bersama sehingga jauh lebih tipis daripada hypervisor dalam hal sumber daya sistem. Alih-alih memvirtualisasikan perangkat keras, container diletakkan pada satu instance Linux. Ini berarti Anda dapat “meninggalkan 99,9 persen sampah VM yang tidak berguna, meninggalkan Anda dengan kapsul kecil yang rapi berisi aplikasi Anda,” seperti yang dikatakan oleh Bottomley. Dengan kata lain, dengan sistem container yang disetel dengan baik, Anda dapat menjalankan sebanyak empat hingga enam container pada sistem yang sebelumnya hanya dapat menjalankan satu instance.

Saat ini, ada banyak jenis platform kontainer. Sementara Docker adalah yang paling terkenal, ada juga LXC, runC, container, dan podman. Semuanya melakukan fungsi yang serupa dan sebagian besar dapat dikelola dengan alat yang sama.

Apa itu Docker?

Jadi, apa itu Docker secara spesifik? Docker dibangun di atas LXC. Seperti halnya wadah lain, sejauh menyangkut program apa pun yang berjalan di Docker, ia memiliki sistem file, penyimpanan, CPU, dan RAM sendiri. Perbedaan utama antara container dan VM adalah ketika hypervisor mengabstraksi seluruh perangkat, container hanya mengabstraksi kernel sistem operasi. Semua manfaat Docker berasal dari mekanisme sederhana itu saja.

Mengapa sukses ketika pendahulunya seperti FreeBSD Jails, Oracle Solaris Zones, dan OpenVZ memungkinkan container untuk bekerja dengan baik dan aman, tetapi memiliki sedikit keberhasilan pasar? Sampai batas tertentu, kontainer berhasil tetapi tidak terlihat. Misalnya, Google menggunakan open-source, container programlmctfy (Let Me Contain That For You) selama lebih dari satu dekade. Setiap kali Anda menggunakan fungsi Google, mis., Penelusuran, Gmail, Google Documents, fungsi itu berjalan dalam wadah tak terlihat.

Apa yang dibawa Docker ke meja adalah membuat container lebih aman dan lebih efisien untuk disebarkan dan digunakan daripada pendekatan sebelumnya. Selain itu, karena kemitraan Docker dengan kekuatan container lainnya, termasuk Canonical, Google, Red Hat, dan Parallels, pada libcontainer komponen keyopen-source miliknya, membawa standarisasi yang sangat dibutuhkan ke container.

Docker mendonasikan format container libcontainers dan runtime-nya, serta spesifikasi terkait, ke Open Container Project dari The Linux Foundation. Secara khusus ini mencakup seluruh konten proyek libcontainer, termasuk nsinit, dan semua modifikasi yang diperlukan untuk membuatnya berjalan secara independen dari Docker.

Docker terus bekerja pada upaya standarisasi kontainer lainnya. Misalnya, Docker mendonasikan containerd, runtime container sumber terbukanya, ke Cloud Native Computing Foundation (CNCF). Standardisasi memainkan peran besar dalam membuat Docker sukses.

Tidak seperti teknologi container lainnya, Docker juga mendukung software-defined networking (SDN). Hal ini memungkinkan tim DevOps untuk menentukan jaringan untuk container, tanpa mengkhawatirkan sakelar perangkat keras. Sebagai gantinya, mereka mengatur topologi jaringan yang kompleks dan mendefinisikan jaringan melalui file konfigurasi.

Secara bersamaan, SDN dan Docker memungkinkan untuk mengeksploitasi layanan mikro. Bersama-sama, mereka membuatnya lebih efisien untuk membangun aplikasi dari layanan yang digabungkan secara longgar yang bekerja bersama satu sama lain melalui protokol terkenal seperti HTTP dan TCP.

Terakhir, kesuksesan Docker berhutang besar pada sekadar menjadi teknologi terbuka yang tepat pada waktu yang tepat untuk membantu pengguna memanfaatkan revolusi komputasi awan.

Apa itu Container Monitoring?

Skenario umum untuk bisnis adalah mereka menggunakan Docker dan memiliki ratusan hingga ratusan ribu container yang menjalankan aplikasi yang penting bagi perusahaan Anda. Untuk mengaturnya, kemungkinan besar mereka menggunakan Kubernetes. Seperti yang dikatakan CTO CNCF, Chris Aniszczyk, ada kekosongan yang semakin besar dalam memahami bahwa Kubernetes dan container pada dasarnya adalah satu paket. Ada program orkestrasi kontainer lainnya, tetapi Kubernetes adalah pemimpin pasar yang luar biasa. Dari jumlah tersebut, Datadog melaporkan bahwa hampir 90% pengguna Kubernetes memanfaatkan layanan yang dikelola cloud, naik dari hampir 70% pada tahun 2020.

Itu bagus sejauh ini. Namun Kubernetes mengontrol, menerapkan, dan menskalakan container. Itu tidak memantau mereka.

Pemantauan itu rumit. Wadah bersifat sementara. Mereka berputar ke atas dan ke bawah dalam hitungan menit. Wadah Kubernetes rata-rata bertahan selama satu hari. Alat yang Anda gunakan untuk memantau aplikasi tradisional yang berjalan di server virtual atau server bare metal tidak berfungsi. Pada saat program pemantauan Anda meminta laporan, wadah itu mungkin telah menghilang dari pandangan, membawa serta log apa pun di dalamnya.

Manfaat Pemantauan Kontainer

Meskipun rumit, pemantauan kontainer sangat penting. Seperti yang dikatakan oleh sysadmin Gary Williams, "Anda tidak dapat memiliki terlalu banyak pemantauan." Gary benar.

Manfaat pemantauan kontainer meliputi:

  • Mengidentifikasi masalah secara proaktif untuk menghindari gangguan sistem.
  • Memantau data deret waktu untuk membantu aplikasi berjalan lebih baik.
  • Optimalkan alokasi sumber daya.
  • Menangkap masalah sedini mungkin untuk menyelesaikan masalah dengan cepat.

Pemantauan kontainer juga penting karena aplikasi berbasis kontainer berada di bawah serangan terus-menerus dari serangan ransomware dan cryptocurrency. Singkatnya, baik untuk keamanan dan kinerja, memantau container Anda adalah suatu keharusan. Ini adalah alasan yang sama mengapa Anda memantau semua sistem Anda, dan container tidak berbeda.

Program pemantauan menghadapi tantangan lain untuk mengumpulkan data observabilitas dari kontainer. Ada beberapa metode pengumpulan data. Mereka termasuk:

  • Menerapkan agen pemantauan khusus sebagai aplikasi atau wadah host.
  • Menyebarkan router log untuk mengumpulkan log yang dihasilkan oleh container secara otomatis.
  • Menggunakan driver logging Docker untuk menyimpan log kontainer ke host.
  • Mengumpulkan metrik melalui statistik Docker, pipeline metrik Kubernetes, atau API serupa.

Pemantauan kontainer mencakup metrik dasar seperti pemanfaatan memori, penggunaan CPU, batas CPU, dan batas memori. Program pemantauan Anda juga harus menawarkan log streaming, penelusuran, dan observabilitas real-time.

Pada tingkat yang lebih tinggi, selain mengumpulkan dan memusatkan data pemantauan dari container dan hostnya, Anda perlu mengumpulkan dan menganalisis seluruh data aplikasi, bukan container individual.

Seperti yang dikatakan Minh Dao dariLogDNA, “Bayangkan Anda memiliki aplikasi web tiga tingkat, dengan setiap tingkat berjalan sebagai wadah terpisah. Sekarang bayangkan tingkat backend Anda tiba-tiba mulai menghasilkan kesalahan, dan akibatnya container mogok. Menarik log dan metrik dari wadah individual akan membantu analisis akar masalah, tetapi itu tidak akan membantu Anda melihat kesalahan dalam konteks seluruh aplikasi. Masalahnya mungkin khusus container, atau mungkin mengindikasikan masalah aplikasi yang lebih luas.”

Gabungkan semuanya dan tidak ada pertanyaan tentang itu. Anda harus memantau container Anda.

Lima Alat Pemantauan Kontainer Terbaik

Banyak program pemantauan kontainer terbaik adalah program sumber terbuka. Linode menyediakan dasar-dasar untuk memulai tumpukan Elasticsearch, Logstash, dan Kibana (ELK) menggunakan Filebeat dan Metricbeat dengan Kibana dan analisis deret waktu dengan Graphite dan Dasbor Grafana. Dengan sedikit usaha, Anda dapat membangun sistem pemantauan kontainer Anda sendiri.

Program-program dalam daftar di bawah ini dalam urutan abjad, bukan dalam urutan terbaik hingga terburuk. Itu karena Anda tidak dapat memeringkat mereka secara adil. Mereka semua memiliki kekuatan dan kelemahan mereka sendiri dan sering kali mengukur metrik yang berbeda. Jadi, jika Anda serius ingin mengawasi container Anda, Anda perlu menggunakan beberapa program ini.

Container Advisor (cAdvisor)

Google'sContainer Advisor (cAdvisor) adalah program pemantauan sumber terbuka. Ini berjalan sebagai daemon yang mengumpulkan, menggabungkan, dan mengekspor penggunaan sumber daya dan data kinerja dari wadah yang ditargetkan. Ini melacak parameter isolasi sumber daya setiap wadah, penggunaan sumber daya historis, histogram penggunaan sumber daya historis lengkap, dan statistik jaringan. Data ini diekspor oleh container dan seluruh mesin.

Program ini hadir dengan dukungan container Docker asli dan dirancang untuk mendukung hampir semua jenis container lain di luar kotak. Ini juga memperlihatkan metrik Prometheus. Dengan kata lain, cAdvisor mengumpulkan data, sementara Prometheus mengikisnya. Abstraksi wadah CAAdvisor didasarkan pada wadah lmctfy sehingga wadah secara inheren bersarang secara hierarkis.

Anda dapat menginstal cAdvisor build sebagai gambar di host Docker Anda. Program ini juga menyediakan antarmuka pengguna web (UI) dan Antarmuka Pemrograman Aplikasi REST (API). Dengan ini, Anda dapat memantau container Docker secara langsung dan mengintegrasikan metrik ke aplikasi eksternal melalui titik akhir layanan web.

Datadog

Datadog direkomendasikan oleh Docker untuk alasan yang bagus. Ini menyediakan banyak alat pemantauan yang melacak container, infrastruktur, dan metrik terkait aplikasi.

UI dan dasbornya juga sangat berguna. Dengan data real-time Anda dapat mengatur berbagai visualisasi, termasuk deret waktu, nilai kueri, daftar teratas, tabel, peta panas, peta pohon, diagram lingkaran, peta host, aliran log, daftar, nilai peringatan, peta layanan, dan banyak lagi . Ini secara otomatis menghubungkan data dan memvisualisasikan perilaku yang tidak biasa.

Hati Datadog adalah hak milik, tetapi agen Datadog dan semua program lain yang berjalan di mesin dan cloud Anda adalah sumber terbuka.

Pemantauan tersedia melalui permintaan Trace, yang memberikan visualisasi dan peringatan grafisnya. Program ini mengumpulkan data mengenai layanan, aplikasi, dan platform melalui data log mendetail.

Program ini adalah ekosistem pemantauan. Selain wadah Anda, ia memantau hampir semua hal. Ini dilakukan sebagian dengan mendukung sebagian besar program dan protokol telemetri sepertiStatsD,OpenMetrics, danOpenTelemetry.

Meskipun dijual terutama sebagai software-as-a-service (SaaS), perangkat ini juga dapat digunakan di lokasi.

Elasticsearch dan Kibana

Elasticsearch adalah mesin pencari berbasis Java open-source yang berasal dari perpustakaan Apache Lucene. Ini menyediakan mesin pencari teks lengkap yang terdistribusi, berkemampuan multi-penyewa, dengan antarmuka web HTTP dan dokumen JSON bebas skema. Ini adalah inti dari tumpukan ELK.

Program mitranya, Kibana, adalah UI pengguna terbuka gratis untuk memvisualisasikan data Elasticsearch Anda dan menavigasi ELK Stack. Anda dapat melacak beban kueri untuk melihat bagaimana permintaan mengalir melalui aplikasi Anda dengannya. Kibana hadir dengan klasik dasbor UI biasa:histogram, grafik garis, diagram lingkaran, sinar matahari, dan banyak lagi. Dan, tentu saja, Anda dapat menelusuri semua dokumen Anda.

Untuk tujuan pemantauan kontainer, Anda menggunakan Filebeat dan Metricbeat untuk secara otomatis menangkap data kontainer. Filebeat secara otomatis menemukan kontainer dan menyimpan log mereka di Elasticsearch. Anda menerapkan Metricbeat secara otomatis di container Anda. Sesampai di sana, ia mengumpulkan penggunaan CPU tingkat sistem, memori, sistem file, IO disk, dan statistik IO jaringan. Modulnya, yang ditulis dalam Go, juga dapat mengawasi program di dalam container seperti Apache, NGINX, MongoDB, MySQL, PostgreSQL, dan Prometheus. Semua data ini kemudian dapat diakses menggunakan Kibana.

Ini sangat fleksibel. Anda perlu menghabiskan banyak waktu untuk mempelajari cara mengonfigurasi dan menggunakannya, tetapi ini sepadan dengan waktu.

Prometheus dan Grafana

Seperti Elasticsearch dan Kibana, Prometheus dan Grafana adalah program sumber terbuka yang dapat Anda gunakan untuk membangun sistem pemantauan Anda sendiri. Ini rumit, tetapi pekerjaannya sepadan.

Prometheus menyimpan data sebagai deret waktu. Dalam deret waktu, data disimpan sebagai aliran nilai yang diberi stempel waktu untuk metrik yang sama dan kumpulan dimensi berlabel yang sama.

Prometheus, sebuah proyek CNCF, mengambil metrik langsung dari wadah atau dengan menggunakan gerbang dorong. Sampel yang tergores disimpan secara lokal dan aturan diterapkan pada datanya untuk menggabungkan dan menghasilkan deret waktu baru atau menghasilkan peringatan yang ditentukan pengguna.

Fokus utama Prometheus adalah pada keandalan daripada akurasi. Program melakukan ini dengan membuat setiap server Prometheus berdiri sendiri dengan penyimpanan database deret waktu lokal untuk menghindari ketergantungan pada layanan jarak jauh apa pun. Desain ini menjadikan Prometheus alat yang ideal untuk diandalkan untuk mengidentifikasi masalah dengan cepat dan mendapatkan umpan balik waktu nyata. Oleh karena itu, Prometheus biasanya digunakan dalam sistem yang sangat dinamis seperti layanan mikro berbasis container yang berjalan di cloud.

Prometheus memiliki dasbor webnya sendiri, atau Anda dapat mengekstrak data darinya menggunakan API-nya. Grafana digunakan sebagai antarmuka default.

Sysdig

Sysdig adalah platform pemantauan cloud komersial yang bekerja sama dengan Prometheus. Ini memungkinkan Anda mendapatkan akses ke data deret waktu tanpa perlu membangun sistem pemantauan Prometheus Anda sendiri.

Sysdig melacak data Docker langsung dari metadata container untuk mengaktifkan keamanan dan pemantauan. Docker merekomendasikan Sysdig sebagai solusi pemantauan untuk aplikasi dalam container.

Sysdig juga mengintegrasikan program pemantauan Linux ke dalam satu antarmuka yang konsisten. Program melakukan ini pada tingkat sistem operasi dengan mengintegrasikan dengan kernel Linux. Ini menangkap panggilan sistem dan peristiwa sistem operasi lainnya.

Kombinasi unik Prometheus dan wawasan sistem operasi tingkat rendah menjadikannya alat pemantauan yang kuat.

Kesimpulan

Pemantauan kontainer adalah suatu keharusan, bukan hal yang baik. Tanpa pemantauan, menjalankan kontainer seperti mengemudi di jalan raya yang gelap dan berkelok-kelok tanpa lampu depan.

Program pemantauan yang Anda pilih bergantung pada kasus penggunaan, anggaran, dan sumber daya TI yang tersedia di organisasi Anda. Anda dapat membuat sistem pemantauan kontainer Anda sendiri menggunakan banyak program sumber terbuka yang tersedia, atau menggunakan paket komersial. Apa pun program pemantauan yang Anda putuskan untuk digunakan, ini adalah komponen penting untuk kesehatan dan stabilitas aplikasi web kemas Anda.


Docker
  1. Cara Mengekspor dan Mengimpor Kontainer Docker

  2. Apa itu Docker (dan wadah Linux?)

  3. Cara Berbagi Data Antar Wadah Docker

  1. Cara Mendaftar Kontainer Docker

  2. Cara mencadangkan dan memulihkan wadah Docker

  3. Cara Menjeda dan Melanjutkan Wadah Docker

  1. perbedaan antara podman dan buruh pelabuhan.

  2. Cara Kerja Cloud Containers Dan Manfaatnya

  3. Cara Menginstal, Menjalankan, dan Menghapus Aplikasi di Dalam Wadah Docker – Bagian 2