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 2967486b0658: משוך שלם 78101b780c72: משוך מושלם 7e78b657334d: משוך שלם 650327159ca8: Pull complete 47ebf73ab754: Pull complete bf51ac76a6d9: Pull complete 0cd114d6d4d6d04: a: Pull complete 6de86c8ed6e9: Pull complete 8d1825f8be4b: Pull complete Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 סטטוס: תמונה שהורדה חדשה יותר עבור sysdig / sysdig: האחרונה

2. הרץ את Sysdig במכל על ידי כניסה:

מפעיל docker -i -t --name sysdig - מוגבלת -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-probe, אם קיימת * הפעלת התקנת dkms עבור שגיאת sysdig! הד לא ניתן למצוא את כותרות הגלעין שלך לליבה 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 build נכשלה, לא הצלחתי למצוא /var/lib/dkms/sysdig/0.26.4/build/make.log * מנסה לטעון מערכת sysdig-probe, אם קיימת * מנסה למצוא בדיקה מורכבת של sysdig עבור 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 / stable / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko הורדה הצליחה, טעינת מודול root @ 7b14a23f22eb: / #

כמה דברים שצריך לציין לגבי הפקודה לעיל:

  • דגל ה- i שומר על STDIN פתוח.
  • הפרמטר - privileged מספק גישה לכל המכשירים שבמארח. כמו כן היא קובעת את SELinux לאפשר לתהליכים הפועלים בתוך המכולה גישה זהה למארח כמו לתהליך הפועל על המארח.
  • דגל ה- v מציין את רשימת הקבצים (במארח) ש- Sysdig יכולה לגשת אליהם.

ספין התקנה של Wordpress

בחלק זה תתקין את Wordpress באמצעות הפקודה docker-compose.

  1. בחלון מסוף חדש, עבור לספריית הפרויקטים שלך והקלד את הפקודות הבאות:
mkdir wordpress-sysdig & & cd wordpress-sysdig

2. צור קובץ בשם docker-compose עם התוכן הבא:

גרסה: שירותי '3.3': db: תמונה: mysql: 5.7 כרכים: - db_data: / var / lib / mysql הפעלה מחדש: תמיד סביבה: MYSQL_ROOT_PASSWORD: Someordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: image:: wordpress: היציאות האחרונות: - "8000: 80" הפעלה מחדש: תמיד בסביבה: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: נפחי wordpress: db_data: {}

3. הפעל את הפקודה-לחיבור הדוקר במצב מנותק עם:

הדוקר - חבר עד -ד
יצירת רשת "wordpress-sysdig_default" עם מנהל ההתקן של ברירת המחדל יצירת אמצעי האחסון "wordpress-sysdig_db_data" עם מנהל התקן ברירת המחדל מושכת wordpress (wordpress: האחרונה) ... האחרונה: משיכה מהספריה / wordpress 8ec398bc0356: משוך מלא 85cf4fc86478: משוך להשלים 970dadf4ccb6: 8c04561117a4: המשוך מלא d6b7434b63a2: משוך 83d8859e9744 המלא: המשוך מלא 9c3d824d0ad5: המשוך מלא 9e316fd5b3b3: המשוך מלא 578b40496c37: המשוך מלא 814ae7711d3c: המשוך מלא 4896fed78b6b: המשוך מלא e74d71e9611d: המשוך מלא 46017765526c: המשוך מלא 280,386,098,458: המשוך f32eb0d8c540 מלא: משוך 5c47b9ea747a השלם: משוך ecda5b7aad12 מלא: משוך מלא 84256a6b6b44: משוך מלא 35d4f385efb7: bf697c2ae701 מלא Pull: d054b015f084 המלא Pull: המשוך שלם תקציר: SHA256: מצב 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465: image החדש שהורד לוורדפרס: sysdig_db_1-wordpress יצירה האחרונה ... נעשה יצירה-sysdig_word wordpress press_1 ... סיימה

4. אתה יכול לאמת את מצב המכולות שלך באמצעות:

docker ps

אם הכל מסתדר, אתה אמור לראות משהו הדומה לפלט הבא:

מזהה מיכל תמונות פיקוד נוצר שמות יציאות שמות f390eec29f52 wordpress: האחרונה "docker-entrypoint.s ..." בערך דקה למעלה בערך דקה 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. s ... "לפני דקה למעלה בערך דקה 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 <$ עדכון: 1430300 $> זכויות יוצרים 1996 אדם טוויס, Zeus Technology Ltd, http://www.zeustech.net/ מורשה לקרן Apache Software, http://www.apache.org/ Benchmarking localhost (סבלני) הושלמו 100 בקשות שהושלמו 200 בקשות הושלמו 300 בקשות הושלמו 400 בקשות הושלמו 500 בקשות הושלמו 600 בקשות הושלמו 700 בקשות הושלמו 800 בקשות הושלמו 900 בקשות הושלמו 1000 בקשות סיימו 1000 בקשות

שים לב שהפלט שלעיל הוגזם לצורך הקיצור.

3. חזור לסיבוב מיכל Sysdig והפסיק לכידת נתונים על ידי הזנת "CTRL + C".

ניתוח נתונים

כעת, אם אתה מסתכל על גודל הקובץ monitoring-wordpress.scap, תבחין כי Sysdig תפסה לא פחות מ- 80 מיליון נתונים:

ls -lh ניטור-wordpress.scap
-rw-r - r--. 1 שורש שורש 80M ינואר 7 16:28 ניטור-wordpress.scap

כדי למצוא את דרכך בהר הנתונים הזה, תשתמש במשהו שנקרא אזמל.

אזמל הוא בעצם תסריט של לואה המנתח את זרם האירועים ומבצע פעולות שימושיות.

אתה יכול להריץ את הפקודה הבאה כדי להציג את רשימת האזמל:

sysdig -cl
קטגוריה: יישום --------------------- httplog יומן בקשות HTTP httptop למעלה בקשות HTTP בקשות memcachelog memcache ביומן קטגוריה: שימוש במעבד ---------- --------- ספקטרוגרמה דמיינו חביון של מערכת ההפעלה בזמן אמת. דמיין את זמן הביצוע של קיזוז המשנה. topcontainers_cpu מכולות מובילות על ידי שימוש במעבד topprocs_cpu תהליכים עיקריים על ידי שימוש במעבד קטגוריה: שגיאות ---------------- topcontainers_error המכולות המובילים לפי מספר טעויות topfiles_errors הקבצים המובילים לפי מספר טעויות topprocs_errors תהליכים ראשונים לפי מספר של טעויות

שים לב שהפלט שלעיל הוגזם לצורך הקיצור.

כדי לאחזר מידע מפורט על אזמל, הפעל את הפקודה sysdig ואחריה הדגל -i ושם האיזמל, כמו בדוגמה הבאה:

sysdig -i httptop
קטגוריה: יישום --------------------- httptop בקשות HTTP מובילות הצג בקשות HTTP מובילות מאת: ncalls, time or bytes ארגס: [string] מאת - הצג עסקאות HTTP מובילות מאת: ncalls, זמן או על ידי tes, ברירת המחדל היא ncalls

המשך בדוגמה שלנו, להלן האופן בו אתה יכול להשתמש במפסלת ה- httptop כדי להציג את בקשות HTTP המובילות:

sysdig -r ניטור-wordpress.scap -c httptop
שיטת ncalls url ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 אפשרויות * 2 GET localhost: 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/db39680b63ac47a1d989da7b2427017017017017857857857857

אתה יכול לראות את אותו מידע בפורמט ידידותי למכולה עם דגל המכולות:

sysdig -r ניטור-wordpress.scap -c httptop-מיכל
שיטת מיכל ncalls url ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 מארח GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo אפשרויות * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24h / s7 / 1 cd06093b141b / json 1 sysdig GET /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47b7a77777777777774771

לחפור עמוק יותר

Sysdig לוכדת מידע עשיר בתוכן המאפשר לך לקבל תובנות מפורטות לגבי פעולתם הפנימית של המכולות שלך. בואו נניח שאתה מפעיל כמה מכולות ורוצה לדעת איזה תהליך צורך הכי הרבה CPU.

  1. ציין את המכולות שהיו פעילות בתקופה שבה צילמת אירועים:
sysdig -r ניטור-wordpress.scap -c ls מכולות

2. אתה יכול לזהות את המיכל שצרך את המעבד הרב ביותר בעזרת:

sysdig -r ניטור-wordpress.scap -c topcontainers_cpu
מעבד% מעבד. שם --------------------------------------------- ----------------------------------- 5.37% wordpress-sysdig_wordpress_1 1.35% wordpress-sysdig_db_1 0.84% ​​host 0.51% sysdig

3. אתה יכול לחפור עוד יותר לעומק ולזהות את התהליך האינטנסיבי ביותר במעבד בעזרת אזמל topprocs_cpu:

sysdig -r ניטור-wordpress.scap -c topprocs_cpu container.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 מספק חלופה מילולית יותר:

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.42 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 429490000 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 כך שתפרק את הלכידה לקבצים קטנים יותר בגודל מוגדר. הדוגמה הבאה שומרת ברציפות אירועים לקבצים <10MB:
sysdig -C 10-w ניטור-wordpress.scap

פעולה זו תיצור חבורה של קבצים שאינם גדולים מ- 10 MB:

ls -lh ניטור-wordpress *
-rw-r - r--. 1 שורש שורש 9.6M 7 בינואר 17:13 ניטור-wordpress.scap0 -rw-r - r--. 1 שורש שורש 9.6M 7 בינואר 17:14 ניטור-wordpress.scap1 -rw-r - r--. 1 שורש שורש 9.6M 7 בינואר 17:14 ניטור-wordpress.scap2 -rw-r - r--. 1 שורש שורש 9.6M 7 בינואר 17:14 ניטור-wordpress.scap3 -rw-r - r--. 1 שורש שורש 9.6M 7 בינואר 17:14 ניטור-wordpress.scap4 -rw-r - r--. 1 שורש שורש 9.6M 7 בינואר 17:14 ניטור-wordpress.scap5 -rw-r - r--. 1 שורש שורש 9.6M 7 בינואר 17:14 ניטור-wordpress.scap6 -rw-r - r--. שורש 1 שורש 9.6M 7 בינואר 17:14 ניטור-wordpress.scap7 -rw-r - r--. 1 שורש שורש 6.4M 7 בינואר 17:14 ניטור-wordpress.scap8
  • ציין את המספר המרבי של קבצים ש- Sysdig אמור לשמור עם דגל -W. לדוגמה, אתה יכול לשלב את הדגלים -C ו- -W כך:
sysdig -C 10-W 4-w ניטור-wordpress.scap

הפקודה לעיל תשמור רק על ארבעת קבצי הלכידה האחרונים:

ls -lh ניטור-wordpress *
-rw-r - r--. 1 שורש שורש 7.2M 7 בינואר 17:21 ניטור-wordpress.scap0 -rw-r - r--. 1 שורש שורש 9.6M 7 בינואר 17:21 ניטור-wordpress.scap1 -rw-r - r--. 1 שורש שורש 9.6M 7 בינואר 17:21 ניטור-wordpress.scap2 -rw-r - r--. שורש 1 שורש 9.6M 7 בינואר 17:21 ניטור-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w ניטור-wordpress.scap

ניטור בזמן אמת

באמצעות Sysdig, אתה יכול גם לנתח נתונים בזמן אמת. במבט ראשון זה יכול להראות כמו משימה מפחידה מכיוון שברירת המחדל, כל האירועים מודפסים ברציפות לקונסולה. למרבה המזל אזובלים כאן כדי לעזור.

בוא ניקח דוגמא.

נתח את התהליכים שלך על בסיס מיכל

  1. הפעל את הפקודה הבאה לרשימת המכולות שלך:
docker ps
מזהה מיכל תמונות פיקוד נוצר שמות יציאות שמות 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" לפני 9 דקות למעלה 9 דקות sysdig 06def7875617 wordpress: האחרונה "docker-entrypoint.s ..." לפני 3 שעות למעלה 3 שעות 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." לפני 3 שעות למעלה 3 שעות 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. באפשרותך לנתח את התהליכים הפועלים בכלי וורדפרס באמצעות:

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.