תכנון יומן עונה על שלוש שאלות: איזה תהליך יצר רשומה, היכן הרשומה נוחתת וכמה זמן היא שורדת. OpenVPN יכול לכתוב לקובץ, למסור הודעות לרושם המערכת או להשאיר אותן למה שמנהל השירות לוכד, ואלה אינם שלושה עותקים של זרם אחד. כל בחירה משנה מי הבעלים של הסבב, איזה משתמש יכול לקרוא את התוצאה ומה קורה בזמן האתחול. הכריעו בשאלות לפני תקרית, כי אחריה אתם יורשים את מה שהוגדר.

מה הדמון באמת עושה עם ההוראה

ההוראות אינן הפשטות; כל אחת מחליטה היכן התהליך כותב את הודעותיו. log /path פותח את הקובץ, log-append /path פותח אותו להוספה, ו-syslog מוסר הודעות לרושם המערכת המקומי דרך הסוקט שלו. בלי אף אחת מהן הפלט הולך לפלט התקני, ומנהל השירות מחליט מה יקרה אחר כך. קראו את היחידה האפקטיבית ואת הפרופיל יחד לפני שאתם מסיקים שהדמון מתעלם מהתצורה שלכם.

המקרה האחרון נפוץ בהתקנה מחבילה, והוא מסביר מדוע שני מנהלים חלוקים על מקום היומן. האחד קורא את היומן של היחידה, האחר קובץ שהדמון מעולם לא כתב.

בדקו את התצורה הפעילה ולא את הקובץ בדיסק. דריסת יחידה מסוג drop-in או קובץ סביבה יכולים לשנות את ההוראה האפקטיבית בלי לגעת בפרופיל שאתם קוראים.

log חותך, log-append לא

log חותך קובץ קיים כשההוראה נכנסת לתוקף, כך שהפעלה מחדש מוחקת את הראיות שלפניה. log-append שומר על מה שיש ומוסיף. אף אחת מהאפשרויות לא מסובבת דבר, ואף אחת לא פותחת את הקובץ מחדש בעצמה, ולכן הסבב צריך שיתוף פעולה.

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

הספרייה, הבעלות וההרשאות הן חלק מהתכנון. הדמון עשוי לרוץ כמשתמש לא מיוחס לאחר האתחול, וספרייה שנוצרה על ידי root בזמן ההתקנה עשויה אז לא להיות ניתנת לכתיבה. הכן אותה דרך האריזה או תהליך הפריסה במקום לתקן הרשאות בזמן תקרית.

מנהל השירות שומר עותק שני

systemd לוכד את הפלט התקני ואת פלט השגיאה כברירת מחדל, כך שליחידה בלי הפניה מפורשת כבר יש יומן. הוספת הוראת קובץ נותנת שני זרמים עם שמירה, קוראים וחתימות זמן שונים.

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

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

פירוט אינו אותו דבר כמו פרט שמיש

רמת verb גבוהה יותר מוסיפה שורות, ומעבר לנקודה מסוימת שורות שאיש אינו קורא. רמה 3 היא מצב יציב סביר לרוב הפריסות, בעוד רמה 4 ומעלה מתאימה לחקירה מוגבלת עם שאלה ידועה. דיכוי חזרות מפחית רעש, אך אסור שיסתיר באיזו תדירות אירוע חוזר. קבעו את הרמה שאתם יכולים להחזיק, והעלו אותה רק לחקירה בשם שיש לה סוף.

שמרו את זהות המופע ואת חתימות הזמן ברשומה. התחברות מחדש נראית בדיוק כמו התחברות ראשונה כשהקובץ מתווסף חודשים ושם המופע חסר.

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

סבב, שמירה והאותות שמרעננים

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

התוצאה צריכה להיות שירות שמפעיל יכול לתאר: זרם סמכותי אחד, כל אירוע ממוקם במחזור החיים, ורשומה שאפשר להשיג בלי לאסוף כל קובץ נושא סודות במארח. התיאור הזה הוא מבחן הקבלה של התכנון, וזול לבדוק אותו לפני התקרית הבאה.

מאמרים קשורים