ניטור ובקרה הם מרכיבים חיוניים בניהול מערכות IT מורכבות. כאשר מערכות אלו מתפרסות על פני מספר שרתים ושירותים, הצורך במעקב רציף אחר ביצועים וזיהוי בעיות בזמן אמת הופך לקריטי. Prometheus ו-Grafana הם כלים מובילים שמספקים פתרון משולב לניטור, איסוף נתונים, והצגתם בצורה גרפית. במאמר זה נלמד כיצד להגדיר ולשלב את Prometheus ו-Grafana כדי לנטר ולפקח על ביצועי המערכת שלכם, כולל דוגמאות מעשיות ושימושים מתקדמים.
התקנה והגדרת Prometheus
Prometheus הוא כלי פתוח לניטור ואיסוף נתונים בזמן אמת. הוא פועל כלקוח עצמאי (standalone) המאפשר לאסוף מדדים (metrics) ממגוון מערכות ושירותים. Prometheus אוסף את הנתונים דרך endpoints שניתן להגדיר מראש, ושומר אותם במסד נתונים מבוסס-זמן (time-series).
כדי להתחיל בניטור עם Prometheus, יש להתקין את הכלי במכונה שלכם. ההתקנה פשוטה ומאפשרת לכם להפעיל את Prometheus תוך דקות ספורות. להלן הוראות ההתקנה עבור מערכת לינוקס:
wget https://github.com/prometheus/prometheus/releases/download/v2.33.1/prometheus-2.33.1.linux-amd64.tar.gz
tar xvfz prometheus-2.33.1.linux-amd64.tar.gz
cd prometheus-2.33.1.linux-amd64/
לאחר ההתקנה, ניתן להפעיל את Prometheus על ידי הרצת הקובץ הבינארי:
./prometheus --config.file=prometheus.yml
קובץ הקונפיגורציה prometheus.yml
הוא הלב של Prometheus. בקובץ זה מגדירים את המקורות מהם Prometheus אוסף נתונים, תדירות האיסוף, וחוקים שונים לעיבוד הנתונים. להלן דוגמה לקובץ קונפיגורציה בסיסי:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
במקרה הזה, הגדרנו את Prometheus לאסוף נתונים משרת ה-Prometheus עצמו (בכתובת localhost:9090
) כל 15 שניות. ניתן להוסיף מקורות נתונים נוספים על ידי הוספת משימות נוספות תחת scrape_configs
.
לדוגמה, אם יש לכם שירות נוסף שרץ בכתובת localhost:8080
, תוכלו להוסיף אותו כך:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'myservice'
static_configs:
- targets: ['localhost:8080']
במקרה הזה, Prometheus יאסוף נתונים משני השירותים המוגדרים. ניתן להוסיף עוד שירותים ככל שנדרש.
התקנה והגדרת Grafana
Grafana הוא כלי עוצמתי להצגת נתונים בצורה גרפית. הוא תומך במגוון רחב של מקורות נתונים, ובמיוחד ב-Prometheus, ומאפשר ליצור לוחות מחוונים (Dashboards) המציגים את הנתונים בצורה ויזואלית קלה להבנה.
להתקנת Grafana, בצעו את הפקודות הבאות:
sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_8.3.3_amd64.deb
sudo dpkg -i grafana_8.3.3_amd64.deb
לאחר ההתקנה, תוכלו להפעיל את Grafana ולגשת לממשק הניהול שלו דרך הדפדפן בכתובת http://localhost:3000
. שם המשתמש והסיסמא הם admin/admin
בברירת המחדל.
כדי להגדיר את Prometheus כמקור נתונים ב-Grafana, בצעו את הצעדים הבאים:
1. התחברו לממשק הניהול של Grafana.
2. לחצו על "Add your first data source".
3. בחרו ב-Prometheus כנתונים.
4. הזינו את כתובת ה-URL של Prometheus (למשל, http://localhost:9090
).
5. לחצו על "Save & Test" כדי לוודא שהחיבור פעיל.
יצירת לוח מחוונים (Dashboard) ב-Grafana
כעת, לאחר שהגדרתם את Prometheus כמקור נתונים, תוכלו להתחיל ליצור לוח מחוונים להצגת המדדים שנאספו. לוח מחוונים מאפשר להציג מספר גרפים ומדדים במקום אחד, וכך לספק תמונה מקיפה על מצב המערכת שלכם.
להלן דוגמה ליצירת לוח מחוונים המציג את עומס המערכת:
1. פתחו לוח מחוונים חדש ב-Grafana.
2. לחצו על "Add panel" כדי להוסיף גרף חדש.
3. בחרו במקור הנתונים "Prometheus" בתור Data source.
4. הזינו את שאילתת Prometheus המתאימה, לדוגמה: node_load1
להצגת העומס הממוצע.
5. לחצו על "Apply" כדי לשמור את השינויים.
כך תוכלו להוסיף עוד גרפים ומדדים ללוח המחוונים שלכם, בהתאם לצרכים שלכם. לדוגמה, ניתן להוסיף גרפים להצגת כמות הזיכרון הנצרכת, מספר הבקשות לשרת, וכדומה.
Grafana מאפשרת גם לשתף את לוחות המחוונים עם חברי צוות נוספים, ולשלב אותם בפרויקטים גדולים יותר.
שימוש בהתראות (Alerts) ב-Prometheus ו-Grafana
אחד היתרונות הגדולים של Prometheus ו-Grafana הוא היכולת להגדיר התראות המבוססות על הנתונים הנאספים. ניתן להגדיר חוקים ב-Prometheus שיקפיצו התראות כאשר מדדים מסוימים מגיעים לערכים חריגים, ולאחר מכן להציג את ההתראות ב-Grafana או לשלוח אותן בדואר אלקטרוני.
להלן דוגמה להגדרת חוק התראה ב-Prometheus:
groups:
- name: example
rules:
- alert: HighLoad
expr: node_load1 > 0.5
for: 5m
labels:
severity: warning
annotations:
summary: "High load detected"
description: "The system load is over 0.5 for more than 5 minutes."
בקובץ זה, הגדרנו חוק בשם "HighLoad" שמקפיץ התראה כאשר העומס על המערכת עולה על 0.5 למשך יותר מ-5 דקות. ניתן להוסיף חוקים נוספים בהתאם לצרכים שלכם.
כדי לשלב את ההתראות ב-Grafana, ניתן להגדיר מקור נתונים נוסף מסוג "Alertmanager" ולהוסיף פאנל התראות ללוח המחוונים. כך תוכלו לראות את ההתראות בזמן אמת ולנקוט בפעולות הנדרשות במקרה של בעיה.
שימוש ב-Exporter לנתוני מערכת נוספים
Exporter הוא כלי נוסף שמשמש להרחבת היכולות של Prometheus, והוא מאפשר לאסוף מדדים ממערכות נוספות שאינן תומכות ב-Prometheus באופן מובנה. לדוגמה, Node Exporter הוא אחד מה-Exporters הנפוצים ביותר, ומאפשר לאסוף מדדים מפורטים על ביצועי מערכת לינוקס.
להתקנת Node Exporter, בצעו את השלבים הבאים:
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz
cd node_exporter-1.3.1.linux-amd64/
./node_exporter
לאחר שה-Node Exporter פועל, ניתן להוסיף אותו לקובץ הקונפיגורציה של Prometheus כך:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
כעת, Prometheus יאסוף מדדים מ-Node Exporter ויאפשר לכם להציג אותם ב-Grafana לצד מדדים נוספים.
סיכום
Prometheus ו-Grafana מספקים יחד פתרון משולב לניטור ובקרה של מערכות IT. בעזרת Prometheus ניתן לאסוף נתונים בזמן אמת ממגוון רחב של מערכות ושירותים, ו-Grafana מאפשרת להציג את הנתונים בצורה גרפית, ליצור דוחות ולהגדיר התראות. שילוב של שני הכלים הללו מאפשר לקבל תמונה ברורה ומדויקת על מצב המערכת שלכם ולנקוט בפעולות נדרשות במקרה של בעיות.
עם היכולות הללו, תוכלו לייעל את תהליך הניטור והבקרה של המערכת שלכם, ולהבטיח פעולה רציפה ותקינה של כל מרכיבי ה-IT בעסק שלכם. אם אתם מעוניינים ללמוד בצורה מעמיקה יותר אתם מוזמנים להתייעץ איתנו על קורס DevOps.