שיעור 16: ניתוח לוגים ו-Console¶
חלק ב': מדריך העברה למרצה
הערה למדריך: מסמך זה משמש כמערך השיעור (Lesson Plan) וכולל את התסריט להעברת החומר מול הכיתה, תרחישי הדגמה, ומידע טכני מורחב שיעזור לך להתמודד עם שאלות קשות. שמור על טון שיחתי (Conversational), נגיש ומעשי, כפי שהוגדר בפרוטוקול הקורס. ההדגמות מבוססות על ממשק המשתמש הגרפי (GUI) במחשב עצמאי (Standalone), בעוד תרשימי ה-MDM וחסימות APNs מתוך המצגת משמשים להעמקה מאחורי הקלעים.
1. ה-Unified Logging System: הבנת הגישה המודרנית של אפל ללוגים (tracev3 ב-RAM)¶
🎯 מטרת החלק: להבין מדוע macOS זנחה את קובצי הטקסט הפשוטים (/var/log) לטובת מאגר לוגים אחוד ובינארי (Unified Logging System), וכיצד שמירת הלוגים ב-RAM מונעת שחיקת SSD ומשפרת ביצועים.
רוב אנשי ה-IT שמגיעים מלינוקס או מ-macOS ישנה רגילים לפתוח טרמינל ולהריץ tail -f /var/log/system.log. הסבירו לכיתה מדוע אפל שינתה את המוסכמה הזו לחלוטין: מק מודרני מייצר מיליוני שורות לוג בשנייה, וכתיבת טקסט רציפה הייתה שוחקת את שבבי ה-SSD ומאיטה את המחשב.
← בשיעור 08 השתמשנו ב-
log streamכדי לעקוב אחר תהליכי רקע — כאן נבין את הארכיטקטורה המלאה של מאגר ה-Unified Logging.
🎤 הרצאה¶
- שאלת פתיחה והשוואה היסטורית:
- "מי מכם זוכר את הימים שהיינו פותחים את
system.logכקובץ טקסט ב-TextEdit כדי להבין למה אפליקציה קרסה?" - "ב-macOS מודרנית, הקובץ הזה כמעט ריק לחלוטין ומוגדר כ-Deprecated. אפל עברה ל-Unified Logging System (ULS)".
- "מי מכם זוכר את הימים שהיינו פותחים את
- למה אפל שינתה את ארכיטקטורת הלוגים?
- 1. עומס I/O מטורף: מערכת הפעלה מודרנית מייצרת מיליוני אירועים בשנייה (Bluetooth, Wi-Fi, TCC, Push Notifications).
- 2. שחיקת כונני Flash: כתיבת מיליוני שורות טקסט ל-SSD שוחקת את התאים במהירות ומבזבזת חיי סוללה.
- 3. מניעת Observer Effect: מצב שבו עצם כתיבת הלוג לדיסק תוקעת את המחשב ומסווה את התקלה האמיתית.
- איך עובדת ה-Unified Logging System?
- שמירה ב-RAM: רוב הלוגים מנוהלים בחוצץ טבעתי (Ring Buffer) בתוך הזיכרון האחוד (RAM) ונמחקים מעצמם.
- פורמט בינארי דחוס (
tracev3): רק לוגים קריטיים (Errors / Faults) נדחסים ונכתבים לדיסק בתיקיית/var/db/diagnostics/.
- 5 רמות הלוג במערכת (Log Levels):
- Default: הודעות מערכת בסיסיות (נשמרות בדיסק).
- Info & Debug: הודעות תחקור מפורטות (נשמרות זמנית ב-RAM בלבד אלא אם מופעל איסוף).
- Error: שגיאות תהליך מקומיות (נשמרות בדיסק).
- Fault: כשל מערכתי חמור (נשמר בדיסק ומייצר דוח דיאגנוסטי).
🔗 עזרים ויזואליים¶
| עזר | מה מראה |
|---|---|
📸 L16_LegacySlide_Slide69_image82.png |
מבנה מערכת הלוגים האחודה וזרימת הנתונים ב-RAM |
🖥️ הדגמה¶
- שלב 1: פתחו חלון Finder והקישו
Cmd+Shift+G. - שלב 2: נווטו אל
/var/logופתחו את הקובץsystem.log:- הראו לכיתה שיש בו שורות בודדות בלבד, והסבירו שהוא קיים רק לצורך תאימות לאחור לתוכנות ישנות.
- שלב 3: נווטו אל
/var/db/diagnostics:- הראו את קובצי ה-
tracev3הבינאריים והסבירו: "קבצים אלו אינם ניתנים לקריאה כטקסט פשוט — לשם כך אפל בנתה את אפליקציית Console ואת פקודתlogבטרמינל".
- הראו את קובצי ה-
Instructor Deep-Dive: ארכיטקטורת ULS וקריסות Kernel Panics
- מבנה
tracev3: קבצי הלוג הבינאריים מאחסנים מחרוזות כמזהים (String IDs) וממזגים אותם עם הטקסט רק בעת תצוגה, מה שמקטין את גודל הלוג ב-90%. - לוגים בקריסת Kernel Panic: מכיוון שחוצץ ה-RAM מושמד בעת קריסת חומרה, הקרנל כותב דוח פאניקה נפרד (קובץ
.panic) ישירות למחיצת ה-NVRAM/Preboot בעת האתחול הבא.
2. שליטה באפליקציית Console: סינון רעשים, שאילתות מתקדמות ודוחות קריסה (.ips)¶
🎯 מטרת החלק: ללמוד לשלוט בכלי ה-Console המובנה (GUI) כדי להשקיט את "מפל" המידע, לבנות שאילתות סינון מתקדמות (Filters & Saved Searches), ולנתח דוחות קריסה (Crash Reports).
אפליקציית Console נראית מאיימת ומפחידה במבט ראשון בגלל אלפי השורות שטסות בשנייה. תפקידכם הוא להרגיע את התלמידים ולהראות שבעזרת 2 קליקים של הוספת מסננים (Process / Subsystem) הופכים את הנהר הגועש למידע קריא ומדויק.
← בשיעור 15 (דיאגנוסטיקה) למדנו לבודד בעיות ברמת המשתמש — כאן רואים את שורת השגיאה המדויקת שגרמה לקריסה.
🎤 הרצאה¶
- ההתמודדות עם "מפל הנתונים" ב-Console:
- כשפותחים את Console ולוחצים על Start, אלפי שורות נעות במהירות בלתי ניתנת לקריאה.
- הכלל הראשון בתחקור לוגים: לוחצים על Pause או שמגדירים מיד מסנן (Filter)!
- שליטה במסננים (Filtering & Subsystems):
- Process (תהליך): סינון לפי שם התהליך (למשל
bluetoothd,tccd,Finder). - Subsystem (תת-מערכת): חיתוך לפי מזהה השירות של אפל (למשל
com.apple.TCCאוcom.apple.Bluetooth). - Message Type: הצגת שגיאות בלבד ע"י סינון לפי
ErrorאוFault. - Saved Searches: שמירת תבנית חיפוש בסרגל העליון לשימוש יומיומי בלחיצת כפתור אחת.
- Process (תהליך): סינון לפי שם התהליך (למשל
- דוחות קריסה (Crash Reports - קובצי
.ips):- כאשר אפליקציה קורסת בפתאומיות, לא מחפשים במפל הלוגים!
- עוברים בסרגל הצד של Console ל-Crash Reports (או Diagnostic Reports).
- פותחים את קובץ ה-
.ipsומזהים את סוג הקריסה:EXC_BAD_ACCESS: ניסיון גישה לכתובת זיכרון לא חוקית (באג תוכנה).SIGKILL / CODESIGNING: מערכת ההפעלה חיסלה את התהליך עקב חתימה דיגיטלית פגומה או חסימת Gatekeeper.
🔗 עזרים ויזואליים¶
| עזר | מה מראה |
|---|---|
📸 L16_LegacySlide_Slide69_image83.png |
ממשק אפליקציית Console, סרגלי הסינון וקטגוריות ה-Sidebar |
📸 L16_DeepDive_Save_and_read_the_panic_log_p1_41.png |
מבנה דוח קריסה (.ips) וניתוח Stack Trace |
🖥️ הדגמה¶
- שלב 1: פתחו את אפליקציית Console מתוך תיקיית
/Applications/Utilities. - שלב 2: לחצו על Start והראו את זרם הלוגים המהיר. לחצו מיד על Pause.
- שלב 3 (הדגמת סינון חי ומרהיב):
- בשורת החיפוש העליונה, הקלידו
bluetoothdושנו את התגית מ-Any ל-Process. - לחצו שוב על Start.
- פתחו את ה-Control Center וכבו והדליקו את מתג ה-Bluetooth.
- הראו לכיתה: הזרם מציג אך ורק את פעולות ה-Bluetooth בזמן אמת ללא שום רעש רקע!
- בשורת החיפוש העליונה, הקלידו
- שלב 4 (דוחות קריסה):
- בסרגל הצד, עברו ל-Crash Reports.
- הציגו קובץ
.ipsקיים, לחצו עליו לחיצה כפולה והראו את ה-Exception Code ואת ה-Thread שקרס.
Instructor Deep-Dive: מבנה דוח קריסה (.ips) וחסימות TCC
- Stack Trace: מציג את שרשרת הקריאות לפונקציות שהובילו לקריסה (מלמטה למעלה).
- מקרה קצה בחסימת TCC: אם אפליקציה נסגרת ללא יצירת קובץ
.ips, ייתכן שמסד הנתונים של ה-TCC פגום, מה שמונע מהאפליקציה הרשאת Sandbox לכתוב לתיקיית הדוחות.
3. הפקת וניתוח Sysdiagnose מתוך הממשק הגרפי (Activity Monitor)¶
🎯 מטרת החלק: להכיר את מנגנון ה-Sysdiagnose ככלי האבחון המקיף ביותר של אפל לאיסוף מצב המערכת, ולהבין כיצד להפיק אותו מתוך ה-GUI ללא צורך בטרמינל.
Sysdiagnose הוא ה"קופסה השחורה" של המק. כאשר תמיכת Tier 1 או Tier 2 אינה מצליחה לפענח תקלה מקומית מורכבת, הפקת Sysdiagnose מספקת תמונת מצב קפואה של כלל משאבי המערכת, הרשת והזיכרון.
← בשיעור 15 השתמשנו ב-System Information לדוחות חומרה — ה-Sysdiagnose כולל את נתוני החומרה יחד עם ארכיון לוגים ודוחות Spindump מלאים.
🎤 הרצאה¶
- מהו ארכיון ה-Sysdiagnose?
- ארכיון דחוס ענק (בנפח של כ-300MB–500MB) האוסף תמונת מצב טוטאלית של ה-Mac ברגע נתון.
- מה מכיל הארכיון?
- עותק מלא של מאגר הלוגים האחוד (
log collect). - דוחות Spindump ו-Tailspin של כל ה-Threads הפעילים במעבד.
- טבלאות ניתוב רשת, מצב ה-Wi-Fi וה-Bluetooth.
- תמונת מצב של צריכת הזיכרון וה-Memory Pressure.
- עותק מלא של מאגר הלוגים האחוד (
- איך מפיקים Sysdiagnose ב-GUI (ללא טרמינל)?
- פותחים את Activity Monitor.
- בתפריט העליון לוחצים על סמל גלגל השיניים (או עיגול עם 3 נקודות).
- בוחרים ב-Run System Diagnostics....
- מאשרים וממתינים 2–3 דקות ברקע.
- קיצור המקלדת הסודי של אפל:
- ניתן להפיק Sysdiagnose מכל מסך ומכל חלון ע"י לחיצה בו-זמנית על:
Cmd + Option + Ctrl + Shift + Period (.) - המסך מהבהב לרגע כאינדיקציה לתחילת האיסוף ברקע.
- ניתן להפיק Sysdiagnose מכל מסך ומכל חלון ע"י לחיצה בו-זמנית על:
- התוצאה:
- בסיום, נפתח אוטומטית חלון Finder החושף את קובץ ה-
.tar.gzבתיקיית/var/tmp/.
- בסיום, נפתח אוטומטית חלון Finder החושף את קובץ ה-
🔗 עזרים ויזואליים¶
| עזר | מה מראה |
|---|---|
📸 L16_LegacySlide_Slide69_image82.png |
ארכיטקטורת איסוף דיאגנוסטיקה ב-macOS |
🖥️ הדגמה¶
- שלב 1: פתחו את Activity Monitor מתוך תיקיית Utilities.
- שלב 2: הראו את סמל גלגל השיניים / 3 הנקודות בסרגל הכלים העליון.
- שלב 3: הראו את האפשרות Run System Diagnostics....
- אזהרה למרצה: אל תאשרו את תחילת ההרצה בפועל במהלך השיעור כדי לא להאט את המק למספר דקות.
- שלב 4: הסבירו כיצד הארכיון המופק מועבר לצוות ההסלמה (Escalation) או נפתח לצורך ניתוח מעמיק.
Instructor Deep-Dive: פקודת sysdiagnose ב-CLI ומידע רגיש (PII)
- פקודת ה-CLI: מנהל מערכת המחובר ב-SSH יכול להריץ:
sudo sysdiagnose -f ~/Desktop/. - פרטיות ו-PII: דוח ה-Sysdiagnose מכיל מידע אישי מזהה (שמות קבצים, כתובות IP, רשתות Wi-Fi). יש להעבירו אך ורק בערוצים מאובטחים ותחת הסכמי סודיות.
4. תיבול ארגוני: איתור "האקדח המעשן" ב-Console בתקלות תקשורת ורשת מול שרתי Apple¶
🎯 מטרת החלק: שימוש באפליקציית Console לחקירת תקלות תקשורת בסביבה מנוהלת, ואיתור שורת הלוג המדויקת המוכיחה כי פקודות MDM או שירותי דחיפה נחסמים ע"י פיירוול ארגוני.
זהו שיא השיעור. אנו מדמים סיטואציה שכל איש IT מכיר: מנהל המק טוען שהמחשב לא מקבל פקודות מה-MDM, ואילו צוות ה-Network נשבע ש"אצלם הכל פתוח ב-Firewall". בעזרת חיפוש הלוג המדויק, הסטודנטים לומדים לספק הוכחה חותכת (The Smoking Gun) ישירות מתוך המערכת.
← בשיעור 09 (רשתות) ובשיעור 12 (עדכונים) למדנו על תלות המק בשרתי ה-Push של אפל — כאן רואים כיצד מאתרים חסימות ב-Console.
🎤 הרצאה¶
- התרחיש הארגוני הקלאסי:
- שרת ה-MDM מנסה לדחוף אפליקציה או פרופיל אבטחה, אך המק אינו מגיב.
- צוות הרשת טוען: "אין שום חסימה בפיירוול הארגוני".
- ארכיטקטורת ה-Apple Push Notification service (APNs):
- כדי שמק יקבל פקודה משרת ה-MDM, הוא חייב להחזיק חיבור קבוע מול שרתי אפל בפורט 5223 דרך ה-Daemon המקומי
apsd. - אם פורט 5223 חסום ב-Firewall, או שמתבצעת עליו סריקת SSL Inspection — ה-
apsdייכשל והמק לא יידע שעליו לפנות ל-MDM!
- כדי שמק יקבל פקודה משרת ה-MDM, הוא חייב להחזיק חיבור קבוע מול שרתי אפל בפורט 5223 דרך ה-Daemon המקומי
- איתור "האקדח המעשן" ב-Console:
- פותחים את Console, מסננים לפי תהליך
apsd(Apple Push Service Daemon הקיים בכל מק). - מוסיפים מסנן טקסט:
timeout,trustאוfailed. - מוצאים את שורת השגיאה המדויקת (למשל
Connection refused to courier.push.apple.com:5223). - התוצאה: צילום מסך של הלוג מספק לצוות ה-Network הוכחה חד-משמעית לסגירת הטיקט!
- פותחים את Console, מסננים לפי תהליך
🔗 עזרים ויזואליים¶
| עזר | מה מראה |
|---|---|
📸 L16_LegacySlide_Slide69_image83.png |
סינון תהליכי תקשורת ו-APNs באפליקציית Console |
🖥️ הדגמה¶
- שלב 1: פתחו את אפליקציית Console ולחצו על Start.
- שלב 2: בשורת החיפוש, הקלידו
apsdושנו את התגית ל-Process. - שלב 3: הוסיפו מילת מפתח משנית כגון
connectionאוstate. - שלב 4 — המלצה פדגוגית למרצה (עזרים ויזואליים):
- מאחר ומחשב ההדרכה אינו מנוהל ב-MDM, הקרינו מתוך העזרים הוויזואליים של השיעור את צילום המסך של שגיאת תקשורת MDM אמיתית (חסימת פורט 5223 או שגיאת SSL MitM) לצורך המחשת התרחיש הארגוני.
Instructor Deep-Dive: שאילתת log show בטרמינל לאיתור תקלות APNs
- חיפוש היסטורי בטרמינל: לאיתור שגיאות APNs ו-MDM שקרו בשעתיים האחרונות:
log show --predicate 'subsystem == "com.apple.apsd" and messageType == error' --last 2h - Certificate Pinning: אפל אוכפת Certificate Pinning קשיח על שרתי ה-APNs (
17.0.0.0/8). כל ניסיון של Proxy ארגוני לבצע הדמיית SSL Inspection יגרום לניתוק מיידי של כל המקים בארגון!
עזרים ויזואליים¶
המחשה ויזואלית (עזר לתלמיד)
תמונות אלו ממחישות את הממשק או המנגנון הרלוונטי לנושא השיעור.
