Sysdig: Apa Itu dan Cara Penggunaannya

Sysdig adalah alat penglihatan sistem sejagat dengan sokongan untuk bekas. Apa yang menjadikan Sysdig khas, ialah ia menghubungkan dirinya ke kernel mesin dan mengasingkan maklumat secara per kontenu. Untuk skop tutorial ini, kami akan menumpukan pada versi sumber terbuka Sysdig.

Dalam bahagian seterusnya, anda akan:

  • Pasang Sysdig
  • Pusingkan pemasangan Wordpress menggunakan penyusun docker
  • Gunakan Sysdig untuk mengumpul peristiwa dan menganalisisnya pada masa yang akan datang
  • Gunakan Sysdig untuk menganalisis data dalam masa nyata

Prasyarat

  • Docker dipasang pada sistem anda. Untuk butiran mengenai memasang Docker, rujuk pada halaman Pemasang Docker.
  • Docker Compose dipasang pada sistem anda. Rujuk kepada halaman Install Docker Compose untuk arahan mengenai cara memasang Docker Compose.
  • Tajuk kernel dipasang pada sistem hos.

Pasang Sysdig

Ikuti langkah berikut untuk memasang Sysdig di dalam bekas Docker:

  1. Dalam tetingkap terminal, jalankan arahan berikut untuk menarik imej Docker Sysdig:
docker tarik sysdig / sysdig
Dengan menggunakan tag lalai: latest terbaru: Menarik dari sysdig / sysdig 2967486b0658: Pull complete 78101b780c72: Pull complete 7e78b657334d: Pull complete 650327159ca8: Pull complete 47ebf73ab754: Pull complete bf51ac76a6d9: Pull complete 0cd11104dbf6: Pull complete e6dcf17d00d8: Tarik lengkap 230d60083576: Tarik lengkap fd5ea9faf384: Pull lengkap 6de86c8ed6e9: Pull lengkap 8d1825f8be4b: Tarik lengkap Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Status: Imej baru yang dimuat turun untuk sysdig / sysdig: terkini

2. Jalankan Sysdig dalam bekas dengan memasukkan:

docker run -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
* Menyediakan / usr / src pautan dari host * Memunggah sysdig-probe, jika ada * Running dkms install for sysdig Error! echo Tajuk kernel anda untuk kernel 3.10.0-957.12.2.el7.x86_64 tidak dapat dijumpai 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 dkms build gagal, tidak dapat menemukan /var/lib/dkms/sysdig/0.26.4/build/make.log * Mencuba untuk memuat sistem sysdig-probe, jika ada * Mencoba untuk mencari precompiled sysdig-probe untuk 3.10 .0-957.12.2.el7.x86_64 Menemui konfigurasi kernel di /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Mencuba untuk memuat turun modul yang dipompak 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 Muat turun berjaya, memuatkan modul root @ 7b14a23f22eb: / #

Beberapa perkara yang perlu diperhatikan mengenai arahan di atas:

  • Bendera -i menyimpan STDIN terbuka.
  • - Parameter istimewa menyediakan akses kepada semua peranti pada host. Ia juga menetapkan SELinux untuk membenarkan proses yang berjalan di dalam bekas itu akses yang sama kepada hos sebagai proses yang berjalan pada hos.
  • Bendera -v menentukan senarai fail (pada tuan rumah) yang boleh diakses oleh Sysdig.

Spin Up Installation Wordpress

Dalam bahagian ini, anda akan memasang Wordpress menggunakan perintah penyusun docker.

  1. Dalam tetingkap terminal baru, pindahkan ke direktori projek anda dan ketik perintah berikut:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Buat fail yang dipanggil docker-compose dengan kandungan berikut:

versi: '3.3' perkhidmatan: db: image: mysql: 5.7 volumes: - db_data: / var / lib / mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress: port terbaru: - "8000: 80" restart: always persekitaran: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data:

3. Jalankan arahan penyusun docker dalam mod berasingan dengan:

docker-compose up -d
Mencipta rangkaian "wordpress-sysdig_default" dengan pemandu lalai Membuat volume "wordpress-sysdig_db_data" dengan pemandu lalai Menarik wordpress (wordpress: latest) ... terkini: Menarik dari pustaka / wordpress 8ec398bc0356: Pull complete 85cf4fc86478: Pull complete 970dadf4ccb6: 8c04561117a4: Tarik d6b7434b63a2 lengkap: Tarik lengkap 83d8859e9744: Tarik 9c3d824d0ad5 lengkap: Tarik 9e316fd5b3b3 lengkap: Tarik lengkap 578b40496c37: Tarik 814ae7711d3c lengkap: Tarik 4896fed78b6b lengkap: Tarik e74d71e9611d lengkap: Tarik 46017765526c lengkap: Tarik lengkap 280.386.098.458: Tarik f32eb0d8c540 lengkap: Tarik 5c47b9ea747a lengkap: tarik ecda5b7aad12 lengkap: tarik lengkap 84256a6b6b44: tarik lengkap 35d4f385efb7: tarik bf697c2ae701 lengkap: tarik d054b015f084 lengkap: tarik lengkap Digest: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Status: image-turun baru untuk wordpress: terkini Mewujudkan wordpress-sysdig_db_1 ... dilakukan Mewujudkan wordpress-sysdig_word press_1 ... selesai

4. Anda boleh mengesahkan status bekas anda dengan:

docker ps

Jika semua berjalan lancar, anda harus melihat sesuatu yang serupa dengan output berikut:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f390eec29f52 wordpress: latest "docker-entrypoint.s ..." About a minute ago Up About a minute 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. s ... "About a minute ago Up About a minute 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.... "13 minutes ago Up 13 minutes sysdig

5. Kini Wordpress sedang berjalan dan berjalan. Arahkan peramban anda ke http: // localhost: 8000 untuk memulakan wizard pemasangan:

6. Setelah wizard pemasangan selesai, mari maju dan buat jawatan sampel:

Mengumpul Data ke Fail

Dalam bahagian ini, kami akan menunjukkan bagaimana anda boleh menggunakan Sysdig untuk mengumpul peristiwa dan menganalisisnya pada masa akan datang.

  1. Untuk membuang semua peristiwa yang ditangkap ke fail, beralih ke bekas Sysdig, dan masukkan arahan berikut:
sysdig -w monitoring-wordpress.scap

2. Dalam tetingkap terminal baru, gunakan ab untuk membuat 10000 permintaan dengan maksimal 100 permintaan yang berjalan secara serentak:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Ini adalah ApacheBench, Versi 2.3 <$ Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Dilesenkan kepada Yayasan Perisian Apache, http://www.apache.org/ Penandaan Benchmarking localhost (bersabar) Saring 100 permintaan Siap 200 permintaan Siap 300 permintaan Siap 400 permintaan Siap 500 permintaan Siap 600 permintaan Sudah selesai 700 permintaan Sudah selesai 800 permintaan Sudah selesai 900 permintaan Sudah selesai 1000 permintaan Selesai 1000 permintaan

Perhatikan bahawa output di atas dipotong untuk kecingkungan.

3. Pindahkan kembali ke bekas Sysdig tur dan hentikan data dengan memasukkan "CTRL + C".

Menganalisis data

Sekarang, jika anda melihat saiz fail pemantauan-wordpress.scap, anda akan melihat bahawa Sysdig ditangkap tidak kurang dari 80M data:

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

Untuk mencari jalan anda melalui data gunung ini, anda akan menggunakan sesuatu yang dipanggil pahat.

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

Anda boleh menjalankan arahan berikut untuk memaparkan senarai pahat:

sysdig -cl
Kategori: Permohonan --------------------- httplog HTTP permintaan log httptop Atas permintaan HTTP memcachelog memcached permintaan log kategori: Penggunaan CPU ---------- --------- spectrogram Visualisasikan latensi OS dalam masa nyata. subsecoffset Menggambarkan masa pelaksanaan mengimbangi subseksyen. topcontainers_cpu Bekas teratas dengan penggunaan CPU topprocs_cpu Proses teratas oleh penggunaan CPU Kategori: Kesalahan ---------------- topcontainers_error Bekas teratas dengan bilangan ralat topfiles_errors Fail teratas dengan bilangan ralat topprocs_errors proses teratas mengikut nombor kesilapan

Perhatikan bahawa output di atas dipotong untuk kecingkungan.

Untuk mendapatkan maklumat terperinci mengenai pahat, jalankan perintah sysdig diikuti dengan bendera -i dan nama pahat, seperti dalam contoh berikut:

sysdig -i httptop
Kategori: Permohonan --------------------- httptop Atas permintaan HTTP Tunjukkan permintaan HTTP atas dengan: ncalls, time atau bytes Args: [string] by - Tunjukkan transaksi HTTP atas dengan: ncalls, masa atau ujian, lalai adalah ncalls

Meneruskan contoh kami, berikut adalah cara anda boleh menggunakan pahat httptop untuk memaparkan permintaan HTTP teratas:

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

Anda boleh melihat maklumat yang sama dalam format yang mesra kontena dengan bendera -container:

sysdig -r monitoring-wordpress.scap -c httptop -container
ncalls container method url ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 host GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPTIONS * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / containers / 06def7875617 / json 1 sysdig GET localhost / v1.24 / containers / cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901

Menggali lebih dalam

Sysdig menangkap maklumat yang kaya dengan kandungan yang membolehkan anda mendapatkan maklumat terperinci mengenai kerja dalaman bekas anda. Katakan anda menjalankan beberapa bekas dan ingin tahu proses mana yang menggunakan CPU yang paling.

  1. Senaraikan bekas yang aktif semasa tempoh di mana peristiwa yang anda ambil:
sysdig -r monitoring-wordpress.scap -c lscontainers

2. Anda boleh mengenal pasti bekas yang menggunakan kebanyakan 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 boleh menggali lebih mendalam dan mengenal pasti proses CPU yang paling intensif dengan pahat topprocs_cpu:

sysdig -r monitoring-wordpress.scap -c topprocs_cpu container.name mengandungi wordpress_1
CPU% Proses 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 butiran lanjut, pahat ps memberikan alternatif yang lebih terperinci:

sysdig -r monitoring-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID USER 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 8424 www-data 307.44M 25.46M 429496729 apache2 8897 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 25.67M 429496729 apache2 9300 9300 www-data 235.44M 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Tip berguna

Jika anda menjalankan Sysdig untuk menangkap peristiwa seperti di contoh di atas (sysdig -w monitoring-wordpress.scap), fail acara akan berkembang secara berterusan sehingga ia menggunakan semua ruang yang ada. Terdapat beberapa kaedah yang boleh membantu mengelakkan perkara ini daripada berlaku:

  • Tentukan bilangan kejadian Sysdig harus ditangkap dengan lulus bendera -n. Sebaik sahaja Sysdig menangkap bilangan peristiwa tertentu, ia akan keluar secara automatik:
sysdig -n 5000 -w monitoring-wordpress.scap
  • Gunakan bendera -C untuk mengkonfigurasi Sysdig supaya ia memecahkan tangkapan ke fail yang lebih kecil dari saiz yang ditentukan. Contoh berikut terus menyimpan peristiwa ke fail <10MB:
sysdig -C 10 -w monitoring-wordpress.scap

Ini akan mewujudkan banyak fail tidak lebih daripada 10 MB:

ls -lh monitoring-wordpress *
-rw-r - r--. 1 root root 9.6M Jan 7 17:13 monitoring-wordpress.scap0 -rw-r - r--. 1 root root 9.6M Jan 7 17:14 monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M Jan 7 17:14 monitoring-wordpress.scap2 -rw-r - r--. 1 root root 9.6M Jan 7 17:14 monitoring-wordpress.scap3 -rw-r - r--. 1 root root 9.6M Jan 7 17:14 monitoring-wordpress.scap4 -rw-r - r--. 1 root root 9.6M Jan 7 17:14 monitoring-wordpress.scap5 -rw-r - r--. 1 root root 9.6M Jan 7 17:14 monitoring-wordpress.scap6 -rw-r - r--. 1 root root 9.6M Jan 7 17:14 monitoring-wordpress.scap7 -rw-r - r--. 1 root root 6.4M Jan 7 17:14 monitoring-wordpress.scap8
  • Tentukan bilangan maksimum fail Sysdig harus disimpan dengan bendera -W. Sebagai contoh, anda boleh menggabungkan bendera -C dan -W seperti:
sysdig -C 10 -W 4 -w monitoring-wordpress.scap

Perintah di atas hanya akan menyimpan empat fail penangkapan yang terakhir:

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

Pemantauan Masa Nyata

Dengan Sysdig, anda juga boleh menganalisis data dalam masa nyata. Pada pandangan pertama, ini boleh kelihatan seperti tugas yang menakutkan kerana, secara lalai, semua acara terus dicetak ke konsol. Nasib baik, pahat di sini untuk membantu.

Mari ambil contoh.

Menganalisis Proses Anda di Asas Per Container

  1. Jalankan perintah berikut untuk menyenaraikan bekas anda:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint...." 9 minit yang lalu Sehingga 9 minit sysdig 06def7875617 wordpress: latest "docker-entrypoint.s ..." 3 jam yang lalu Sehingga 3 jam 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." 3 jam yang lalu Sehingga 3 jam 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Anda boleh menganalisis proses yang berjalan di dalam bekas WordPress dengan:

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

3. Begitu juga, anda boleh menganalisis proses yang berjalan di dalam bekas MySQL:

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

Ambil perhatian bahawa, tidak banyak berbeza dari contoh ini, Sysdig boleh memantau trafik rangkaian, penggunaan cakera, dan sebagainya.

Dalam tutorial ini, anda telah mencapai asas penggunaan Sysdig untuk mendapatkan pemahaman yang jelas mengenai aktiviti yang dihasilkan oleh bekas anda. Contoh-contoh dalam catatan blog ini membantu anda memulakan dan, dalam tutorial masa depan, kami akan menunjukkan kepada anda cara menggunakan Csysdig dan Sysdig Inspect.