תארו לעצמכם שהחנות המקוונת שלכם נופלת, אבל לוח המחוונים המוגדר כברירת מחדל של Grafana מציג רק גרפים ירוקים, ומסתיר ש- Redis מלא או ששאילתות N+1 במסד הנתונים הורגות את ה- P95. נתקלנו בזה עשרות פעמים. לוח מחוונים מותאם אישית פותר זאת על ידי עיצוב פאנלים לתרחישי תקלות אמיתיים. אנו מפתחים לוחות מחוונים שעונים על שלוש שאלות מפתח תוך שניות: האם השירות חי, היכן הצוואר בקבוק, מה לעשות? הניסיון מראה שלוח מחוונים מותאם אישית מהיר פי 5 מלוח ברירת המחדל בחיפוש תקלות—ה- MTTR יורד מ- 40 ל- 15 דקות. רקורד העבודה שלנו: מעל 50 לוחות מחוונים לפרויקטים ברמות מורכבות שונות, מסטארטאפים ועד ארגונים.
למה לוחות מחוונים ברירת מחדל לא פותרים את הבעיות שלכם?
לוחות מחוונים קהילתיים סובלים משתי בעיות: רעש מידע וחוסר הקשר. פאנלים של CPU וזיכרון לכל מארח אינם ניטור שירות אלא מדדי חומרה. ה- SRE שלכם לא מסתכל על CPU אלא אם יש תקלה. הם צריכים: שגיאות 5xx, זמן השהיה בתגובה, וסטטוס של תלויות חיצוניות. לוחות מחוונים ברירת מחדל לא מספקים זאת. לדוגמה, אחד הלקוחות שלנו—שירות משלוחי מזון—לאחר יישום לוח מחוונים מותאם אישית הפחית את זמן השחזור הממוצע (MTTR) מ- 40 ל- 15 דקות.
איך לבנות לוח מחוונים שעונה על שאלות אמיתיות?
אנו משתמשים בפירמידת מדדים: בראש—זמינות ושגיאות, מתחת—ביצועים, ואז משאבים. כל פאנל הוא בר-פעולה. לדוגמה, מדד "CPU 67%" הוא חסר תועלת. אנו מוסיפים מגמה, סף יעד, והתראת קנה מידה. כך המהנדס לא מנחש אלא מקבל החלטה. כתוצאה מכך, הצוות חוסך עד 8 שעות בשבוע במציאת בעיות.
| רכיב | לוח מחוונים ברירת מחדל | לוח מחוונים מותאם אישית |
|---|---|---|
| מספר פאנלים | 20+ (רעש) | 5-7 (רק מה שצריך) |
| תשובה ל- "מה לעשות?" | לא | כן: התראה, מגמה, סף |
| זמן חיפוש בעיות | >10 דקות | <2 דקות |
אנו מטמיעים משתני לוח מחוונים: $__timeRange, $__interval, בנוסף למשתני סביבה ומופע. זה מאפשר צפייה ב- staging ו- production ללא שכפול.
אילו מדדים לכלול בלוח מחוונים למציאת בעיות מהירה?
חשוב לבחור מדדים המשקפים חוויית משתמש ובריאות השירות. אנו ממליצים על גישת SLI/SLO: הגדרת מדדי רמת שירות (שיעור שגיאות, זמן השהיה, תפוקה) וערכי יעד. לוח המחוונים חייב לכלול:
- שיעור שגיאות (5xx)—אחוז שגיאות. סף: <1% לשירותים קריטיים.
- P95 זמן השהיה—עיכוב ל- 95% מהבקשות. הסף תלוי ב- SLA.
- RPS—בקשות בשנייה, נדרש להבנת שיאים.
- זמינות—זמינות, נבדקת דרך ניטור סינתטי.
- מדדי מסד נתונים: חיבורים פעילים, זמן השהיית שאילתות, שאילתות איטיות.
- מדדי מטמון: שיעור פגיעה, שימוש בזיכרון, פינויים.
דוגמה למבנה לוח מחוונים ליישום אינטרנט
Row 1: Service Health (большие stat panels) [Error Rate %] [P95 Latency ms] [Uptime %] [Active Users]
Row 2: Traffic & Performance [RPS - время] [Response time P50/P95/P99 - время] [HTTP status breakdown]
Row 3: Infrastructure [CPU % per host] [Memory % per host] [Disk I/O] [Network I/O]
Row 4: Database [DB Connections active/max] [Query latency P95] [Slow queries count]
Row 5: Cache [Redis hit rate %] [Redis memory usage] [Evictions per sec] הצג דוגמה לשאילתות PromQL למדדים מרכזיים
| מדד | שאילתה |
|---|---|
| שיעור שגיאות | Row 1: Service Health (большие stat panels) [Error Rate %] [P95 Latency ms] [Uptime %] [Active Users] Row 2: Traffic & Performance [RPS - время] [Response time P50/P95/P99 - время] [HTTP status breakdown] Row 3: Infrastructure [CPU % per host] [Memory % per host] [Disk I/O] [Network I/O] Row 4: Database [DB Connections active/max] [Query latency P95] [Slow queries count] Row 5: Cache [Redis hit rate %] [Redis memory usage] [Evictions per sec] |
| P95 זמן השהיה | sum(rate(http_requests_total{status=~"5..", job="app"}[5m])) / sum(rate(http_requests_total{job="app"}[5m])) * 100 |
| חיבורי DB פעילים | histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{job="app"}[5m])) by (le)) |
| שיעור פגיעת Redis | pg_stat_activity_count{datname="mydb", state="active"} |
לוח מחוונים כקוד: לוחות מחוונים ב- Git
אחסון לוחות מחוונים בכאוס ממשק המשתמש מוביל להפסדים. אנו משתמשים ב- Dashboard as Code דרך Grafonnet או ספק Grafana של Terraform. דוגמה ב- Jsonnet:
local grafana = import 'grafonnet/grafana.libsonnet';
local dashboard = grafana.dashboard;
local graphPanel = grafana.graphPanel;
dashboard.new(
'Application Overview',
time_from='now-1h',
refresh='30s',
)
.addPanel(
graphPanel.new(
'Error Rate',
datasource='Prometheus',
)
.addTarget(
grafana.prometheus.target(
'sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) * 100',
legendFormat='Error Rate %'
)
),
gridPos={ x: 0, y: 0, w: 12, h: 8 }
)גישה זו מאפשרת גרסאות, ביקורת, ושחזור. הערות פריסה מתווספות דרך CI/CD—כל שחרור מסומן על גרפים. לוח מחוונים מותאם אישית מפחית את זמן חיפוש שורש התקלה פי 5, וחוסך לצוות עד 8 שעות בשבוע.
תהליך
- ביקורת על התשתית והמדדים הקיימים
- עיצוב פאנלים בגישת מלמעלה למטה
- בניית לוחות מחוונים ב- Grafana עם משתנים והערות
- יישום Dashboard as Code (Jsonnet/Terraform)
- תיעוד והדרכת צוות
- אחריות: התאמות חינם תוך 30 יום
לוחות זמנים משוערים
| סוג לוח מחוונים | לוח זמנים |
|---|---|
| בסיסי (שיעור שגיאות, זמן השהיה, תעבורה) | 1-2 ימים |
| מלא (כל שכבות היישום) | 3-5 ימים |
| Dashboard as Code + זרימת עבודה ב- git | 1-2 ימים |
| הערות פריסה | יום אחד |
ניסיון ואחריות
פיתחנו מעל 50 לוחות מחוונים לפרויקטים ברמות מורכבות שונות—מסטארטאפים ועד ארגונים. המהנדסים שלנו מוסמכים ב- Grafana ובעלי ניסיון עם Prometheus, VictoriaMetrics, InfluxDB. אנו מבטיחים שכל לוח מחוונים עונה על שלוש שאלות: "האם השירות חי? היכן הבעיה? מה לעשות?"
הזמינו פיתוח לוח מחוונים מותאם אישית—מעיצוב ועד הדרכת צוות. קבלו ייעוץ לפרויקט שלכם. צרו קשר להערכה מקדימה.







