שרת קטן שמריץ כמה בוטים ואתרים לא צריך מערכת ניטור יקרה. הוא צריך לענות על שלוש שאלות: האם הכל רץ, האם משהו עומד להיגמר, והאם מישהו ישמע על זה כשזה נופל. הנה איך עונים עליהן בכלים שכבר יש לכם.
1. שירותים: לתת ל-systemd לעבוד
- הפעלה מחדש אוטומטית: שורה אחת בהגדרת השירות,
Restart=on-failure, הופכת קריסה לשיהוק של שלוש שניות. - תקרת זיכרון לכל שירות:
MemoryMaxמונע מתהליך אחד שהשתולל להפיל את כל השרת. עדיף ששירות אחד ייפול מאשר הכל. - מי נופל ראשון:
OOMScoreAdjustקובע את הסדר כשהזיכרון נגמר — שהאתר יישאר, ושהעיבוד ברקע יוותר.
2. משימות מתוזמנות: לבדוק שהן באמת רצו
קובץ הלוג של משימה לא מוכיח שהיא רצה — סקריפט שלא הדפיס כלום לא ישנה את הקובץ. המקור האמין הוא יומן המערכת, שבו cron רושם כל הפעלה. משווים את ההפעלה האחרונה לתדירות המתוכננת, ומסמנים באדום משימה שלא רצה פעמיים ברצף.
3. דף סטטוס אחד
סקריפט קטן שרץ כל דקה ואוסף הכל לקובץ אחד: שירותים, זיכרון, דיסק ומשימות. דף פשוט מציג אותו עם נקודות ירוקות ואדומות. זה כל מה שצריך כדי לראות במבט אחד אם משהו לא בסדר.
4. התראות רק על שינוי
התראה על כל בדיקה שנכשלה היא רעש, ואחרי שבוע מפסיקים לקרוא. שולחים הודעה רק כשמשהו משנה מצב — נפל, או חזר לעבוד — ורק אחרי שתי בדיקות רצופות, כדי לסנן תקלות רגעיות.
5. שומר מבחוץ
שרת שנפל לגמרי לא יכול להתריע על עצמו. בדיקה חיצונית פשוטה — אפילו סקריפט חינמי ב-Google Apps Script שפונה לאתרים כל חמש דקות — סוגרת את הפינה הזאת.
לסיכום
חמשת הצעדים האלה לוקחים יום עבודה, לא עולים כלום, ומחליפים את הטלפון המבהיל של "האתר לא עובד" בהודעה מסודרת — עוד לפני שמישהו שם לב.