Sysdig: Apa Itu dan Cara Menggunakannya

Sysdig adalah alat visibilitas sistem universal dengan dukungan untuk wadah. Apa yang membuat Sysdig istimewa, adalah ia menghubungkan dirinya ke kernel mesin dan memisahkan informasi berdasarkan per-kontainer. Untuk cakupan tutorial ini, kami akan fokus pada versi open-source Sysdig.

Di bagian selanjutnya, Anda akan:

  • Instal Sysdig
  • Putar pemasangan Wordpress menggunakan komposisi buruh pelabuhan
  • Gunakan Sysdig untuk mengumpulkan acara dan menganalisisnya di lain waktu
  • Gunakan Sysdig untuk menganalisis data secara real-time

Prasyarat

  • Docker diinstal pada sistem Anda. Untuk detail tentang menginstal Docker, lihat halaman Instal Docker.
  • Docker Compose diinstal pada sistem Anda. Lihat halaman Instal Docker Compose untuk instruksi tentang cara menginstal Docker Compose.
  • Header kernel diinstal pada sistem host.

Instal Sysdig

Ikuti langkah-langkah ini untuk menginstal Sysdig di dalam wadah Docker:

  1. Di jendela terminal, jalankan perintah berikut untuk menarik gambar Sysdig Docker:
buruh pelabuhan menarik sysdig / sysdig
Menggunakan tag default: terbaru terbaru: Menarik dari sysdig / sysdig 2967486b0658: Tarik lengkap 78101b780c72: Tarik lengkap 7e78b657334d: Tarik lengkap 650327159ca8: Tarik lengkap 47ebf73ab754: Tarik lengkap bf51ac76a6d9: Tarik lengkap 0cd11104dbf6: Tarik lengkap e6dcf17d00d8: Pull 230d60083576 lengkap: Pull fd5ea9faf384 lengkap: Tarik lengkap 6de86c8ed6e9: Tarik lengkap 8d1825f8be4b: Tarik lengkap Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Diunduh gambar yang lebih baru untuk sysdig / sysig terbaru

2. Jalankan Sysdig dalam wadah dengan memasukkan:

run docker -i -t --name sysdig --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v / dev: / host / dev -v / proc: / host / proc: ro -v / boot: / host / boot: ro -v / lib / modules: / host / lib / modules: ro -v / usr: / host / usr: ro sysdig / sysdig
* Menyiapkan tautan / usr / src dari host * Membongkar sysdig-probe, jika ada * Menjalankan dkms install for sysdig Error! echo Header kernel Anda untuk kernel 3.10.0-957.12.2.el7.x86_64 tidak dapat ditemukan di /lib/modules/3.10.0-957.12.2.el7.x86_64/build atau /lib/modules/3.10.0-957.12 .2.el7.x86_64 / sumber. * Menjalankan pembangunan dkms gagal, tidak dapat menemukan /var/lib/dkms/sysdig/0.26.4/build/make.log * Mencoba memuat sysdig-probe sistem, jika ada * Mencoba mencari sysdig-probe yang telah dikompilasi untuk 3.10 .0-957.12.2.el7.x86_64 Ditemukan konfigurasi kernel di /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Mencoba mengunduh modul yang telah dikompilasi dari https://s3.amazonaws.com/download .draios.com / stable / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Unduhan berhasil, memuat root modul @ 7b14a23f22eb: /

Beberapa hal yang perlu diperhatikan tentang perintah di atas:

  • Bendera -i membuat STDIN tetap terbuka.
  • Parameter --privileged menyediakan akses ke semua perangkat di host. Juga mengatur SELinux untuk memungkinkan proses yang berjalan di dalam wadah akses yang sama ke host sebagai proses yang berjalan di host.
  • Bendera -v menentukan daftar file (pada host) yang dapat diakses Sysdig.

Putar Instalasi Wordpress

Di bagian ini, Anda akan menginstal Wordpress menggunakan perintah docker-compose.

  1. Di jendela terminal baru, pindah ke direktori proyek Anda dan ketik perintah berikut:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Buat file bernama docker-compose dengan konten berikut:

versi: '3.3' layanan: db: gambar: mysql: 5.7 volume: - db_data: / var / lib / mysql restart: selalu lingkungan: MYSQL_ROOT_PASSWORD: somordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_USER: wordpress MYORD: kata: wordpress wordpress: port terbaru: - "8000: 80" restart: selalu lingkungan: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: volume wordpress: db_data: {}

3. Jalankan perintah docker-compose up dalam mode terpisah dengan:

docker-compose up -d
Membuat jaringan "wordpress-sysdig_default" dengan driver default Membuat volume "wordpress-sysdig_db_data" dengan driver default Menarik wordpress (wordpress: terbaru) ... terbaru: Menarik dari perpustakaan / wordpress 8ec398bc0356: Tarik selesai 85cf4fc86478: Tarik selesai 970dadf4ccb6: Tarik 8c04561117a4: Lengkap lengkap d6b7434b63a2 lengkap: lengkapd 83d8859e9744: Lengkap lengkap 9c3d824d0ad5: Lengkap lengkap 9e316fd5b3b3: Tarik lengkap Tarik lengkap. tekan_1 ... selesai

4. Anda dapat memverifikasi status wadah Anda dengan:

buruh pelabuhan ps

Jika semuanya berjalan dengan baik, Anda akan melihat sesuatu yang mirip dengan output berikut:

CONTAINER ID IMAGE COMMAND MENCIPTAKAN STATUS PORT NAMA f390eec29f52 wordpress: terbaru "docker-entrypoint.s…" Sekitar satu menit yang lalu Naik Sekitar satu menit 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a84484062626d8 mysql: entry7. s… "Sekitar satu menit yang lalu Naik Sekitar satu menit 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "13 menit yang lalu Naik 13 menit sysdig

5. Sekarang Wordpress aktif dan berjalan. Arahkan browser Anda ke http: // localhost: 8000 untuk memulai panduan instalasi:

6. Setelah wisaya instalasi selesai, mari kita lanjutkan dan membuat contoh posting:

Mengumpulkan Data ke File

Di bagian ini, kami akan menunjukkan bagaimana Anda dapat menggunakan Sysdig untuk mengumpulkan acara dan menganalisisnya di lain waktu.

  1. Untuk membuang semua peristiwa yang diambil ke file, pindah ke wadah Sysdig, dan masukkan perintah berikut:
sysdig -w monitoring-wordpress.scap

2. Di jendela terminal baru, gunakan ab untuk membuat 10.000 permintaan dengan maksimum 100 permintaan berjalan secara bersamaan:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Ini adalah ApacheBench, Versi 2.3 <$ Revisi: 1430300 $> Hak Cipta 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Dilisensikan ke The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (bersabar) Selesai 100 permintaan Selesai 200 permintaan Selesai 300 permintaan Selesai 400 permintaan Selesai 500 permintaan Selesai 600 permintaan Selesai 700 permintaan Selesai 800 permintaan Selesai 800 permintaan Selesai 900 permintaan Selesai 1000 permintaan Selesai 1000 permintaan Selesai 1000 permintaan Selesai 1000 permintaan

Perhatikan bahwa output di atas terpotong karena singkatnya.

3. Kembali ke tur kontainer Sysdig dan berhenti mengambil data dengan memasukkan "CTRL + C".

Menganalisis data

Sekarang, jika Anda melihat ukuran file monitoring-wordpress.scap, Anda akan melihat bahwa Sysdig menangkap tidak kurang dari 80 juta data:

ls -lh monitoring-wordpress.scap
-rw-r - r--. 1 root root 80M 7 Jan 16:28 monitoring-wordpress.scap

Untuk menemukan jalan Anda melalui kumpulan data ini, Anda akan menggunakan sesuatu yang disebut pahat.

Pahat pada dasarnya adalah skrip Lua yang menganalisis aliran peristiwa dan melakukan tindakan yang bermanfaat.

Anda dapat menjalankan perintah berikut untuk menampilkan daftar pahat:

sysdig -cl
Kategori: Aplikasi --------------------- httplog Permintaan HTTP log httptop Permintaan HTTP teratas memcachelog memcached request log Kategori: Penggunaan CPU ---------- --------- spectrogram Memvisualisasikan latensi OS dalam waktu nyata. subsecoffset Visualisasikan waktu eksekusi offset subsecond. topcontainers_cpu Wadah teratas dengan penggunaan CPU topprocs_cpu Proses teratas berdasarkan penggunaan CPU Kategori: Kesalahan ---------------- topcontainers_error Wadah teratas berdasarkan jumlah kesalahan topfiles_errors File teratas dengan jumlah kesalahan topprocs_errors proses teratas berdasarkan nomor kesalahan

Perhatikan bahwa output di atas terpotong karena singkatnya.

Untuk mengambil informasi terperinci tentang pahat, jalankan perintah sysdig diikuti oleh flag -i dan nama pahat, seperti dalam contoh berikut:

sysdig-i httptop
Kategori: Aplikasi --------------------- httptop Permintaan HTTP teratas Tampilkan permintaan HTTP teratas menurut: ncalls, waktu atau byte Args: [string] by - Tampilkan transaksi HTTP teratas oleh: ncalls, waktu atau dengan tes, standarnya adalah ncalls

Melanjutkan contoh kami, inilah cara Anda dapat menggunakan pahat httptop untuk menampilkan permintaan HTTP teratas:

sysdig -r monitoring-wordpress.scap -c httptop
url metode ncalls ----------------------------------------------- --------------------------------- 2001 DAPATKAN localhost: 8000 /? P = 7 14 PILIHAN * 2 DAPAT localhost: 8000 / favicon.ico 1 DAPATKAN /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 DAPAT localhost / v1.24 / container / 6bd8418eb03f / json 1 GET localhost / v1.24 / wadah / 06def7875617 / json 1 DAPAT /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 DAPAT /v1.24/images/db39680b63ac47d789d48897

Anda dapat melihat informasi yang sama dalam format ramah-kontainer dengan flag -pcontainer:

sysdig -r monitoring-wordpress.scap -c httptop -pcontainer
url metode wadah ncalls ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 tuan rumah GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo PILIHAN * 1 sysdig DAPAT /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / vd4dripdatd7dackdatdatdatdalamdalamatterdalamdalamatterh350 / hal.14 / lokal cd06093b141b / json 1 sysdig DAPAT /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db7907fb7bbbbbbbbbbbbbbbbbbbbbbbbbbbnvpnvpvpvvpvvpvvvvvbfbfcfc

Menggali lebih dalam

Sysdig menangkap informasi yang kaya konten yang memungkinkan Anda mendapatkan wawasan terperinci tentang cara kerja internal wadah Anda. Misalkan Anda menjalankan beberapa wadah dan ingin tahu proses mana yang paling banyak menghabiskan CPU.

  1. Daftar wadah yang aktif selama periode di mana Anda menangkap acara:
sysdig -r monitoring-wordpress.scap -c lcontainers

2. Anda dapat mengidentifikasi wadah yang paling banyak mengonsumsi CPU dengan:

sysdig -r monitoring-wordpress.scap -c topcontainers_cpu
CPU% container.name --------------------------------------------- ----------------------------------- 5,37% wordpress-sysdig_wordpress_1 1,35% wordpress-sysdig_db_1 0,84% host 0,51% sysdig

3. Anda dapat menggali lebih dalam dan mengidentifikasi proses paling intensif CPU dengan pahat topprocs_cpu:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name berisi wordpress_1
CPU% Process PID ---------------------------------------------- ---------------------------------- 0,12% apache2 8383 0,11% apache2 9413 0,11% apache2 9300 0,11% apache2 9242 0,11% apache2 8897 0,11% apache2 8422 0,10% apache2 9372 0,10% apache2 9241 0,10% apache2 8424 0,09% apache2 9429

Jika Anda ingin melihat lebih detail, pahat ps menyediakan alternatif yang lebih bertele-tele:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID PENGGUNA VIRT RES FDLIMIT CMD 5896 5896 root 232.82M 22.32M 429496729 apache2 8383 8383 www-data 307.44M 25.46M 429496729 apache2 8422 8422 www-data 235.44M 22.90M 429496729 apache2 8424 8449747 8897 www-data 235.44M 22.89M 429496729 apache2 9154 9154 www-data 235.44M 22.91M 429496729 apache2 9241 9241 www-data 307.44M 25.66M 429496729 apache2 9242 9242 www-data 307.44M 229.947.930 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Tips Berguna

Jika Anda menjalankan Sysdig untuk menangkap peristiwa seperti dalam contoh di atas (sysdig -w monitoring-wordpress.scap), file acara akan tumbuh terus menerus hingga menghabiskan semua ruang yang tersedia. Ada beberapa metode yang dapat membantu mencegah hal ini terjadi:

  • Tentukan jumlah acara yang harus ditangkap oleh Sysdig dengan mengedarkannya -n flag. Setelah Sysdig menangkap jumlah peristiwa yang ditentukan, secara otomatis akan keluar:
sysdig -n 5000 -w monitoring-wordpress.scap
  • Gunakan flag -C untuk mengkonfigurasi Sysdig sehingga memecah tangkapan menjadi file yang lebih kecil dari ukuran yang ditentukan. Contoh berikut terus menyimpan acara ke file <10MB:
sysdig -C 10 -w monitoring-wordpress.scap

Ini akan membuat banyak file tidak lebih dari 10 MB:

ls -lh monitoring-wordpress *
-rw-r - r--. 1 root root 9.6M 7 Jan 17:13 pemantauan-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 Jan 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 Jan 17:14 monitoring-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7 Jan 17:14 monitoring-wordpress.scap3 -rw-r - r--. 1 root root 9.6M 7 Jan 17:14 monitoring-wordpress.scap4 -rw-r - r--. 1 root root 9.6M 7 Jan 17:14 monitoring-wordpress.scap5 -rw-r - r--. 1 root root 9.6M 7 Jan 17:14 monitoring-wordpress.scap6 -rw-r - r--. 1 root root 9.6M 7 Jan 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 root root 6.4M 7 Jan 17:14 monitoring-wordpress.scap8
  • Tentukan jumlah maksimum file yang harus disimpan oleh Sysdig dengan flag -W. Misalnya, Anda dapat menggabungkan flag -C dan -W seperti:
sysdig -C 10 -W 4 -w monitoring-wordpress.scap

Perintah di atas hanya akan menyimpan empat file tangkapan terakhir:

ls -lh monitoring-wordpress *
-rw-r - r--. 1 root root 7.2M 7 Jan 17:21 pemantauan-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 Jan 17:21 pemantauan-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 Jan 17:21 pemantauan-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7 Jan 17:21 monitoring-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w monitoring-wordpress.scap

Pemantauan Real-Time

Dengan Sysdig, Anda juga dapat menganalisis data secara real time. Pada pandangan pertama, ini bisa tampak seperti tugas yang menakutkan karena, secara default, semua acara terus dicetak ke konsol. Untungnya, pahat ada di sini untuk membantu.

Mari kita ambil contoh.

Analisis Proses Anda dengan Dasar Per Kontainer

  1. Jalankan perintah berikut untuk membuat daftar wadah Anda:
buruh pelabuhan ps
CONTAINER ID IMAGE COMMAND MENCIPTAKAN STATUS PORTS NAMES 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" 9 menit yang lalu Naik 9 menit sysdig 06def7875617 wordpress: terbaru "docker-entrypoint.s…" 3 jam yang lalu Naik 3 jam 0.0.0.08.08 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s…" 3 jam yang lalu Naik 3 jam 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Anda dapat menganalisis proses yang berjalan di wadah WordPress dengan:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_wordpress_1

3. Demikian pula, Anda dapat menganalisis proses yang berjalan di wadah MySQL:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_db_1

Perhatikan bahwa, tidak jauh berbeda dari contoh ini, Sysdig dapat memonitor lalu lintas jaringan, penggunaan disk, dan sebagainya.

Dalam tutorial ini, Anda telah membahas dasar-dasar penggunaan Sysdig untuk mendapatkan pemahaman yang jelas tentang aktivitas yang dihasilkan oleh kontainer Anda. Contoh-contoh dalam posting blog ini membantu Anda memulai dan, dalam tutorial mendatang, kami akan menunjukkan cara menggunakan Csysdig dan Sysdig Inspect.