עברית

גלו את איסוף המדדים עם Prometheus ו-Grafana. למדו כיצד לנטר את היישומים והתשתית שלכם ביעילות בעזרת כלים רבי עוצמה אלה בקוד פתוח.

איסוף מדדים: מדריך מקיף עם Prometheus ו-Grafana

בנוף ה-IT המורכב של ימינו, ניטור יעיל הוא חיוני לשמירה על תקינות וביצועי יישומים ותשתיות. איסוף מדדים מספק את הבסיס לניטור זה, ומאפשר לך לעקוב אחר מדדי ביצועים מרכזיים (KPI), לזהות בעיות פוטנציאליות ולבצע אופטימיזציה של ניצול המשאבים. מדריך מקיף זה יבחן כיצד למנף את Prometheus ו-Grafana, שני כלים רבי עוצמה בקוד פתוח, לאיסוף והדמיה חזקים של מדדים.

מהו איסוף מדדים?

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

מדוע איסוף מדדים חשוב?

מבוא ל-Prometheus ו-Grafana

Prometheus היא ערכת כלים בקוד פתוח לניטור והתראה של מערכות, שפותחה במקור ב-SoundCloud. היא מצטיינת באיסוף ואחסון נתוני סדרות זמן, שהם נתונים המאונדקסים לפי חותמות זמן. Prometheus משתמשת במודל מבוסס משיכה כדי לגרד מדדים מיעדים (לדוגמה, שרתים, יישומים) במרווחי זמן קבועים. היא מציעה שפת שאילתות עוצמתית (PromQL) לניתוח הנתונים שנאספו ולהגדרת כללי התראה.

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

יחד, Prometheus ו-Grafana יוצרים פתרון ניטור עוצמתי וגמיש שניתן להתאים למגוון רחב של סביבות ומקרי שימוש. הם נמצאים בשימוש נרחב בפרקטיקות DevOps ו-SRE (Site Reliability Engineering) ברחבי העולם.

ארכיטקטורה ומושגים של Prometheus

הבנת רכיבי הליבה של Prometheus חיונית ליישום וניצול יעילים:

תהליך עבודה של Prometheus

  1. יעדים (יישומים, שרתים וכו') חושפים מדדים. מדדים אלה נחשפים בדרך כלל באמצעות נקודת קצה HTTP.
  2. שרת Prometheus מגרד מדדים מיעדים מוגדרים. הוא מושך מדדים מנקודות קצה אלה מעת לעת.
  3. Prometheus מאחסנת את המדדים המגורדים במסד הנתונים של סדרות הזמן שלה.
  4. משתמשים שואלים את המדדים באמצעות PromQL. זה מאפשר להם לנתח את הנתונים וליצור גרפים ולוחות מחוונים.
  5. כללי התראה מוערכים בהתבסס על המדדים המאוחסנים. אם תנאי כלל מתקיים, מופעלת התראה.
  6. Alertmanager מטפל בהתראות המופעלות. הוא מבטל כפילויות, מקבץ ומנתב אותם לערוצי ההתראה המתאימים.

ארכיטקטורה ומושגים של Grafana

Grafana משלימה את Prometheus על ידי מתן ממשק ידידותי למשתמש להדמיה וניתוח של המדדים שנאספו:

תהליך עבודה של Grafana

  1. הגדרת מקורות נתונים: חבר את Grafana לשרת Prometheus שלך.
  2. יצירת לוחות מחוונים: תכנן לוחות מחוונים כדי להמחיש את המדדים שלך.
  3. הוספת פאנלים ללוחות מחוונים: הוסף פאנלים כדי להציג נקודות נתונים ספציפיות מ-Prometheus באמצעות שאילתות PromQL.
  4. הגדרת התראה (אופציונלי): הגדר כללי התראה בתוך Grafana כדי לקבל התראות בהתבסס על ספי מדדים ספציפיים.
  5. שיתוף לוחות מחוונים: שתף לוחות מחוונים עם הצוות שלך כדי לשתף פעולה בניטור וניתוח.

הגדרת Prometheus ו-Grafana

סעיף זה מספק מדריך שלב אחר שלב להגדרת Prometheus ו-Grafana.

התקנת Prometheus

1. הורדת Prometheus:

הורד את הגרסה העדכנית ביותר של Prometheus מהאתר הרשמי: https://prometheus.io/download/. בחר את החבילה המתאימה למערכת ההפעלה שלך (לדוגמה, Linux, Windows, macOS).

2. חילוץ הארכיון:

חלץ את הארכיון שהורדת לספרייה לבחירתך.

3. הגדרת Prometheus:

צור קובץ תצורה `prometheus.yml`. קובץ זה מגדיר את היעדים ש-Prometheus יגרד ואפשרויות תצורה אחרות. תצורה בסיסית עשויה להיראות כך:


global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

תצורה זו מגדירה שתי משרות גירוד: אחת עבור Prometheus עצמה (גירוד המדדים שלה) ואחת עבור node_exporter הפועלת ביציאה 9100 במארח המקומי. ה-`scrape_interval` מציין באיזו תדירות Prometheus תגרד את היעדים.

4. הפעלת Prometheus:

הפעל את קובץ ההפעלה של Prometheus מהספרייה שבה חילצת את הארכיון:

./prometheus --config.file=prometheus.yml

Prometheus תתחיל להאזין ביציאה 9090 כברירת מחדל. אתה יכול לגשת לממשק האינטרנט של Prometheus בדפדפן שלך בכתובת http://localhost:9090.

התקנת Grafana

1. הורדת Grafana:

הורד את הגרסה העדכנית ביותר של Grafana מהאתר הרשמי: https://grafana.com/grafana/download. בחר את החבילה המתאימה למערכת ההפעלה שלך.

2. התקנת Grafana:

פעל לפי הוראות ההתקנה עבור מערכת ההפעלה שלך. לדוגמה, ב-Debian/Ubuntu:


sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana

3. הפעלת Grafana:

הפעל את שירות Grafana:

sudo systemctl start grafana-server

4. גישה ל-Grafana:

Grafana תתחיל להאזין ביציאה 3000 כברירת מחדל. אתה יכול לגשת לממשק האינטרנט של Grafana בדפדפן שלך בכתובת http://localhost:3000.

שם המשתמש והסיסמה המוגדרים כברירת מחדל הם `admin` ו-`admin`. תתבקש לשנות את הסיסמה בכניסה הראשונה.

חיבור Grafana ל-Prometheus

כדי להמחיש מדדים מ-Prometheus ב-Grafana, עליך להגדיר את Prometheus כמקור נתונים ב-Grafana.

1. הוספת מקור נתונים:

בממשק האינטרנט של Grafana, נווט אל תצורה > מקורות נתונים ולחץ על הוספת מקור נתונים.

2. בחירת Prometheus:

בחר Prometheus כסוג מקור הנתונים.

3. הגדרת חיבור Prometheus:

הזן את כתובת האתר של שרת Prometheus שלך (לדוגמה, `http://localhost:9090`). הגדר אפשרויות אחרות כנדרש (לדוגמה, אימות).

4. שמירה ובדיקה:

לחץ על שמירה ובדיקה כדי לוודא ש-Grafana יכולה להתחבר בהצלחה ל-Prometheus.

יצירת לוחות מחוונים ב-Grafana

לאחר שחיברת את Grafana ל-Prometheus, תוכל ליצור לוחות מחוונים כדי להמחיש את המדדים שלך.

1. יצירת לוח מחוונים חדש:

בממשק האינטרנט של Grafana, לחץ על סמל ה-+ בסרגל הצד ובחר לוח מחוונים.

2. הוספת פאנל:

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

3. הגדרת הפאנל:


rate(process_cpu_seconds_total{job="node_exporter"}[5m])

שאילתה זו מחשבת את קצב השינוי של זמן ה-CPU המשמש תהליכים שנאספו על ידי node_exporter במרווח של 5 דקות.

4. שמירת לוח המחוונים:

לחץ על סמל השמירה כדי לשמור את לוח המחוונים.

PromQL: שפת השאילתות של Prometheus

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

דוגמאות ל-PromQL


rate(process_cpu_seconds_total{job="node_exporter"}[5m])

node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes

(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100

rate(http_requests_total[5m])

לימוד PromQL חיוני לשימוש יעיל ב-Prometheus וב-Grafana. עיין בתיעוד של Prometheus לקבלת מדריך מקיף לשפה.

התראה עם Prometheus ו-Alertmanager

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

הגדרת כללי התראה

כללי התראה מוגדרים בקובץ התצורה `prometheus.yml`. הנה דוגמה לכלל התראה המופעל כאשר ניצול CPU עולה על 80%:


rule_files:
  - "rules.yml"

לאחר מכן, בקובץ בשם `rules.yml`, מקם כללים כאלה:


groups:
- name: example
  rules:
  - alert: HighCPUUsage
    expr: rate(process_cpu_seconds_total{job="node_exporter"}[5m]) > 0.8
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "High CPU usage detected"
      description: "CPU usage is above 80% on {{ $labels.instance }}"

הסבר:

הגדרת Alertmanager

Alertmanager מטפל בניווט והתראה של התראות. עליך להגדיר את Alertmanager כדי לציין לאן יש לשלוח התראות (לדוגמה, דוא"ל, Slack, PagerDuty). עיין בתיעוד של Alertmanager לקבלת הוראות תצורה מפורטות.

תצורה מינימלית של `alertmanager.yml` עשויה להיראות כך:


global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 12h
  receiver: 'web.hook'

receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://localhost:8080/'

תצורה זו שולחת התראות ל-webhook ביציאה 8080 במארח המקומי. אתה יכול להתאים אישית את סעיף ה-`receivers` כדי להשתמש בשירותים כמו Slack או דוא"ל במקום זאת.

דוגמאות מעשיות ומקרי שימוש

ניתן להשתמש ב-Prometheus וב-Grafana לניטור מגוון רחב של יישומים ורכיבי תשתית. הנה כמה דוגמאות מעשיות:

דוגמה: ניטור ארכיטקטורת מיקרו-שירותים

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

טכניקות מתקדמות ושיטות עבודה מומלצות

כדי להפיק את המרב מ-Prometheus ומ-Grafana, שקול את הטכניקות המתקדמות ושיטות העבודה המומלצות הבאות:

פתרון בעיות נפוצות

גם עם תכנון ויישום זהירים, אתה עלול להיתקל בבעיות בעת השימוש ב-Prometheus וב-Grafana. הנה כמה בעיות נפוצות והפתרונות שלהן:

פתרונות ניטור אלטרנטיביים

אמנם Prometheus ו-Grafana הם כלים רבי עוצמה, אך הם אינם האפשרויות היחידות לאיסוף והדמיה של מדדים. פתרונות ניטור פופולריים אחרים כוללים:

פתרון הניטור הטוב ביותר עבור הארגון שלך יהיה תלוי בדרישות ובתקציב הספציפיים שלך.

מסקנה

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

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

איסוף מדדים: מדריך מקיף עם Prometheus ו-Grafana | MLOG