מדדים (Metrics)
נקודת קצה
נקודת הקצה ל-Prometheus: /metrics
מטריקות קיימות
Counters:
errors_total{code},telegram_updates_total{type,status}Histograms:
operation_latency_seconds{operation}Gauges:
active_indexes
מדדי CodeBot ייעודיים (Handlers/Commands/DB)
מטריקות ברירת מחדל ל־Handlers (ווב), Commands (בוט טלגרם) ו־DB. שמות ולייבלים:
codebot_handler_requests_total{handler,status,cache_hit}– Countercodebot_handler_latency_seconds_bucket{handler,status,cache_hit,le}– Histogramcodebot_command_requests_total{command,status,cache_hit}– Countercodebot_command_latency_seconds_bucket{command,status,cache_hit,le}– Histogramcodebot_db_requests_total{operation,status}– Countercodebot_db_latency_seconds_bucket{operation,status,le}– Histogram
הערות לייבלים:
status:2xx/3xx/4xx/5xxאו ערך לוגי שהוזן ידנית (למשלcancelled/error).cache_hit:hit/miss/unknown(או ערכי ביניים כמוwarm/coldאם סופקו).handler/command/operation: שמות מנורמלים (ללא רווחים, עד 120 תווים).
דוגמאות PromQL:
# קצב בקשות לפי Handler (1m)
sum by (handler) (rate(codebot_handler_requests_total[1m]))
# P95 לזמן Handler (5m)
histogram_quantile(0.95, sum by (handler, le) (rate(codebot_handler_latency_seconds_bucket[5m])))
# קצב פקודות טלגרם לפי Command (5m)
sum by (command) (rate(codebot_command_requests_total[5m]))
# P95 לזמן פקודות (5m)
histogram_quantile(0.95, sum by (command, le) (rate(codebot_command_latency_seconds_bucket[5m])))
# קצב אופרטציות DB לפי operation (5m)
sum by (operation) (rate(codebot_db_requests_total[5m]))
# P95 לזמן DB (5m)
histogram_quantile(0.95, sum by (operation, le) (rate(codebot_db_latency_seconds_bucket[5m])))
מטריקות OpenTelemetry (אם זמינות)
בעת שימוש ב־observability_instrumentation.@traced נרשמות המטריקות הבאות:
request.duration(Histogram) — משך פעולה בשניותerrors.total(Counter) — ספירת שגיאותrequests.active(UpDownCounter) — מספר בקשות פעילות
דוגמאות PromQL
# שיעור שגיאות
rate(errors_total[5m])
# P95 לזמן פעולה
histogram_quantile(0.95, rate(operation_latency_seconds_bucket[5m]))
# שיעור שגיאות לבקשות HTTP
sum by (status) (rate(http_requests_total{job="webapp"}[5m]))
# P90 למשכי פעולות ידניות דרך OTel
histogram_quantile(0.90, sum by (le) (rate(request_duration_bucket{job="webapp"}[10m])))
Tracing ב-Grafana
הוגדר datasource מסוג
Jaegerתחתdocker/grafana/provisioning/datasources/prometheus.yml(URL:http://jaeger:16686).ניתן לחפש שירותים
code-keeper-webapp/code-keeper-botולצלול ל-spans שנרשמים דרך@traced.
SLO/SLI לדוגמה
זמינות שירות API: 99.9% חודשית
זמן תגובה P95 לחיפוש: ≤ 1.5s
שיעור שגיאות חיפוש: ≤ 1%
התראות (Prometheus alerting rules)
ניתן להוסיף כללים לקובץ הכללים של Prometheus:
groups:
- name: codebot-webapp
rules:
- alert: HighErrorRate
expr: sum(rate(errors_total[5m])) / sum(rate(http_requests_total[5m])) > 0.05
for: 10m
labels:
severity: warning
annotations:
summary: "שיעור שגיאות גבוה"
description: ">5% שגיאות ב־10 הדקות האחרונות"
- alert: SlowSearchP95
expr: histogram_quantile(0.95, rate(search_duration_seconds_bucket[5m])) > 1.5
for: 15m
labels:
severity: warning
annotations:
summary: "חיפוש איטי (P95)"
description: "P95 לזמן חיפוש גבוה מ־1.5s"