כשמפעילים שרת, בשלב מסויים תמיד עולים כל מני צרכים. הכלים הבאים זמינים בשרתי לינוקס ויכולים לעזור בניהול וניתור שרתים.
Monit :
מונית, קיצור של Monitor It היא אפליקציה מסוג Watchdog שמסוגלת לנתר את השרת שלכם ולזהות בעיות, להתריע או אפילו לתקן אותן אוטומטית.
למשל, מונית יכולה
- לוודא שהמקום הפנוי בהרדיסק לא יורד מתחת לרמה מסויימת
- לוודא ששרת הApache לא תופס יותר מדי משאבים,ולהפעיל אותו מחדש אם הוא כן
- לוודא שמכונה מסויימת עונה לפינגים, לחיבורי TCP או לחיבורי HTTP
- לוודא שתהליך מסויים רץ, ולהפעיל אותו אם הוא לא (תחשבו על שרת SSH שקרס)
ועוד.
מונית גמישה מאוד, וקובץ ההגדרות מגיע עם סט דוגמאות שקל להשמיש לשרת שלכם.
מונית מגיעה עם שרת HTTP מובנה שמאפשר עיון במצב המערכת (צריך להפעיל אותו בקובץ ההגדרות), אבל הוא לא ממש נחוץ כי אפשר לקבל אימיילים על כל שינוי במצב המערכת.
Munin:
"הוגין ומונין הם העורבים של אודין האל הנורדי, הם עפו בשבילו במידגארד, רואים וזוכרים – ואז סיפרו לו מה הם ראו".
מונין זה זכרון.
מונין אוסף מידע על המערכת שלכם, ויוצר גראפים רבים ומשונים:
- עומס על הCPU
- צריכת זכרון
- שגיאות בממשק הרשת
- תעבורת רשת
- אימיילים שתקועים בתור היוצא בשרת הדואר
ועוד ועוד.
מה שנחמד במונין זה שהוא מבוסס פלאגינים, והפלאגינים עולים אוטומטית לפי השרותים שהמערכת מריצה, אז אם יש לכם כמה מכונות שבאחד יש שרת NFS, בשני שרת MySQL ובשלישי שרת Apache, מונין על כל אחת מהמכונות יאסוף את הנתונים המתאימים אוטומטית.
מונין מבוסס שרת לקוח, יש שרת אחד שאוסף מידע מתחנות קצה. ההגדרה די קלה. צריך להגדיר את תחנות הקצה להסכים לחיבור מהשרת, ולספר לשרת מי תחנות הקצה שלו. כמובן שהשרת יכול להריץ תחנת קצה בעצמו (ואפשר לשער שברוב ההתקנות הוא יאסוף מידע רק מעצמו).
מונין מעדכן את הגראפים כל חמש דקות (ברירת המחדל) והגראפים זמינים דרך Apache.
אפשר לראות את מונין בפעולה כאן.
Puppet
Puppet, להלן פאפט, הוא כלי לניהול מרכזי של כמה שרתים.
פאפט מאפשר להגדיר את השרתים ממקום אחד, ולדאוג שהם ישארו מעודכנים, יתקינו חבילות מסויימות, יעתיקו קבצים מסויימים, ובעצם כמעט כל דבר שתרצו.
השימוש בפאפט הוא יחסית מורכב, והוא הופך למשתלם אם יש לכם כמה שרתים עם תצורה זהה או דומה, שמשתנים בצורה די תכופה (כאשר התצורה שלהם צריכה להשאר מסונכרנת).
עקומת הלמידה של פאפט די תלולה, ולא קל להתחיל להשתמש בו, אבל מצד שני – יש לפאפט ערוץ IRC מאוד מועיל בfreenode.
כמו רוב הכלים שהזכרתי, פאפט מבוסס גם הוא על מתודולגית שרת-לקוח. השרת – puppetmaster אחראי על העברת הגדרות התצורה ללקוחות. על כל מחשב רץ לקוח שאחראי לישם את ההגדרות שמגיעות מהשרת.
כאמור, פאפט מאוד גמיש. ההגדרות שלו נקבעות בקבצים בשפה הצהרתית מיוחדת. ככה נראה קובץ פאפט שכתבתי שמפעיל פיירוואל מבוסס iPKungFu (תסריט להגדרה נוחה של iptables) על מכונה מסויימת:
[code lang="bash"]
class firewalled {
package{["ipkungfu","ulogd"] : ensure => latest}
set_file{[
"/etc/default/ipkungfu",
"/etc/ipkungfu/ipkungfu.conf",
"/etc/ipkungfu/services.conf",
"/etc/ipkungfu/accept_hosts.conf",
"/etc/ipkungfu/log.conf"
]:
require => Package[ipkungfu]
}
exec { "/etc/init.d/ipkungfu restart":
subscribe => [File["/etc/ipkungfu/ipkungfu.conf"],
File["/etc/ipkungfu/accept_hosts.conf"],
File["/etc/ipkungfu/log.conf"]
],
refreshonly => true,
require => [Package[ipkungfu],Set_file["/etc/default/ipkungfu"]]
}
}
[/code]
הפקודה set_file היא פקודת מקרו שכתבתי שמעתיקה קובץ מהמאגר של פאפט אל המכונה. אפשר להעתיק בשימוש בפקודת פאפט רגילה – אבל המקרו שלי קצת יותר קצר לשימוש.
במקרה הזה, set_files מעתיקה קבצי קונפיגורציה שהגדרתי מבעוד מועד ושמתי על הpuppet-master.
הקובץ גם מוודא שיהיו הגרסאות האחרונות של pkungfu ו ulogd.
פאפט תומך בכל מני מערכות, ובכל מערכת הוא ישתמש במנהל החבילות הנכון.
פקודת הexec מפעילה מחדש את ipkungfu ברגע שאחד מהקבצים בקטע הsubscribe משתנה.
היופי הוא שברגע שזה מוגדר, כדי להוסיף firewall למכונה כל מה שאני צריך לעשות זה לכלול את הסקריפט הזה בהגדרה של המכונה. (ברמת include, לא להעתיק אותו).
קשה להתחיל להשתמש בפאפט, אבל יש מספיק חבר'ה עם רצון טוב בערוץ הIRC שלהם, ובנוסף יש לא מעט מדרכים ברשת. בכל אופן, למי שצריך לנהל יותר משתי מכונות זה כבר מתחיל להיות שווה את המאמץ.