תצפית: יומנים, מדדים, עקבות
תצפית: יומנים, מדדים, עקבות
1) למה אתה צריך את זה
היכולת של מערכת לענות על שאלות לא מתוכננות לגבי מצבה. הוא מסתמך על שלושה אותות עיקריים:- מדדים הם אגרגטים קומפקטיים עבור SLI/SLO והתראת תסמין.
- עקבות - שרשראות שאילתה מקצה לקצה.
- יומנים - אירועים מפורטים לחקירות וביקורת.
מטרה: RCA מהיר, התראות מונעות ואמינות מנוהלת במסגרת תקציב שגיאה.
2) עקרונות ארכיטקטורה
הקשר יחיד: בכל מקום נזרוק ”trace _ id',” span _ id', ”terant _ id',” request _ id', ”user _ agent”, ”client _ ip _ hash”.
סטנדרטים: OpenTelemetry (OTEL) עבור SDK/סוכנים, פורמט לוג JSON (קנוני, עם סכימה).
תסמינים> גורמים: התראה על ידי תסמינים של משתמש (latency/images), לא על ידי מעבד.
תקשורת אותות: מהמטריקה של x למופת * ועד לוגים ספציפיים על ידי "trace _ id'.
אבטחה ופרטיות: מח "ש מסווה יומנים, הצפנה במעבר/במנוחה, יומני ביקורת בלתי ניתנים לשינוי.
ריבוי דירות: הפרדה בין שמות/מפתחות/מדיניות.
3) טקסונומיה אותות ותכניות
3. 1 מדדים
אדום (קצב, שגיאות, משך) לשירותים ושימוש (ניצול, רוויה, שגיאות) לתשתית.
התמודדות: מונה, מד, היסטוגרמה/סיכום. עבור איחור, היסטוגרמה עם דליים קבועים.
מופת: התייחסות ל "עקבות _ id' בפחי היסטוגרמה" חמים ".
name: http_server_duration_seconds labels: {service, route, method, code, tenant}
type: histogram buckets: [0. 01, 0. 025, 0. 05, 0. 1, 0. 25, 0. 5, 1, 2, 5]
exemplar: trace_id
3. 2 עקבות
Span = פעולה עם ”שם”, ”התחלה/סוף”, ”תכונות”, ”אירועים”, ”סטטוס”.
הקשר W3C עבור סובלנות.
דגימה: בסיסית (ראש) + דינמית (זנב) + כללים של ”חשיבות” (שגיאות, p95 גבוה).
3. 3 יומנים
רק JSON מובנה; רמות: DEBUG/INFO/להזהיר/שגיאה.
שדות נדרשים הם ”ts _ utc”, ”level”, ”message”, ”trace _ id',” span _ id', ”terant _ id',” env ”,” service ”,” region ”,” host', ”host',” labels'.
סודות, אסימונים, פאן, סיסמאות. PII - אסימון/רעול פנים בלבד.
json
{"ts":"2025-10-31T12:05:42. 123Z","level":"ERROR","service":"checkout","env":"prod",
"trace_id":"c03c...","span_id":"9ab1...","tenant_id":"t-42","route":"/pay",
"code":502,"msg":"payment gateway timeout","retry":true}
4) איסוף ותחבורה
argans/exports (daemonset/sidecar) = חוצץ על צומת האוטובוסים (TLS/mTLS) = חנות האותות.
דרישות: לחץ אחורי, מגשים מחדש, שכפול, הגבלת קרדינליות (תוויות!), הגנה מפני ”סופות יומן”.
Metrics: למשוך (Prometheus-מתאים) או לדחוף באמצעות OTLP.
עקבות: OTLP/HTTP (gRPC), דגימות זנב על האספן.
יומנים: אוסף מקומי (journal/docker/stdout).
5) אחסון ושימור (נשמר)
Metrics: hot TSDB 7-30 ימים (עם downsample), צבירה לתקופה ארוכה יותר (90-365 ימים).
עקבות: 1-7 ימים מלאים, אז צבירה/מרווחים של שירותים ”חשובים”; חנות אינדקסים על ”שירות”, ”סטטוס”, ”טעות”.
יומנים: אינדקס חם 7-14 ימים, חם 3-6 חודשים, ארכיון עד 1-7 שנים (ציות). ביקורת חשבונות - תולעת.
אופטימיזציה עלויות: ירידה במחירון, סינון DEBUG במכירות, מכסות תווית, דגימת רצועות.
6) SLI/SLO, כוננות וחובה
SLI: זמינות (% בקשות מוצלחות), latency (p95/p99), נתח 5xx, רעננות נתונים, נתח של עבודות מוצלחות.
SLO: המטרה על SLI (למשל. 99. 9% הצלחה של 400 ms).
תקציב שגיאה: 0. 1% ”מרווח לטעות” = כללי בדיוני/ניסויים.
- התראה גבוהה (http_server_duration_seconds{route="/pay"})> 1's 5 '.
- קצב http_requests_total{code=~"5.."}[5m (] http_requests_total[5m]) )/קצב (0> 02`.
- התראות סילו (CPU/Disk) - רק כעזר, ללא זימון.
7) מתאם אותות
המטרי הוא "אדום" * לחץ על examplar * מבט ספציפי של "trace _ id' id' at the" slow "span _ open the logs by a trace _ id'.
מתאם עם שחרור: תכונות 'גרסה', 'image _ sha', 'feature _ flag'.
עבור נתונים/ETL: ”dataset _ urn',” run _ id', קישור לשושלת (ראה המאמר המתאים).
8) דוגמיות וקרדינליות
Metrics: להגביל תוויות (ללא ”user _ id',” session _ id'); מכסות/אימות ברישום.
עקבות: לשלב דגימת ראש (בקלט) ודגימת זנב (באספן) עם הכללים: ”כל מה שהוא 5xx, p99, שגיאות - 100%”.
יומנים: רמות וחנק; לשגיאות חוזרות תכופות - אירועים מצטברים (דדופ מפתח).
yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_code: ERROR rate_allocation: 1. 0
- type: latency threshold_ms: 900 rate_allocation: 1. 0
- type: probabilistic hash_seed: 42 sampling_percentage: 10
9) ביטחון ופרטיות
בטרנזיט/במנוחה: הצפנה (TLS 1. 3, AEAD, KMS/HSM).
חיטוי לפני משלוח, אסימון, מיסוך.
גישה: ABAC/RBAC לקריאה; הפרדת המפיקים/הקוראים/מנהלים תפקידים.
ביקורת: רישום לא משתנה של גישה ליומנים/עקבות; יצוא - בצורה מוצפנת.
ריבוי דיירות: שמות/תוויות דייר עם מדיניות; בידוד מפתח הצפנה.
10) פרופילי הגדרות (שברים)
פרומתאוס (HTTP Metrics + התראה):yaml global: { scrape_interval: 15s, evaluation_interval: 30s }
scrape_configs:
- job_name: 'app'
static_configs: [{ targets: ['app-1:8080','app-2:8080'] }]
rule_files: ['slo. rules. yaml']
סלו. חוקים. יאמל (דוגמה אדומה):
yaml groups:
- name: http_slo rules:
- record: job:http_request_duration_seconds:p99 expr: histogram_quantile(0. 99, sum(rate(http_server_duration_seconds_bucket[5m])) by (le,route))
- alert: HighLatencyP99 expr: job:http_request_duration_seconds:p99{route="/pay"} > 1 for: 5m
OpenTelemetry SDK (פסאודוקודה):
python provider = TracerProvider(resource=Resource. create({"service. name":"checkout","service. version":"1. 8. 3"}))
provider. add_span_processor(BatchSpanProcessor(OTLPExporter(endpoint="otel-collector:4317")))
set_tracer_provider(provider)
with tracer. start_as_current_span("pay", attributes={"route":"/pay","tenant":"t-42"}):
business logic pass
רישומי יישומים (Stdout JSON):
python log. info("gw_timeout", extra={"route":"/pay","code":502,"trace_id":get_trace_id()})
11) נתונים/ETL וזרימה
SLI לנתונים: רעננות (max lag), שלמות (שורות נגד ציפייה), ”איכות” (validators/duplicates).
התראות: דילוג על חלונות, פיגור צרכני, צמיחה של DLQ.
קורלציה: ”run _ id',” dataset _ urn', מאורעות שושלת; עקבות לצינורות (מרווח לכל אצווה/מחיצה).
קפקא/NATS: יצרן/מדדים צרכניים, לג/כישלון; עקבות על ידי כותרות (כולל 'עקבות').
12) פרופיל ו ־ eBPF (אות נוסף)
נתיבים חמים ברמה נמוכה מעבד/אלוק/IO; פרופילים לכל תקרית.
טלמטריה של EBPF (עיכובי רשת, DNS, שיחות מערכת) קשורה ל- "trace _ id'/PID.
13) בדיקת יכולת תצפית
חוזה איתות - בודק את הייצוא של מדדים/תוויות/היסטוגרמות למודיע.
גשושיות סינתטיות: תרחישי רום/לקוחות סימולטניים עבור סלים חיצוני.
תרגילי כאוס/אש: ניתוק תלות, השפלה - אנחנו מסתכלים איך התראות ומשרתים מגיבים.
בדיקת פוסט-פריסה כי נקודות קצה חדשות יש מדדים ועקבות.
14) בקרת עלות ונפח
תקציבים לפי אות/פקודה; לוח מחוונים ”עלות לכל אות”.
קרדינליות תחת תקציב (SLO עבור קרדינליות), מגבלות על תוויות חדשות.
ירידות, מצגות כיתת נתונים, ארכיונים קרים ותולעת לביקורת.
15) מבצע ו ־ SLO של פלטפורמת יכולת התצפית
פלטפורמה SLO: 99. 9% מהבלעים המוצלחים; עיכוב למדד המטרי 30 s, יומנים 2 min, עקבות 1 min.
התראות פלטפורמה: הזרקת פיגור, ירידה בצמיחה, שגיאת חתימה/הצפנה, חוצץ עודף.
ד "ר/הא: שטח מרובה, שכפול, גיבויים בתצורה/כלל.
16) רשימות בדיקה
לפני המכירה:[ ] בכל מקום 'trace _ id'/' span _ id נזרק; יומני JSON עם תרשים.
[ ] מדדי RED/USE עם היסטוגרמות; יישור לדוגמה.
[ ] דגימת זנב מופעלת; חוקי 5xx/p99 = 100%.
[ ] התראות על ידי תסמינים + Runybooks; שעות שקטות/אנטי-דש.
[ ] חיטוי PII; הצפנה במנוחה/במעבר תולעת לביקורת.
[ ] החזרה ותקציבים לכרכים/קרדינליות.
מבצע:
[ ] כוננות חודשית (רעש/דיוק), סף כוונון.
[ ] תקצוב שגיאות דו "ח ופעולות שננקטו (fichfreeze, התקשות).
[ ] בדוק את לוח המחוונים/לוג/עקבות ציפויים לנתיבים קריטיים.
[ ] תקריות אימון ועדכוני ריצה.
17) Runbook 'edition
RCA: p99/עליית שכר
1. פתח לוח מחוונים אדום עבור 'קופה'.
2. עבור למופת * מסלול איטי * חושף ”תוחלת צרה” (למשל. 'Gattway. call').
3. Open logs by 'trace _ id' @ view timeous/reprays.
4. אפשר הגבלת תכונת rollback/RPS, הודע לבעלי התלות.
5. לאחר הייצוב - RCA, כרטיסי אופטימיזציה, מבחן השמעה.
1. SLI ”רעננות” אדומה = track gok = מגרש כושל.
2. בדוק יומן ברוקר/DLQ, שגיאות חיבור.
3. התחל בעיבוד מחדש, הודע לצרכנים (BI/product) באמצעות ערוץ סטטוס.
18) שגיאות תכופות
יומנים ללא סכימה וללא "trace _ id'. החקירות מתעכבות לפעמים.
התראות על תשתית במקום תסמינים. קריאה הולכת ”לחלב”.
הקרדינליות חסרת הגבולות של המדדים. פיצוץ עלויות וחוסר יציבות.
כל העקבות 100%. יקר ומיותר; אפשר דגימה חכמה.
PII/סודות ביומנים. כולל חומרי חיטוי ורשימות אדומות.
תכונות ”אילם”. קוד חדש ללא מדדים/עקבות/יומנים.
19) FAQ
ש: האם אני צריך לאחסן את הטקסט הגולמי של היומנים?
א ': כן, אבל עם שימור וארכיונים; עבור התראות ותראות, אגרגטים מספיקים. ביקורת חשבונות בתולעת.
קיו: מה לבחור עבור עקבות - ראש או זנב?
א ': קומביין: ראש-הסתברות לבסקוט + כללי זנב עבור שגיאות וסטיות.
Q: כיצד אני מקשר בין מדדי משתמש לבין מדדים טכניים?
A: באמצעות 'trace _ id' ותוויות עסקיות (' route ',' trant ',' plan '), וכן באמצעות אירועי מוצר (המרות) עם קורלציה למסלולים.
קיו: איך לא לטבוע בהתראות?
A: הכה בתסמינים, הזן שעות שקטות, שכפול, קיבוצים, עדיפות SLO ובעלים לפי ברירת מחדל לכל התראה.
- ”ביקורת ויומנים בלתי ניתנים לשינוי”
- ”בהצפנת מעבר/במנוחה”
- ”ניהול סודי”
- ”מקור נתונים (לינאז ')”
- ”פרטיות בעיצוב (GDPR)”
- ”ערובות למשלוחים”