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

Monitoring: הלא-נודע הידוע

מוניטור הוא שאלה שכתבתם מראש. “האם ה-CPU מעל 80%?” “האם שיעור השגיאות מעל 1%?” “האם הדיסק מתמלא?” אלה חיוניים, וכל מערכת צריכה אותם. דשבורדים והתראות חיים כאן.

המגבלה מובנית: מוניטור יכול להזהיר אתכם רק מכשל שכבר דמיינתם. התקלות שכואבות הן אלה שאף אחד לא חשב לשרטט.

Observability: הלא-נודע הלא-ידוע

Observability זה להחזיק מספיק סיגנל - לוגים מובנים, traces ומטריקות בעלות cardinality גבוה - כדי לענות על שאלה שלא הכנתם. לא “האם שיעור השגיאות גבוה?” אלא “למה רק משתמשים מחוברים באזור אחד רואים checkout איטי מאז הדיפלוי האחרון?”

אי אפשר לבנות דשבורד מראש לזה. צריך לחתוך את הדאטה בזמן אמת, לאורך מימדים שלא ניבאתם.

שלושת הסיגנלים, בקצרה

  • לוגים: מה קרה, בפירוט. תעשו אותם מובנים (JSON), לא פרוזה.
  • מטריקות: כמה ובאיזו תדירות, בזול, לאורך זמן.
  • Traces: איך בקשה אחת נעה בין השירותים - לאן הזמן באמת הלך.

Traces הם החלק שרוב הצוותים מדלגים עליו, ורוב מתחרטים ברגע שהם סוף סוף מוסיפים אותו.

מאיפה להתחיל

אל תקנו פלטפורמה קודם. תתחילו מלהפוך את הלוגים למובנים ולהוסיף request ID שעוקב אחרי קריאה בין שירותים. השינוי האחד הזה הופך “grep ותתפלל” ל”עקוב אחרי החוט”. אחר כך תוסיפו tracing היכן שבקשות חוצות גבולות של שירותים.

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