Sysdig: ما هو وكيفية استخدامه

Sysdig هي أداة رؤية نظام عالمية مع دعم الحاويات. ما يجعل Sysdig خاصًا ، هو أنه يعلق نفسه في نواة الماكينة ويفصل المعلومات على أساس كل حاوية. بالنسبة لنطاق هذا البرنامج التعليمي ، سنركز على إصدار مفتوح المصدر من Sysdig.

في الأقسام التالية ، ستقوم بما يلي:

  • قم بتثبيت Sysdig
  • قم بتدوير تثبيت Wordpress باستخدام Docker-compose
  • استخدم Sysdig لجمع الأحداث وتحليلها في وقت لاحق
  • استخدم Sysdig لتحليل البيانات في الوقت الفعلي

المتطلبات الأساسية

  • تم تثبيت Docker على نظامك. للحصول على تفاصيل حول تثبيت Docker ، ارجع إلى صفحة تثبيت Docker.
  • يتم تثبيت Docker Compose على نظامك. راجع صفحة تثبيت Docker Compose للحصول على إرشادات حول كيفية تثبيت Docker Compose.
  • يتم تثبيت رؤوس النواة على النظام المضيف.

قم بتثبيت Sysdig

اتبع هذه الخطوات لتثبيت Sysdig داخل حاوية Docker:

  1. في نافذة طرفية ، نفّذ الأمر التالي لسحب صورة Sysdig Docker:
عامل ميناء سحب sysdig / sysdig
باستخدام العلامة الافتراضية: الأحدث: السحب من sysdig / sysdig 2967486b0658: سحب كامل 78101b780c72: سحب كامل 7e78b657334d: سحب كامل 650327159ca8: سحب كامل 47ebf73ab754: سحب كامل bf51ac76a6d9: سحب كامل 0cd11104ddd6c: إكمال edf635: إكمال كامل سحب كامل 6de86c8ed6e9: سحب كامل 8d1825f8be4b: سحب كامل ملخص: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 الحالة: تم تنزيل صورة أحدث لـ sysdig / sysdig: الأحدث

2. قم بتشغيل Sysdig في حاوية بإدخال:

تشغيل 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
* إعداد روابط / usr / src من المضيف * تفريغ مسبار sysdig ، إذا كان موجودًا * تثبيت تثبيت dkms للخطأ sysdig! صدى رؤوس نواة kernel 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 / مصدر. * فشل إنشاء قواعد البيانات قيد التشغيل ، تعذر العثور على /var/lib/dkms/sysdig/0.26.4/build/make.log * محاولة تحميل مسبار sysdig للنظام ، إذا كان موجودًا * محاولة العثور على مسبار sysdig مجمع قبل 3.10 .0-957.12.2.el7.x86_64 تم العثور على تهيئة kernel على /host/boot/config-3.10.0-957.12.2.el7.x86_64 * محاولة تنزيل وحدة نمطية مسبقة التحويل من https://s3.amazonaws.com/download .draios.com / steady / 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 الوصول إليها.

قم بتثبيت وورد التثبيت

في هذا القسم ، ستقوم بتثبيت Wordpress باستخدام الأمر 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: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: يعتمد_:: db وورد: أحدث المنافذ: - "8000: 80" إعادة التشغيل: دائمًا البيئة: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: Wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: أحجام وورد: db_data: {}

3. قم بتشغيل الأمر docker-compose up في الوضع المنفصل مع:

إنشاء عامل الميناء -d
إنشاء شبكة "wordpress-sysdig_default" باستخدام برنامج التشغيل الافتراضي إنشاء وحدة تخزين "wordpress-sysdig_db_data" باستخدام برنامج التشغيل الافتراضي 8c04561117a4: سحب كامل d6b7434b63a2: سحب كامل 83d8859e9744: سحب كامل 9c3d824d0ad5: سحب كامل 9e316fd5b3b3: سحب كامل 578b40496c37: سحب كامل 814ae7711d3c: سحب كامل 4896fed78b660: استكمال كامل e964d8d877 سحب ecda5b7aad12 كاملة: سحب كامل 84256a6b6b44: سحب كامل 35d4f385efb7: سحب bf697c2ae701 كاملة: سحب كامل d054b015f084: سحب كامل دايجست: SHA256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 الحالة: تم تحميلها صورة جديدة لورد: آخر إنشاء وورد-sysdig_db_1 ... يتم إنشاء وورد-sysdig_word press_1 ... تم

4. يمكنك التحقق من حالة حاوياتك من خلال:

عامل إرساء ps

إذا كان كل شيء يسير على ما يرام ، يجب أن ترى شيئًا مشابهًا للمخرج التالي:

IMAGEIN ID IMAGE COMMANDED STORUS PORTS NAMES f390eec29f52 wordpress: latest "docker-entrypoint.s…" منذ حوالي دقيقة Up حوالي دقيقة 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 الخلية: 5.7 "docker-entrypoint. s… "قبل دقيقة تقريبًا Up حوالي دقيقة 3306 / tcp ، 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "منذ 13 دقيقة حتى 13 دقيقة sysdig

5. الآن وورد هو قيد التشغيل. قم بتوجيه المتصفح الخاص بك إلى http: // localhost: 8000 لبدء معالج التثبيت:

6. بمجرد انتهاء معالج التثبيت ، دعنا ننطلق وننشئ نموذجًا للنشر:

جمع البيانات إلى ملف

في هذا القسم ، سنوضح كيف يمكنك استخدام Sysdig لجمع الأحداث وتحليلها في وقت لاحق.

  1. لتفريغ كل الأحداث الملتقطة إلى ملف ، انتقل إلى حاوية Sysdig ، وأدخل الأمر التالي:
sysdig -w مراقبة WordPress.scap

2. في نافذة طرفية جديدة ، استخدم ab لتقديم 10000 طلب بحد أقصى 100 طلب يعمل في نفس الوقت:

ab -n 1000 -c 100 http: // localhost: 8000 /؟ p = 7
هذا هو ApacheBench ، الإصدار 2.3 <$ Revision: 1430300 $> حقوق الطبع والنشر 1996 Adam Twiss، Zeus Technology Ltd، http://www.zeustech.net/ مرخص لمؤسسة Apache Software Foundation ، http://www.apache.org/ Benchmarking localhost (التحلي بالصبر) إكمال 100 طلبًا إكمال 200 طلبًا إكمال 300 طلبًا إكمال 400 طلبًا إكمال 600 طلبًا إكمال 700 طلبًا إكمال 800 طلبًا إكمال 900 طلبًا إكمال 1000 طلبًا الانتهاء من 1000 طلبًا

لاحظ أنه تم اقتطاع الناتج أعلاه للإيجاز.

3. ارجع إلى جولة في حاوية Sysdig وأوقف التقاط البيانات عن طريق إدخال "CTRL + C".

تحليل البيانات

الآن ، إذا نظرت إلى حجم ملف رصد wordpress.scap ، فستلاحظ أن Sysdig التقط ما لا يقل عن 80 مليونًا من البيانات:

ls -lh مراقبة WordPress.scap
-rw-r - r--. 1 الجذر الجذر 80M 7 يناير 16:28 مراقبة wordpress.scap

للعثور على طريقك عبر هذا الجبل من البيانات ، ستستخدم شيئًا يسمى إزميل.

الإزميل هو في الأساس نص برمجي Lua يحلل تدفق الأحداث وينفذ إجراءات مفيدة.

يمكنك تشغيل الأمر التالي لعرض قائمة الأزاميل:

sysdig -cl
الفئة: التطبيق --------------------- HTTLOG سجل طلبات HTTP --------- مطياف تصور كمون نظام التشغيل في الوقت الحقيقي. تصور ثانوي لوقت تنفيذ الإزاحة الثانوي. topcontainers_cpu أعلى الحاويات حسب استخدام وحدة المعالجة المركزية topprocs_cpu أفضل العمليات باستخدام وحدة المعالجة المركزية الفئة: الأخطاء ---------------- topcontainers_error أعلى الحاويات حسب عدد الأخطاء topfiles_errors أعلى الملفات حسب عدد الأخطاء topprocs_errors أعلى العمليات حسب الرقم من الأخطاء

لاحظ أنه تم اقتطاع الناتج أعلاه للإيجاز.

لاسترداد معلومات تفصيلية حول إزميل ، قم بتشغيل الأمر sysdig متبوعًا بعلامة -i واسم إزميل ، كما في المثال التالي:

sysdig -i htptop
الفئة: التطبيق --------------------- HTTOPTOP أعلى طلبات HTTP إظهار أهم طلبات HTTP حسب: ncalls أو الوقت أو البايت Args: [string] by - عرض المعاملات HTTP الأعلى بواسطة: ncalls أو time أو tes ، الافتراضي هو ncalls

في متابعة مثالنا ، إليك كيفية استخدام إزميل htptop لعرض أهم طلبات HTTP:

sysdig -r monitor-wordpress.scap -c htptop
عنوان url لـ ncalls method ----------------------------------------------- --------------------------------- 2001 الحصول على مضيف محلي: 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 / containers / 6bd8418eb03f / json 1 GET localhost / v1.24 / حاويات / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7b734f7b682222ad2a

يمكنك رؤية نفس المعلومات بتنسيق مناسب للحاوية بعلامة -pontainer:

sysdig -r monitor-wordpress.scap -c htptop -pcontainer
عنوان ncalls حاوية الطريقة ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /؟ p = 7 1000 host GET localhost: 8000 /؟ p = 7 43 اختيارات wordpress-sysdig_wo * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / ssdig / v1.24 / حاويات 6 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1349ff99b47a1349ffbacac7a2d597f

حفر أعمق

يلتقط Sysdig معلومات غنية بالمحتوى تتيح لك الحصول على رؤى تفصيلية حول الأعمال الداخلية للحاويات. لنفترض أنك تقوم بتشغيل عدد قليل من الحاويات وتريد معرفة العملية التي تستهلك معظم وحدة المعالجة المركزية.

  1. أدرج الحاويات التي كانت نشطة خلال الفترة التي تلتقط فيها الأحداث:
sysdig -r مراقبة WordPress.scap -c lscontainers

2. يمكنك تحديد الحاوية التي تستهلك معظم وحدة المعالجة المركزية مع:

sysdig -r مراقبة WordPress.scap -c topcontainers_cpu
CPU٪ container.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 container.name يحتوي على wordpress_1
CPU٪ Process PID ---------------------------------------------- ---------------------------------- 0.12٪ أباتشي 2 8383 0.11٪ أباتشي 291313 0.11٪ أباتشي 2 9300 0.11٪ أباتشي 2 9242 0.11٪ اباتشي 2 8897 0.11٪ اباتشي 2 8422 0.10٪ اباتشي 2 9372 0.10٪ اباتشي 2 9241 0.10٪ اباتشي 2 8424 0.09٪ اباتشي 2 9429

إذا كنت ترغب في رؤية المزيد من التفاصيل ، فإن إزميل ps يوفر بديلاً أكثر تفصيلاً:

sysdig -r monitor-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 8383838383 www-data 307.44M 25.46M 429496729 apache2 8422 8422 www-data 235.44M 22.90M 429496729 apache2 8424 84672 www-data 307.449 25472 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 930063500 9300 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 Monitoring-wordpress.scap) ، فسوف ينمو ملف الحدث باستمرار حتى يستهلك كل المساحة المتاحة. هناك بعض الطرق التي يمكن أن تساعد في منع حدوث ذلك:

  • حدد عدد الأحداث التي يجب على Sysdig التقاطها بتمرير علامة -n. بمجرد أن يلتقط Sysdig العدد المحدد من الأحداث ، سيتم الخروج تلقائيًا:
sysdig -n 5000 -w مراقبة WordPress.scap
  • استخدم علامة -C لتكوين Sysdig بحيث يكسر الالتقاط في ملفات أصغر بحجم محدد. يحفظ المثال التالي الأحداث باستمرار إلى ملفات <10 ميغابايت:
sysdig -C 10 -w مراقبة WordPress.scap

سيؤدي هذا إلى إنشاء مجموعة من الملفات لا يزيد حجمها عن 10 ميغابايت:

ls -lh مراقبة وورد *
-rw-r - r--. 1 الجذر الجذر 9.6M Jan 7 17:13 مراقبة - 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 الجذر الجذر 9.6M Jan 7 17:14 مراقبة - 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 الجذر الجذر 6.4M Jan 7 17:14 مراقبة wordpress.scap8
  • حدد الحد الأقصى لعدد الملفات التي يجب أن يحتفظ بها Sysdig مع العلامة -W. على سبيل المثال ، يمكنك دمج علامتي -C و -W كما يلي:
sysdig -C 10 -W 4 -w مراقبة wordpress.scap

سيحتفظ الأمر أعلاه فقط بملفات الالتقاط الأربعة الأخيرة:

ls -lh مراقبة وورد *
-rw-r - r--. 1 الجذر الجذر 7.2M Jan 7 17:21 مراقبة 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 الجذر الجذر 9.6M يناير 7 17:21 مراقبة wordpress.scap3 الجذر @ cd06093b141b: / # sysdig -C 10 -W 4 -w مراقبة WordPress.scap

المراقبة في الوقت الحقيقي

باستخدام Sysdig ، يمكنك أيضًا تحليل البيانات في الوقت الفعلي. للوهلة الأولى ، قد تبدو هذه مهمة شاقة لأنه ، بشكل افتراضي ، تتم طباعة جميع الأحداث باستمرار إلى وحدة التحكم. لحسن الحظ ، الأزاميل هنا للمساعدة.

لنأخذ مثالاً.

تحليل العمليات الخاصة بك على أساس لكل حاوية

  1. قم بتشغيل الأمر التالي لسرد الحاويات الخاصة بك:
عامل إرساء ps
صورة معرف هوية الحاوية التي تم إنشاؤها لأسماء المنافذ 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" قبل 9 دقائق Up 9 minutes sysdig 06def7875617 wordpress: latest "docker-entrypoint.s…" منذ 3 ساعات حتى 3 ساعات 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6ادات

2. يمكنك تحليل العمليات التي تعمل في حاوية WordPress باستخدام:

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

3. وبالمثل ، يمكنك تحليل العمليات التي تعمل في حاوية MySQL:

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

لاحظ أنه ، لا يختلف كثيرًا عن هذا المثال ، يمكن لـ Sysdig مراقبة حركة مرور الشبكة واستخدام القرص وما إلى ذلك.

في هذا البرنامج التعليمي ، لقد تجاوزت أساسيات استخدام Sysdig للحصول على فهم واضح للنشاط الناتج عن حاوياتك. ساعدتك الأمثلة في منشور المدونة هذا على البدء ، وفي البرامج التعليمية المستقبلية ، سنوضح لك كيفية استخدام Csysdig و Sysdig Inspect.