לדלג לתוכן

Chapter 16: ניתוח זירת פשע – לוגים ודיאגנוסטיקה (Logs & Sysdiagnose) - Facilitator Guide

הנחיית למדריך (Instructor Note): מסמך זה משמש כתסריט ומערך שיעור (Lesson Plan) עבורך. הוא כולל את ההסברים המילוליים שמומלץ להעביר לכיתה, שלבי הדגמה צעד-אחר-צעד, ובוקסה של העמקה טכנית שנועדה לעזור לך לענות על שאלות מתקדמות מצד תלמידים. הקפד לשמור על סנכרון עם Asset A. כלל ההדגמות במערך זה מתבססות על ממשק המשתמש הגרפי (GUI), בהתאם לגישת הקורס. פקודות Terminal שמורות להעמקה טכנית בלבד.


1. ה-Unified Logging System: הבנת הגישה המודרנית של אפל ללוגים

Objective

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

Discussion (Script)

"כולנו זוכרים את הימים שבהם היינו ניגשים לקובץ טקסט פשוט בתיקיית /var/log כדי להבין למה משהו קרס. אבל אפל שינתה לחלוטין את הגישה. כיום, הכל הופך ל-Unified Logging System. מדובר במאגר נתונים דחוס ובינארי, ולא בקובצי טקסט. למה? כי מק מודרני מייצר מיליוני שורות לוג בשנייה, וקובץ טקסט רגיל פשוט היה פוגע בביצועים, שוחק את כונן ה-SSD ומאט את המחשב. המערכת החדשה שומרת את רוב הלוגים בזיכרון ה-RAM (Unified Memory), וכותבת לדיסק רק את מה שבאמת קריטי. הלוג הישן, system.log, אמנם עדיין קיים ויש תוכנות היסטוריות שעוד כותבות אליו, אבל הוא בגדר Deprecated (מיושן ואינו נתמך אקטיבית) ועדיף לא להסתמך עליו. כדי לקרוא את הלוגים החדשים, אנחנו צריכים להשתמש בכלים הייעודיים של macOS."

Demonstration

  1. פתחו חלון Finder.
  2. נווטו לתיקיית /var/log בעזרת Go to Folder (Cmd+Shift+G).
  3. הציגו את הקובץ system.log. פתחו אותו והראו שיש בו מעט מאוד מידע לעומת העבר.
  4. הסבירו שמרבית המידע החשוב לא נמצא כאן אלא מאוחסן באופן בינארי בתיקיית /var/db/diagnostics שאינה ניתנת לקריאה כטקסט פשוט, ולכן נזדקק לאפליקציית Console.

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה) * מנגנון ה-Unified Logging System נבנה כדי להוריד את עומס ה-I/O מהדיסק (למנוע Observer Effect - מצב שבו עצם כתיבת הלוגים תוקעת את המערכת שעליה אנו מנסים לנטר). הלוגים מקודדים בפורמט בינארי, דחוסים, והמערכת מנהלת מחזור חיים (Retention) חכם משלה. * קיימות רמות לוג שונות (Default, Info, Debug, Fault, Error). לוגים מסוג Info ו-Debug לרוב נשמרים רק בזיכרון ונמחקים במהירות אלא אם הוגדר Configuration Profile (פרופיל תצורה) (Configuration Profile) שדורש את שמירתם הקבועה לדיסק. * מאחורי הקלעים, מנהלי מערכת מתקדמים יכולים להשתמש בפקודת הטרמינל `log show` כדי לקרוא לוגים ישירות, לסנן לפי תאריך, רמה או תהליך (Process).

2. שליטה באפליקציית Console: סינון רעשים ואיתור תקלות בזמן אמת

Objective

ללמוד להשתמש בכלי ה-Console המובנה (GUI) כדי לסנן רעשי רקע ולאתר במדויק תהליכים בעייתיים או קריסות של אפליקציות.

Discussion (Script)

"עכשיו כשהבנו שאי אפשר פשוט לפתוח קובץ טקסט, איך בכל זאת קוראים את ה-Unified Logging? בדיוק בשביל זה קיימת אפליקציית ה-Console. כשתפתחו אותה, תראו 'מפל' של נתונים – אלפי שורות שרצות בשנייה. אי אפשר לקרוא את זה ככה, זה כמו לחפש מחט בערמת שחת. החוכמה היא לסנן ולהשקיט את הרעש. אנחנו יכולים לעצור את הזרימה, לחפש לפי תת-מערכת (Subsystem) או תהליך מסוים, ולמצוא בדיוק את מה שאנחנו צריכים. בנוסף, אם תוכנה כלשהי קרסה – נניח, אפליקציה ארגונית שהתקנו – אנחנו נמצא את דוח הקריסה (Crash Report) המסודר בדיוק כאן, תחת הקטגוריה Diagnostic Reports."

Demonstration

  1. פתחו את אפליקציית Console מתוך תיקיית /Applications/Utilities.
  2. לחצו על כפתור Start בסרגל העליון כדי להדגים את שטף הלוגים (ה"מפל").
  3. לחצו על כפתור Pause כדי לעצור את השטף ולהראות איך "משתלטים" על המידע.
  4. בסרגל החיפוש, הקלידו מונח כמו mdmclient ושנו את הפילטר שנוצר מ-Any ל-Process כדי לסנן תהליכים בלבד.
  5. בחלונית הצדדית (Sidebar), נווטו אל Crash Reports (או Diagnostic Reports) והראו כיצד נראה דוח קריסה של תוכנה (קובץ .ips). הראו כיצד לחיצה כפולה פותחת את הדו"ח לתצוגה מעמיקה.

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה) * ה-Console משמש כ-Log Viewer הראשי של macOS. הוא מתרגם את הנתונים הבינאריים של ה-Unified Logging לקריאה אנושית. * חיפוש מתקדם: ב-Console אפשר לשמור שאילתות סינון (Saved Searches) בסרגל העליון, מה שמאוד עוזר לצוותי IT שחוקרים שגיאות קבועות של כלי אבטחה, חומת אש או VPN ארגוני. * קובצי קריסה (`.ips`) מכילים מידע קריטי על סיבת הקריסה (לדוגמה `EXC_BAD_ACCESS` שמעיד על גישה לא חוקית לזיכרון) ואת ה-Stack Trace שמראה איזה Background Process (תהליך רקע) הוביל לבעיה. * שיתוף והסלמה: ניתן ללחוץ לחיצה כפולה על דוח כדי לפתוח אותו בחלון Quick Look, שם יש כפתור Share לשליחה מהירה לצוות הפיתוח או ל-AppleCare.

3. יצירת Sysdiagnose: דיאגנוסטיקה מתקדמת מתוך ה-GUI

Objective

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

Discussion (Script)

"לפעמים הבעיה מורכבת מדי, וסריקה מהירה ב-Console לא מספיקה. במקרים כאלה, אנחנו או המהנדסים של אפל צריכים תמונה מלאה של כל מה שקורה במחשב באותו רגע נתון – לוגים, מצב הרשת, תהליכים שרצים, צריכת זיכרון, הכל מכל. כאן נכנס לתמונה ה-Sysdiagnose. זהו תהליך אבחון עמוק שיכול לקחת כמה דקות טובות, והוא עשוי להאט את המחשב זמנית. בסופו של התהליך, נקבל קובץ ארכיון ענק (סביב ה-300MB) שמכיל את כל המידע הנדרש. הדרך הקלה והוויזואלית ביותר להפעיל אותו היא מתוך ה-Activity Monitor, מבלי לכתוב שורת קוד אחת. את הקובץ הזה נעביר בדרך כלל לצוות ה-Escalation הארגוני שלנו או ל-AppleCare להמשך חקירה."

Demonstration

  1. פתחו את Activity Monitor מתוך תיקיית Utilities.
  2. הציגו את תפריט הפעולות (סמל של עיגול עם 3 נקודות או גלגל שיניים, תלוי בגרסה) בשורת התפריטים העליונה של האפליקציה.
  3. בחרו באפשרות Run System Diagnostics (או System Diagnostics Options).
  4. שימו לב: אל תשלימו את התהליך בפועל במהלך ההדרכה כדי לא לעכב את השיעור, אך הסבירו לתלמידים שברגע שמאשרים, התהליך רץ ברקע.
  5. הסבירו שבסיום התהליך, יקפוץ אוטומטית חלון Finder (לרוב בנתיב מוסתר /var/tmp/) שיחשוף את הארכיון המוכן עם סיומת .tar.gz.

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה) * ה-Sysdiagnose מייצר קובץ ארכיון מסוג `.tar.gz` המכיל העתק של מערכת הלוגים המלאה, דוחות צריכת סוללה, תצורות רשת, פלטים מפקודות דיאגנוסטיקה כמו `system_profiler`, מצב תהליכי מערכת ועוד. * בנוסף ל-Activity Monitor, קיצור המקלדת הקלאסי והגלובלי (ה"סודי") לייצור Sysdiagnose ברקע מכל מקום במערכת הוא `Cmd + Option + Ctrl + Shift + Period (.)`. מסך המחשב עשוי להבהב לשנייה כאינדיקציה לתחילת האיסוף. * למנהלי מערכת שעובדים מרחוק (SSH), ניתן להפיק את הקובץ דרך הטרמינל באמצעות הפקודה `sudo sysdiagnose`.

4. חדר הבריחה: איתור שורת הלוג הספציפית ("האקדח המעשן") ב-Console

Objective

שימוש ב-Console כדי לדבג בעיית תקשורת בסביבה מנוהלת, ולהוכיח כי פקודת MDM נחסמה על ידי פיירוול ארגוני.

Discussion (Script)

"עד עכשיו עסקנו בתקלות כלליות של המערכת. אבל בואו נדבר על תרחיש קלאסי לאיש IT: ה-MDM הארגוני לא מצליח לדחוף אפליקציות או פרופילים למק. משתמשים מתלוננים, ואיש הרשתות בארגון נשבע ש'אצלו הכל פתוח ב-Firewall'. איך נוכיח לו שהבעיה ברשת ולא במק? ניכנס לאפליקציית Console ונסנן פעילויות שקשורות לסוכן ה-MDM במק (ה-mdmclient). אנחנו נחפש במיוחד שגיאות של 'Network Connection Lost' או 'Timeout' בזמן שהמק מנסה לפנות לשרתי אפל (APNs) או לשרת ה-MDM. ברגע שנמצא את שורת הלוג הרלוונטית שמעידה על חסימה, יש לנו 'אקדח מעשן' – הוכחה ניצחת מתוך ה-OS. החיפוש הזה ב-Console הוא 'חדר הבריחה' שלנו; מציאת הרמז שמוביל לסגירת הטיקט."

Demonstration

  1. פתחו שוב את אפליקציית Console.
  2. ודאו שהניטור פועל (Start).
  3. בשורת החיפוש העליונה, הקלידו mdmclient.
  4. לחצו על Enter, ובסרגל החיפוש האפור שמופיע, שנו את סוג המסנן מ-Any ל-Process. זה יבודד את כל הלוגים שיוצרו על ידי תהליך ה-MDM בלבד.
  5. כעת, הקלידו מילת מפתח נוספת, כמו timeout או error, והשאירו את זה על "Any".
  6. בחרו באחת השורות שהתקבלו ברשימה, והציגו את התוכן המלא של הודעת הלוג בחלונית התחתונה. הסבירו שזה המקום לאתר קודי שגיאה של רשת, בעיות SSL או חסימות.

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה) * תהליך ה-`mdmclient` הוא ה-Daemon שאחראי על התקשורת מול שרת ה-MDM הארגוני ומול שרתי ה-APNs (Apple Push Notification Service) של אפל. * אם יש בעיית חיבור ל-APNs (למשל, פורט 5223 או 443 חסומים על ידי ה-Firewall הארגוני), פקודות הפצה והטמעה לא יגיעו למק. * חיפוש כפול (Multiple Filters) ב-Console הוא כלי חזק: אנחנו חותכים את המידע גם לפי התהליך (mdmclient) וגם לפי מילות מפתח בטקסט החופשי של ההודעה. * במידה ומעוניינים לחפש את אותה הוכחה לאחור בטרמינל (אולי לוג ישן שנשמר בזיכרון הדיסק), משתמשים בפקודה: `log show --predicate 'process == "mdmclient"' --info`.