Sysdig: چه چیزی است و چگونه می توان از آن استفاده کرد

Sysdig یک ابزار جهانی سیستم دید با پشتیبانی از ظروف است. آنچه Sysdig را خاص می کند ، این است که خود را به هسته دستگاه می چسباند و اطلاعات را به صورت جداگانه در هر ظرف جدا می کند. برای دامنه این آموزش ، ما به نسخه منبع باز Sysdig می پردازیم.

در بخش های بعدی:

  • Sysdig را نصب کنید
  • نصب وردپرس را با استفاده از docker-compose بچرخانید
  • از Sysdig برای جمع آوری رویدادها و تجزیه و تحلیل آنها در دفعات بعدی استفاده کنید
  • از Sysdig برای تجزیه و تحلیل داده ها در زمان واقعی استفاده کنید

پیش نیازها

  • Docker بر روی سیستم شما نصب شده است. برای جزئیات بیشتر درباره نصب Docker ، به صفحه Install Docker مراجعه کنید.
  • Docker Compose بر روی سیستم شما نصب شده است. برای راهنمایی در مورد نحوه نصب Docker Compose به صفحه Install Docker Compose مراجعه کنید.
  • هدرهای هسته روی سیستم میزبان نصب می شوند.

Sysdig را نصب کنید

برای نصب Sysdig در داخل ظرف Docker ، این مراحل را دنبال کنید:

  1. در یک پنجره ترمینال ، دستور زیر را برای کشیدن تصویر Sysdig Docker اجرا کنید:
docker pull sysdig / sysdig
با استفاده از برچسب پیش فرض: آخرین آخرین: در حال کشیدن از sysdig / sysdig 2967486b0658: بکشید کامل 78101b780c72: بکشید کامل 7e78b657334d: بکشید کامل 650327159ca8: بکشید کامل 47ebf73ab754: بکشید کامل bf51ac76a6d9: Pull کامل کامل کشیدن کامل 6de86c8ed6e9: بکشید کامل 8d1825f8be4b: کامل بکشید هضم: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 وضعیت: بارگیری کنید تصویر جدیدتر برای sysdig / سیستم عامل

2. با وارد کردن Sysdig در یک ظرف:

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 / module: / host / lib / module: ro -v / usr: / host / usr: ro sysdig / sysdig
* تنظیم لینک / usr / src از میزبان * بارگیری sysdig-probe ، در صورت وجود * اجرای dkms نصب برای خطای sysdig! echo عنوانهای هسته شما برای هسته 3.10.0-957.12.2.el7.x86_64 را نمی توان در /lib/modules/3.10.0-957.12.2.el7.x86_64/build یا /lib/modules/3.10.0-957.12 یافت .2.el7.x86_64 / منبع. * در حال اجرا ساخت dkms انجام نشد ، نتوانست /var/lib/dkms/sysdig/0.26.4/build/make.log را پیدا کند * در صورت وجود * تلاش برای بارگیری یک sysdig-probe سیستم * در صورت وجود * تلاش برای یافتن sysdig-probe precompiled برای 3.10 .0-957.12.2.el7.x86_64 پیکربندی هسته را در /host/boot/config-3.10.0-957.12.2.el7.x86_64 پیدا کرد پیکربندی هسته را امتحان کنید از https://s3.amazonaws.com/download .draios.com / ثابت / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko دانلود موفق شد ، بارگذاری ماژول ریشه @ 7b14a23f22eb: / #

چند نکته در مورد دستور فوق:

  • پرچم -i STDIN را باز نگه می دارد.
  • پارامتر --privileged دسترسی به همه دستگاه های موجود در هاست را فراهم می کند. همچنین SELinux را تنظیم می کند تا فرآیندهای داخل کانتینر را به همان روندی که روی میزبان اجرا می شود ، به همان میزبان به همان میزبان دسترسی پیدا کند.
  • پرچم -v لیستی از پرونده ها (در هاست) را که Sysdig می تواند به آن دسترسی داشته باشد ، مشخص می کند.

چرخش نصب وردپرس

در این بخش وردپرس را با استفاده از دستور docker-compose نصب خواهید کرد.

  1. در یک پنجره ترمینال جدید ، به فهرست پروژه های خود بروید و دستورات زیر را تایپ کنید:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. فایلی با نام docker-compose با محتوای زیر ایجاد کنید:

نسخه: خدمات "3.3": db: image: mysql: 5.7 جلد: - db_data: / var / lib / mysql راه اندازی مجدد: همیشه محیط: MYSQL_ROOT_PASSWORD: Someordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress v wordpress: آخرین درگاهها: - "8000: 80" مجدداً راه اندازی شود: همیشه محیط: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: حجم وردپرس: db_data: {}

3. دستور docker-compose up را در حالت جداگانه با:

docker-compose up-d
ایجاد شبکه "wordpress-sysdig_default" با درایور پیش فرض ایجاد حجم "wordpress-sysdig_db_data" با درایور پیش فرض در حال کشیدن وردپرس (وردپرس: جدیدترین) ... آخرین: در حال کشیدن از کتابخانه / وردپرس 8ec398bc0356: بکشید کامل 85cf4fc86478: بکشید کامل 970dadf4ccb را بکشید 8c04561117a4: نگه دار، d6b7434b63a2 کامل: نگه دار، کامل 83d8859e9744: نگه دار، 9c3d824d0ad5 کامل: نگه دار، 9e316fd5b3b3 کامل: نگه دار، کامل 578b40496c37: نگه دار، 814ae7711d3c کامل: نگه دار، 4896fed78b6b کامل: نگه دار، e74d71e9611d کامل: نگه دار، 46017765526c کامل: نگه دار، کامل 280386098458: نگه دار، f32eb0d8c540 کامل: نگه دار، 5c47b9ea747a کامل: نگه دار، ecda5b7aad12 کامل: نگه دار، کامل 84256a6b6b44: نگه دار، کامل 35d4f385efb7: نگه دار، bf697c2ae701 کامل: نگه دار، d054b015f084 کامل: نگه دار، کامل خلاصه: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 وضعیت: تصویر دانلود جدیدتر برای وردپرس: شدن ایجاد وردپرس، sysdig_db_1 ... انجام ایجاد وردپرس، sysdig_word press_1 ... انجام شد

4- می توانید وضعیت ظروف خود را با این موارد تأیید کنید:

docker ps

اگر همه چیز خوب پیش می رود ، باید چیزی شبیه به خروجی زیر را مشاهده کنید:

CONTAINER ID IMAGE Command CREATED PATTS STATUS NAMES f390eec29f52 وردپرس: آخرین "docker-entrypoint.s ..." حدود یک دقیقه پیش تا حدود یک دقیقه 0.0.0.0:8000->80/tcp وردپرس-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "dock" ...

5- اکنون وردپرس در حال اجرا است. برای شروع جادوگر نصب ، مرورگر خود را به http: // localhost: 8000 نشان دهید:

6. پس از اتمام جادوگر نصب ، بیایید جلو برویم و یک نمونه نمونه ایجاد کنیم:

جمع آوری داده ها به یک پرونده

در این بخش ، ما نشان خواهیم داد که چگونه می توانید از Sysdig برای جمع آوری رویدادها و تجزیه و تحلیل آنها در زمان بعدی استفاده کنید.

  1. برای رها کردن تمام رویدادهای ضبط شده در یک پرونده ، به ظرف Sysdig بروید و دستور زیر را وارد کنید:
sysdig-monitor-wordpress.scap

2. در یک پنجره ترمینال جدید ، از ab استفاده کنید تا 10000 درخواست با حداکثر 100 درخواست همزمان داشته باشید:

ab -n 1000 -c 100 http: // localhost: 8000 /؟ p = 7
این ApacheBench است ، نسخه 2.3 <$ نسخه: 1430300 $> کپی رایت 1996 آدام Twiss ، زئوس فناوری با مسئولیت محدود ، http://www.zeustech.net/ دارای مجوز به بنیاد نرم افزار Apache ، http://www.apache.org/ معیار localhost (صبور باشید) تکمیل 100 درخواست تکمیل شده 200 درخواست تکمیل شده 300 درخواست تکمیل شده 400 درخواست انجام شده 500 درخواست تکمیل شده 600 درخواست انجام شده 700 درخواست تکمیل 800 درخواست تکمیل شده 900 درخواست تکمیل شده 900 درخواست تکمیل شده 1000 درخواست تکمیل شده 1000 درخواست

توجه داشته باشید که خروجی فوق برای کوتاه بودن کوتاه شده است.

3. به تور Sysdig برگردید و با وارد کردن "CTRL + C" ضبط داده را متوقف کنید.

تجزیه و تحلیل داده ها

حال اگر به اندازه فایل monitor-wordpress.scap دقت کنید ، متوجه می شوید که Sysdig کمتر از 80M داده ضبط نکرده است:

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

برای یافتن راه خود از طریق این کوه داده ، از چیزی به نام اسکنه استفاده می کنید.

یک اسکناس در اصل یک اسکریپت Lua است که جریان رویداد را تحلیل می کند و اقدامات مفیدی را انجام می دهد.

برای نمایش لیست اسکنه می توانید دستور زیر را اجرا کنید:

sysdig -cl
رده: برنامه --------------------- httplog درخواست های HTTP ورود به سیستم httpsop HTTP درخواست های HTTP memcachelog memcached log log دسته دسته: کاربرد CPU ---------- --------- طیفی برنامه تأخیر سیستم عامل را در زمان واقعی مشاهده کنید. subecoffset تجسم زمان اجرا افست زیر مجموعه. topcontainers_cpu ظروف برتر با استفاده از CPU topprocs_cpu پردازشهای برتر با استفاده از CPU دسته: خطاها ---------------- topcontainers_error ظروف برتر با توجه به تعداد خطاها خطاها

توجه داشته باشید که خروجی فوق برای کوتاه بودن کوتاه شده است.

برای بازیابی اطلاعات دقیق درباره یک اسکنه ، دستور sysdig و به دنبال آن پرچم -i و نام اسکنه را مانند مثال زیر اجرا کنید:

sysdig -i httptop
رده: برنامه --------------------- httptop درخواست های HTTP برتر نمایش درخواست های HTTP برتر توسط: ncalls ، زمان یا بایت آرگومان: [رشته] توسط - نمایش معاملات HTTP برتر توسط: ncalls ، time یا tes ، پیش فرض ncall است

در ادامه مثال خود ، در اینجا نحوه استفاده از تراشه httptop برای نمایش درخواستهای برتر HTTP آورده شده است:

sysdig -r monitor-wordpress.scap -c httptop
ncalls روش url ----------------------------------------------- --------------------------------- 2001 GET محلی را دریافت کنید: 8000 /؟ p = 7 14 گزینه ها * 2 محلی بگیرید: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / ظروف / 6bd8418eb03f / json 1 GET localhost / v1.24 / ظروف / 06def7875617 / JSON 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901 1 GET localhost را: 8000 /

شما می توانید همان اطلاعات را در قالب مناسب ظروف با پرچم نگهدارنده مشاهده کنید:

sysdig -r monitor-wordpress.scap -c httptop -pcontainer
آدرس کانتینر ncalls url ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /؟ p = 7 1000 میزبان GET localhost را: 8000 / P = 7 43 گزینه های وردپرس-sysdig_wo * * * * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost را / v1.24 / ظروف / 06def7875617 / JSON 1 sysdig GET localhost را / v1.24 / ظروف / cd06093b141b / JSON 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901

حفاری های عمیق تر

Sysdig اطلاعات غنی از محتوا را ضبط می کند که به شما امکان می دهد بینش های دقیقی از عملکرد داخلی ظروف خود بدست آورید. بیایید تصور کنیم که شما چند کانتینر را اجرا می کنید و می خواهیم بدانیم کدام پردازنده بیشترین CPU را مصرف می کند.

  1. ظروف فعال را در دورانی که رویدادها را ضبط کرده اید ، لیست کنید:
sysdig -r Monitor-wordpress.scap -c lscontainers

2. می توانید کانتینی را که بیشترین CPU را مصرف کرده است با این موارد تشخیص دهید:

sysdig -r Monitor-wordpress.scap -c topcontainers_cpu
CPU٪ bowl.name --------------------------------------------- ----------------------------------- 5.37٪ wordpress-sysdig_wordpress_1 1.35٪ wordpress-sysdig_db_1 0.84٪ میزبان 0.51٪ sysdig

3. می توانید حتی بیشتر عمیق تر حفاری کرده و بیشترین فرآیند فشرده پردازنده را با اسکنه topprocs_cpu شناسایی کنید:

فایل sysdig -r Monitor-wordpress.scap -c topprocs_cpu.name حاوی wordpress_1
پردازنده٪ 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

اگر می خواهید جزئیات بیشتری را مشاهده کنید ، ps chisel جایگزین شفاف تری را ارائه می دهد:

sysdig -r Monitor-wordpress.scap -c PS bowl.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 8424M299 apache2 8424 8424M299 apache2 8424 8424M29 apache2 8424 8424Med29.Apache2 8424 8424MD929Dache 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 429492929 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

نکات مفید

اگر Sysdig را برای ضبط وقایع مانند مثال بالا اجرا کنید (sysdig -w Monitor-wordpress.scap) ، پرونده رویداد بطور مداوم رشد می کند تا زمانی که تمام فضای موجود را مصرف کند. چند روش وجود دارد که می تواند به جلوگیری از وقوع این امر کمک کند:

  • تعداد رویدادهایی را که باید Sysdig با عبور از آن پرچم -n ثبت کند ، مشخص کنید. هنگامی که Sysdig تعداد مشخص شده از رویدادها را ضبط کرد ، به طور خودکار از آن خارج می شود:
sysdig -n 5000-wading-wordpress.scap
  • برای پیکربندی Sddig از پرچم -C استفاده کنید تا ضبط را در پرونده های کوچکتر با اندازه مشخص شکسته کنید. مثال زیر به طور مداوم وقایع را در پرونده ها <10MB ذخیره می کند:
sysdig -C 10-monitor-wordpress.scap

این مجموعه ای از پرونده ها را بزرگتر از 10 مگابایت ایجاد نمی کند:

ls -lh monitor-wordpress *
-rw-r - r--. 1 root root 9.6M Jan 7 17:13 monitor-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 ژانویه 17 17:14 Monitoring-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 ژانویه 17:14 نظارت-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7 ژانویه 17 17:14 Monitoring-wordpress.scap3 -rw-r - r--. 1 root root 9.6M 7 ژانویه 17:14 نظارت-wordpress.scap4 -rw-r - r--. 1 root root 9.6M 7 ژانویه 17 17:14 monitor-wordpress.scap5 -rw-r - r--. 1 root root 9.6M 7 ژانویه 17:14 نظارت-wordpress.scap6 -rw-r - r--. 1 root root 9.6M 7 ژانویه 17 17:14 Monitoring-wordpress.scap7 -rw-r - r--. 1 root root 6.4M 7 ژانویه 17:14 monitor-wordpress.scap8
  • حداکثر تعداد پرونده هایی را که Sysdig باید با پرچم -W نگه داشته باشد ، مشخص کنید. به عنوان مثال ، می توانید پرچم های -C و -W را به این ترتیب ترکیب کنید:
sysdig -C 10-W 4 -w Monitoring-wordpress.scap

دستور فوق فقط چهار پرونده ضبط آخر را نگه می دارد:

ls -lh monitor-wordpress *
-rw-r - r--. 1 root root 7.2M 7 ژانویه 17 17:21 Monitoring-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 ژانویه 17:21 monitor-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 ژانویه 17:21 monitor-wordpress.scap2 -rw-r - r--. 1 root root 9.6M Jan 7 17:21 monitor-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10-W 4 -w Monitoring-wordpress.scap

نظارت در زمان واقعی

همچنین با Sysdig می توانید داده ها را در زمان واقعی تجزیه و تحلیل کنید. در نگاه اول ، این می تواند مانند یک کار دلهره آور به نظر برسد ، زیرا به طور پیش فرض ، تمام وقایع به طور مداوم روی کنسول چاپ می شوند. خوشبختانه ، اسکناس برای کمک به اینجاست.

بیایید مثالی بزنیم.

فرآیندهای خود را بر اساس مبنای هر محفظه تجزیه و تحلیل کنید

  1. دستور زیر را برای لیست ظروف خود اجرا کنید:
docker ps
CONTAINER شناسه دستورالعمل ایجاد شده PATTS وضعیت نامهای 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" "9 دقیقه پیش تا 9 دقیقه sysdig 06def7875617 وردپرس: آخرین" docker-entry.s ... "3 ساعت قبل تا 3 ساعت 0.0.0.0:8 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." 3 ساعت پیش Up 3 ساعت 3306 / tcp، 33060 / tcp wordpress-sysdig_db_1

2. می توانید فرآیندهای موجود در ظرف WordPress را با:

ظرف syprigs -pc-c topprocs_cpu.name = wordpress-sysdig_wordpress_1

3. به طور مشابه ، می توانید فرآیندهای موجود در ظرف MySQL را تجزیه و تحلیل کنید:

ظرف syprigs -pc-c topprocs_cpu.name = wordpress-sysdig_db_1

توجه داشته باشید که تفاوت چندانی با این مثال ندارد ، Sysdig می تواند بر ترافیک شبکه ، استفاده دیسک و غیره نظارت کند.

در این آموزش ، به سراغ اصول استفاده از Sysdig رفته اید تا درک دقیقی از فعالیت های ایجاد شده توسط ظروف خود داشته باشید. مثال های موجود در این پست وبلاگ به شما در شروع کار کمک کرده و در آموزش های بعدی نحوه استفاده از Csysdig و Sysdig Inspect را به شما نشان خواهیم داد.