מדדים מותאמים אישית והתראות (Prometheus / CloudWatch)

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

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
מדדים מותאמים אישית והתראות (Prometheus / CloudWatch)
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

תארו לעצמכם שחנות המסחר האלקטרוני שלכם מאבדת הזמנות, אבל מדדי המעבד והזיכרון תקינים. לאן פונים? נתקלנו במקרה שבו לקוח התלונן על טעינה איטית של דף העגלה. לאחר הטמעת מדדים מותאמים אישית, גילינו שזמן התגובה של שער התשלום עולה על 5 שניות בעומס. מדדים סטנדרטיים לא הראו זאת. מדדים מותאמים אישית הם הדרך היחידה לראות את ההתנהגות האמיתית של האפליקציה. בלעדיהם, אתם עיוורים: תקלה יכולה לעלות עד 10% מההכנסות לשעת השבתה. מאמר זה מכסה אילו מדדים להתאים אישית, כיצד להגדיר אותם ב-Prometheus וב-CloudWatch, וכמה זמן אורך האינטגרציה. עם ניסיון של למעלה מ-5 שנים בניטור ו-50+ פרויקטים, אנו מאשרים: מדדים מותאמים אישית חוסכים מיליונים בתקלות.

אילו מדדים להתאים אישית קודם?

מדדים עסקיים: הזמנות לדקה, המרת משפך קופה, הפעלות משתמש פעילות. מדדים טכניים: גודל תור משימות, שיעור פגיעות מטמון, זמן ביצוע פעולות ספציפיות, מספר שגיאות לפי סוג. תלות חיצונית: זמן אחזור ל-API של צד שלישי, זמינות שער תשלום, סטטוס אינטגרציה. לדוגמה, ההמרה ירדה מ-3% ל-1% — נעקוב אחר מדד conversion_rate ונשלח התראה. לזיהוי מהיר של בעיות, אנו גם עוקבים אחר האחוזון ה-99 של זמן התגובה ומספר שגיאות מסד הנתונים (שאילתת N+1).

כיצד להגדיר מדדים מותאמים אישית ב-Prometheus?

לאינסטרומנטציה של Python (FastAPI), השתמשו בספריית prometheus_client:

from prometheus_client import Counter, Histogram, Gauge
from prometheus_fastapi_instrumentator import Instrumentator

# Счётчик
order_counter = Counter(
    'orders_created_total',
    'Total orders created',
    ['status', 'payment_method']
)

# Гистограмма (для percentile)
checkout_duration = Histogram(
    'checkout_duration_seconds',
    'Time spent in checkout process',
    buckets=[0.1, 0.5, 1.0, 2.0, 5.0, 10.0]
)

# Gauge (текущее значение)
queue_size = Gauge(
    'task_queue_size',
    'Current size of processing queue'
)

# Использование в коде
async def create_order(order_data: dict):
    with checkout_duration.time():
        result = await process_order(order_data)
        order_counter.labels(
            status=result.status,
            payment_method=order_data['payment_method']
        ).inc()
    return result

Node.js (prom-client):

const client = require('prom-client')
const httpDuration = new client.Histogram({
  name: 'http_request_duration_ms',
  help: 'Duration of HTTP requests in ms',
  labelNames: ['method', 'route', 'code'],
  buckets: [1, 5, 15, 50, 100, 200, 500, 1000, 2000]
})
app.use((req, res, next) => {
  const end = httpDuration.startTimer()
  res.on('finish', () => {
    end({ method: req.method, route: req.route?.path, code: res.statusCode })
  })
  next()
})

לאחר הוספת מדדים, זכרו לחשוף אותם דרך נקודת הקצה from prometheus_client import Counter, Histogram, Gauge from prometheus_fastapi_instrumentator import Instrumentator # Счётчик order_counter = Counter( 'orders_created_total', 'Total orders created', ['status', 'payment_method'] ) # Гистограмма (для percentile) checkout_duration = Histogram( 'checkout_duration_seconds', 'Time spent in checkout process', buckets=[0.1, 0.5, 1.0, 2.0, 5.0, 10.0] ) # Gauge (текущее значение) queue_size = Gauge( 'task_queue_size', 'Current size of processing queue' ) # Использование в коде async def create_order(order_data: dict): with checkout_duration.time(): result = await process_order(order_data) order_counter.labels( status=result.status, payment_method=order_data['payment_method'] ).inc() return result ולהגדיר גרידה ב-const client = require('prom-client') const httpDuration = new client.Histogram({ name: 'http_request_duration_ms', help: 'Duration of HTTP requests in ms', labelNames: ['method', 'route', 'code'], buckets: [1, 5, 15, 50, 100, 200, 500, 1000, 2000] }) app.use((req, res, next) => { const end = httpDuration.startTimer() res.on('finish', () => { end({ method: req.method, route: req.route?.path, code: res.statusCode }) }) next() }) .

Prometheus מול CloudWatch: מה לבחור?

קריטריון Prometheus CloudWatch
תדירות איסוף עד 10 אלפיות שנייה דקה אחת (מינימום)
אחסון מקומי (עד 15 ימים) עד 15 חודשים
מורכבות הגדרה גבוהה יותר (נדרש שרת משלכם) נמוכה יותר (מובנה ב-AWS)
עלות חינם (אירוח עצמי) חיוב לפי מדד
גמישות התראות גבוהה (Alertmanager) בינונית (SNS)

Prometheus מאפשר איסוף מדדים במרווחים של עד 10 אלפיות שנייה, מהיר פי 20 מ-CloudWatch. עם זאת, CloudWatch נוח יותר בסביבות AWS. למידע מעמיק, עיינו בתיעוד Prometheus ובתיעוד CloudWatch.

כללי Prometheus: הקלטה והתראות

לדשבורדים מהירים והתראות בזמן, אנו מגדירים כללי הקלטה והתראות. כללי הקלטה מחשבים מראש ביטויים מורכבים (לדוגמה, /metrics), ומאיצים שאילתות Grafana. כללי התראות מפעילים הודעות כאשר חריגה מספים. דוגמת תצורה:

---
groups:
  - name: app_slo
    interval: 30s
    rules:
      # Recording rule: предрассчитанная метрика ошибок
      - record: job:request_errors:rate5m
        expr: rate(http_requests_total{status=~"5.."}[5m])
      # Alert: высокая ошибка
      - alert: HighErrorRate
        expr: job:request_errors:rate5m > 0.05
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "Error rate {{ $value | humanizePercentage }}"
---

Alertmanager שולח לאחר מכן הודעות ל-Slack, Telegram או PagerDuty. זה מאפשר תגובה תוך דקות, לא שעות.

כיצד להגדיר מדדים מותאמים אישית ב-CloudWatch?

import boto3
cw = boto3.client('cloudwatch')

def put_metric(name: str, value: float, unit: str = 'Count', dimensions: dict = None):
    metric_data = {
        'MetricName': name,
        'Value': value,
        'Unit': unit
    }
    if dimensions:
        metric_data['Dimensions'] = [
            {'Name': k, 'Value': v} for k, v in dimensions.items()
        ]
    cw.put_metric_data(
        Namespace='MyApp/Business',
        MetricData=[metric_data]
    )

# Использование
put_metric('OrdersCreated', 1, 'Count', {'Environment': 'production'})
put_metric('CheckoutDuration', 0.85, 'Seconds', {'PaymentMethod': 'card'})
put_metric('QueueDepth', queue.size(), 'Count')

התראת CloudWatch על מדד מותאם אישית:

resource "aws_cloudwatch_metric_alarm" "queue_depth" {
  alarm_name = "high-queue-depth"
  comparison_operator = "GreaterThanThreshold"
  evaluation_periods = 3
  metric_name = "QueueDepth"
  namespace = "MyApp/Business"
  period = 60
  statistic = "Maximum"
  threshold = 1000
  alarm_description = "Task queue is backed up"
  dimensions = {
    Environment = "production"
  }
  alarm_actions = [aws_sns_topic.alerts.arn]
  ok_actions = [aws_sns_topic.alerts.arn]
}

מה כלול בעבודה?

שלב תוצאה
ביקורת מדדים נוכחיים דוח עם המלצות והערכות כלכליות
בחירת כלים Prometheus או CloudWatch עם נימוק
אינסטרומנטציה של קוד קוד מקור למדדים (Python, Node.js, Go, Java)
הגדרת התראות Alertmanager/SNS + ערוצי הודעות (Slack, Telegram, דוא"ל)
בדיקות בדיקות עומס, אימות מדדים, בדיקת התראות
תיעוד והדרכה Runbook, דשבורדים (Grafana / CloudWatch Dashboard), גישה

כיצד אנו מגדירים ניטור תוך 3-7 ימים

התהליך שלנו: ביקורת מדדים נוכחיים, בחירת כלים, כתיבת קוד מדדים, הגדרת התראות, בדיקות, תיעוד והדרכת צוות. אתם מקבלים דשבורדים של Grafana (או CloudWatch Dashboard), הודעות ב-Slack/Telegram/דוא"ל, ותיעוד מלא. אנו מבטיחים SLA של 99.9% על פעילות תקינה של מדדים. ניתן לשלב עם מערכות קיימות (PagerDuty, Opsgenie) במידת הצורך.

שלב אחר שלב: הוספת המדד המותאם אישית הראשון שלכם

  1. התקינו את ספריית prometheus.yml (Python) או job:request_errors:rate5m (Node.js).
  2. צרו מדד מהסוג הנדרש (Counter, Histogram, Gauge).
  3. בצעו אינסטרומנטציה לקוד: הוסיפו קריאות מדדים בנקודות מפתח.
  4. חשפו את המדד (לדוגמה, דרך נקודת הקצה groups: - name: app_slo interval: 30s rules: # Recording rule: предрассчитанная метрика ошибок - record: job:request_errors:rate5m expr: rate(http_requests_total{status=~"5.."}[5m]) # Alert: высокая ошибка - alert: HighErrorRate expr: job:request_errors:rate5m > 0.05 for: 2m labels: severity: critical annotations: summary: "Error rate {{ $value | humanizePercentage }}" ).
  5. הגדירו גרידת מדדים ב-Prometheus (הוסיפו Job ב-import boto3 cw = boto3.client('cloudwatch') def put_metric(name: str, value: float, unit: str = 'Count', dimensions: dict = None): metric_data = { 'MetricName': name, 'Value': value, 'Unit': unit } if dimensions: metric_data['Dimensions'] = [ {'Name': k, 'Value': v} for k, v in dimensions.items() ] cw.put_metric_data( Namespace='MyApp/Business', MetricData=[metric_data] ) # Использование put_metric('OrdersCreated', 1, 'Count', {'Environment': 'production'}) put_metric('CheckoutDuration', 0.85, 'Seconds', {'PaymentMethod': 'card'}) put_metric('QueueDepth', queue.size(), 'Count') ).

רשימת בדיקה להגדרה:

  • Prometheus מותקן או גישת AWS CloudWatch
  • ספריות אינסטרומנטציה
  • גישה לקוד האפליקציה
  • Alertmanager או נושא SNS מוגדר

מדוע מדדים מותאמים אישית חוסכים תקציב

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

הזמינו הגדרת מדדים מותאמים אישית — קבלו שליטה מלאה על ביצועי האפליקציה והאינדיקטורים העסקיים שלכם. צרו קשר לייעוץ — נעריך את הפרויקט שלכם תוך יום אחד. למעלה מ-50 פרויקטי ניטור ו-5+ שנות ניסיון מבטיחים תוצאות.