לדלג לתוכן

שיעור 16: ניתוח לוגים

חלק ב': מדריך העברה למרצה

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


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

מטרת השיעור (Objective)

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

Discussion (Script)

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

הדגמה מעשית (Demonstration)

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

Instructor Deep-Dive

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

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

מטרת השיעור (Objective)

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

Discussion (Script)

  • הבנו שאי אפשר פשוט לפתוח קובץ טקסט.
  • אז איך קוראים את ה-Unified Logging?
  • בדיוק בשביל זה יש לנו את אפליקציית ה-Console.
  • איך זה נראה בפנים?
  • כשתפתחו אותה, תראו "מפל" של נתונים.
  • אלפי שורות רצות בכל שנייה.
  • אי אפשר לקרוא את זה ככה - זה כמו לחפש מחט בערמת שחת.
  • החוכמה היא לסנן ולהשקיט את הרעש:
  • אפשר לעצור את הזרימה.
  • אפשר לחפש לפי תת-מערכת (Subsystem).
  • אפשר לסנן לפי תהליך (Process) מסוים.
  • ב-macOS Tahoe 26, ניתן גם לקבץ לפי פעילויות (Activities).
  • כך נמצא בדיוק את מה שאנחנו מחפשים.
  • מה לגבי קריסות?
  • אם תוכנה ארגונית קרסה, לא נחפש במפל.
  • נמצא את דוח הקריסה (Crash Report) המסודר (סיומת .ips).
  • הוא ממתין לנו תחת הקטגוריה Crash Reports או Diagnostic Reports באותה אפליקציה.

הדגמה מעשית (Demonstration)

  1. פתחו את אפליקציית Console:
  2. נמצאת בתיקיית /Applications/Utilities.
  3. הדגימו את השטף:
  4. לחצו על כפתור Start בסרגל העליון.
  5. הראו את "מפל" הנתונים המהיר.
  6. השתלטו על המידע:
  7. לחצו על כפתור Pause כדי לעצור את השטף.
  8. בצעו סינון ממוקד:
  9. בסרגל החיפוש, הקלידו מונח כמו mdmclient.
  10. שנו את הפילטר שנוצר מ-Any ל-Process.
  11. הראו כיצד זה מסנן תהליכים בלבד.
  12. הציגו דוחות קריסה:
  13. בחלונית הצדדית (Sidebar), נווטו אל Crash Reports (או Diagnostic Reports).
  14. הראו דוח קריסה של תוכנה (קובץ .ips).
  15. לחצו לחיצה כפולה לפתיחת הדו"ח לתצוגה מעמיקה.

Instructor Deep-Dive

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

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

מטרת השיעור (Objective)

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

Discussion (Script)

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

הדגמה מעשית (Demonstration)

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

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה)
  • מה מכיל ארכיון ה-Sysdiagnose?
  • מופק כקובץ .tar.gz.
  • כולל העתק של מערכת הלוגים המלאה באמצעות log collect.
  • דוחות זיכרון ותרדי ריצה חיים דרך spindump ו-tailspin.
  • פלטים מפקודות דיאגנוסטיקה חומרתית כמו system_profiler.
  • מצב תצורות רשת.
  • קיצור מקלדת סודי (גלובלי):
  • ניתן לייצר Sysdiagnose ברקע מכל מקום: Cmd + Option + Ctrl + Shift + Period (.)
  • מסך המחשב עשוי להבהב לשנייה כאינדיקציה לתחילת האיסוף.
  • הפקה מרחוק:
  • מנהלי מערכת שעובדים מרחוק (SSH) יכולים להשתמש בטרמינל.
  • הפקודה: sudo sysdiagnose.

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

מטרת השיעור (Objective)

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

Discussion (Script)

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

הדגמה מעשית (Demonstration)

  1. פתחו שוב את אפליקציית Console.
  2. ודאו שהניטור פעיל:
  3. לחצו על Start במידת הצורך.
  4. בצעו חיפוש ראשוני:
  5. בשורת החיפוש העליונה, הקלידו apsd (Apple Push Service Daemon) או mdmclient ולחצו על Enter.
  6. שנו את סוג המסנן:
  7. בסרגל החיפוש האפור שמופיע, שנו את סוג המסנן מ-Any ל-Process.
  8. הראו שזה מבודד רק את הלוגים הרלוונטיים לתקשורת ה-MDM.
  9. הוסיפו מילת מפתח משנית:
  10. הקלידו מונח כמו timeout, trust או error.
  11. השאירו את הסינון שלו על "Any".
  12. נתחו את התוצאות:
  13. בחרו באחת השורות שהתקבלו.
  14. הציגו את התוכן המלא של הודעת הלוג בחלונית התחתונה.
  15. הסבירו שכאן מאתרים קודי שגיאה של רשת, בעיות SSL MitM או חסימות.

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה)
  • ארכיטקטורת התקשורת מול ה-MDM:
  • שרת ה-MDM שולח התראת "דחיפה" לשרתי ה-APNs של אפל.
  • המק מתחזק חיבור קבוע מול אפל (17.0.0.0/8) בפורט 5223 דרך apsd.
  • אם apsd חסום, המק לעולם לא יידע שעליו לבדוק את ה-MDM בפורט 443.
  • חסימות רשת (APNs):
  • אם פורט 5223 חסום ב-Firewall, או שיש עליו הצפנת SSL Inspection, החיבור יידחה מיידית עקב Certificate Pinning.
  • עוצמת הסינון ב-Console:
  • שימוש בחיפוש כפול (Multiple Filters) הוא כלי חזק במיוחד.
  • חותכים את המידע גם לפי התהליך (apsd או mdmclient) וגם לפי טקסט חופשי.
  • חיפוש לאחור בטרמינל:
  • לאיתור לוג ישן שנשמר בזיכרון הדיסק, השתמשו בפקודה: log show --predicate 'subsystem == "com.apple.apsd" or subsystem == "com.apple.mdm"' --last 2h