הגדרת ניטור Redis עם Prometheus (redis_exporter)
לעתים קרובות אנו נתקלים במצבים שבהם Redis פועל ללא ניטור — עד שמתחיל פינוי (eviction) או שהמסד נתונים זורק LOADING Redis is loading the dataset in memory. עד אז, האפליקציה מתחילה לקבל שגיאות, ו-Redis פועל במצב מופחת ביצועים במשך דקות או שעות. פינוי יכול למחוק נתונים בשקט, ותחת מדיניות noeviction, בקשות כתיבה נכשלות עם OOM command not allowed. ללא ניטור, אתה לומד על הבעיה רק מהמשתמשים. הניסיון שלנו מראה שניטור Redis תקין באמצעות Prometheus ו-redis_exporter יכול לזהות בעיות 5–10 דקות לפני שהן משפיעות על הייצור. במשך יותר מ-5 שנות עבודה, השלמנו יותר מ-50 פרויקטים של ניטור תשתיות ואנו מבטיחים שהמערכות שלך יהיו תחת מעקב מתמיד. הגדרת ניטור חוסכת עד 10 שעות עבודה בחודש ומפחיתה את עלויות התקלות בחצי.
למה ניטור Redis קריטי לייצור?
Redis הוא מסד נתונים בזיכרון, והמצב שלו משפיע באופן דרמטי על ביצועי האפליקציה. אפילו השבתה קצרה יכולה להוביל לאובדן נתונים או לזמני תגובה מופחתים. מדדים מרכזיים כמו שימוש בזיכרון, מספר חיבורים ומצב שכפול חייבים להיות במעקב רציף. ללא זה, אתה מסתכן בהשבתה פתאומית. לשם השוואה, redis_exporter צורך מחצית מהמשאבים של סקריפטים מותאמים אישית לניטור, תוך שהוא מספק פי שלושה יותר מדדים. התיעוד הרשמי של Prometheus ממליץ על exporter זה עבור Redis.
פריסת oliver006/redis_exporter
---
services:
redis-exporter:
image: oliver006/redis_exporter:v1.61.0
environment:
REDIS_ADDR: "redis:6379"
REDIS_PASSWORD: "your_redis_password"
ports:
- "9121:9121"
עבור Redis Sentinel:
REDIS_ADDR: "redis://sentinel1:26379,sentinel2:26379,sentinel3:26379" REDIS_MASTER_NAME: "mymaster" עבור Redis Cluster — ה-exporter מתחבר לצומת אחד, אוסף מידע טופולוגי דרך services: redis-exporter: image: oliver006/redis_exporter:v1.61.0 environment: REDIS_ADDR: "redis:6379" REDIS_PASSWORD: "your_redis_password" ports: - "9121:9121" ו-REDIS_ADDR: "redis://sentinel1:26379,sentinel2:26379,sentinel3:26379" REDIS_MASTER_NAME: "mymaster" , ואוסף מדדי אשכול מצטברים. תיעוד מלא זמין ב-GitHub redis_exporter.
אילו מדדי Redis כדאי לעקוב אחריהם?
זיכרון. CLUSTER INFO לעומת CLUSTER NODES. כאשר הזיכרון בשימוש מתקרב ל-redis_memory_used_bytes, Redis מפעיל את מדיניות הפינוי. אם המדיניות היא redis_config_maxmemory — מתרחשות שגיאות maxmemory. אם noeviction או OOM command not allowed — נתונים נמחקים בשקט.
redis_memory_used_bytes / redis_config_maxmemory > 0.9 התראה ב-90% היא נוהג סטנדרטי. אבל allkeys-lru חשוב גם הוא: ערך מעל 1.5 אומר ש-Redis הקצה פי 1.5 יותר זיכרון ממערכת ההפעלה ממה שהוא בפועל משתמש — תוצאה אופיינית של מחיקת מפתחות המונית. הזיכרון מפוצל ואינו מוחזר למערכת ההפעלה.
פינוי ומרחב מפתחות. volatile-lru הוא מונה מונוטוני. redis_memory_used_bytes / redis_config_maxmemory > 0.9 מצביע על פינוי מפתחות פעיל כרגע. עבור מטמון זה מקובל, עבור אחסון סשנים או תורים — זה אסון.
חיבורים. redis_mem_fragmentation_ratio לעומת redis_evicted_keys_total (ברירת מחדל 10000). עלייה בלתי צפויה בלקוחות מחוברים תחת עומס יציב מאותתת על דליפת חיבורים באפליקציה. אפליקציות ללא מאגר חיבורים פותחות חיבורים חדשים ואינן סוגרות ישנים.
שכפול. rate(redis_evicted_keys_total[5m]) > 0 — מספר העותקים המחוברים. redis_connected_clients ו-redis_config_maxclients על העותקים — ההפרש נותן את השהיית השכפול בבתים. המדד redis_connected_slaves קובע כמה זמן עותק יכול לפגר לפני סנכרון מלא מחדש.
השוואת מדיניויות פינוי
| מדיניות | התנהגות | מתי להשתמש |
|---|---|---|
| noeviction | שגיאת OOM בעת חריגה מ-maxmemory | כאשר אובדן נתונים אינו מקובל |
| allkeys-lru | מפנה מפתחות בשימוש הנדיר ביותר | מטמון גדול |
| volatile-lru | מפנה מפתחות עם TTL | מטמון עם מפתחות TTL |
| allkeys-random | פינוי אקראי | עומס אחיד |
| volatile-ttl | מפנה מפתחות עם ה-TTL הקרוב ביותר | נתונים מיושנים צריכים ללכת ראשונים |
תהליך הגדרת ניטור Redis שלב אחר שלב
- הערכת התשתית הנוכחית — קביעת סוג הפריסה (עצמאי, Sentinel, Cluster) וגרסת Redis.
- התקנת redis_exporter — פריסת הקונטיינר על צומת Redis או על שרת נפרד, הגדרת משתני סביבה.
- הוספת תצורת Prometheus — הגדרת יעד עם תוויות עבור ה-exporter.
- יצירת כללי התראה — תיאור התראות על בסיס ספים קריטיים.
- ייבוא לוח מחוונים של Grafana — שימוש במזהה הסטנדרטי
redis_master_repl_offsetוהתאמה אישית לפי הצורך. - בדיקה והשקה — אימות איסוף המדדים, התאמת ספי ההתראות.
התראות
---
groups:
- name: redis
rules:
- alert: RedisDown
expr: redis_up == 0
for: 1m
labels:
severity: critical
- alert: RedisHighMemoryUsage
expr: redis_memory_used_bytes / redis_config_maxmemory > 0.9
for: 5m
labels:
severity: warning
- alert: RedisEviction
expr: increase(redis_evicted_keys_total[5m]) > 0
for: 0m
labels:
severity: warning
annotations:
summary: "Redis evicts keys на {{ $labels.instance }}"
- alert: RedisReplicaMissing
expr: redis_connected_slaves < 1
for: 5m
labels:
severity: critical
לוח מחוונים של Grafana
מזהה לוח המחוונים redis_slave_repl_offset (Redis Dashboard for Prometheus Redis Exporter) הוא הסטנדרט. הוא מציג זיכרון, יחס פגיעות/החטאות, פקודות בשנייה, מרחב מפתחות, מצב שכפול.
יחס הפגיעות מחושב מ-redis_repl_backlog_size ו-763. עבור מטמון תקין הוא צריך להיות מעל 95%. ירידה ביחס הפגיעות תחת תנועה יציבה מצביעה בדרך כלל על פינוי או TTL קצר מדי.
מאפייני Cluster
ב-Redis Cluster, ה-exporter מתחבר לכל צומת בנפרד, או משתמש בדגל groups: - name: redis rules: - alert: RedisDown expr: redis_up == 0 for: 1m labels: severity: critical - alert: RedisHighMemoryUsage expr: redis_memory_used_bytes / redis_config_maxmemory > 0.9 for: 5m labels: severity: warning - alert: RedisEviction expr: increase(redis_evicted_keys_total[5m]) > 0 for: 0m labels: severity: warning annotations: summary: "Redis evicts keys на {{ $labels.instance }}" - alert: RedisReplicaMissing expr: redis_connected_slaves < 1 for: 5m labels: severity: critical עם רשימת צמתים. המדדים 763, redis_keyspace_hits_total, redis_keyspace_misses_total זמינים אוטומטית. התראה על --redis.addr היא חובה עבור אשכולות ייצור.
מה השירות שלנו כולל
- ניתוח תצורת Redis הנוכחית — זיהוי צווארי בקבוק.
- פריסת redis_exporter המותאם לסביבה שלך (Sentinel, Cluster).
- הגדרת התראות על מדדים קריטיים (זיכרון, פינוי, שכפול).
- התקנה והגדרה של לוח מחוונים של Grafana — ויזואליזציה של כל המדדים.
- תיעוד — תיאור כל ההגדרות והוראות להוספת מדדים חדשים.
- הדרכה לצוות שלך — כיצד לפרש מדדים ולהגיב להתראות.
לוח זמנים ותמחור
זמן משוער: 4 עד 8 שעות, תלוי במורכבות התצורה. המחיר מחושב באופן אישי. צור קשר להערכת פרויקט.
על החברה
אנחנו צוות של מהנדסי DevOps עם יותר מ-5 שנות ניסיון. השלמנו יותר מ-50 פרויקטים של ניטור תשתיות. אנו משתמשים רק בפתרונות מוכחים ומספקים אחריות על כל העבודה.
הזמן הגדרת ניטור Redis עוד היום וקבל ייעוץ על אופטימיזציית ביצועים. קבל ייעוץ — כתוב לנו.







