צינורות רישום: ELK ולוקי
1) מדוע ומתי: מטרות כריתת עצים
תאוצת דבאג, לאחר המוות, בקרת SLO/SLA.
אבטחה וביקורת: עקבות של גישה, חריגות, חקירות.
מדדים עסקיים: המרה, זרימת תשלום, שגיאות PSP, התנהגות משתמש.
ציות: אחסון, מיסוך מח "ש, מדיניות שימור, אחיזה משפטית.
סוגים של יומנים: יישום, תשתית (kubelet, kube-proxy, CNI, indress), רשת, ביקורת, תשלום, אירועי אינטרנט, Nginx/Envoy, מסד נתונים.
2) ארכיטקטורה ברמה גבוהה
אפשרות א ': ELK
יצרנים # Logshipper (Filebeat/Fluent Bit/Vector) # Logstash/Beats קלט # Elasticsearch = קיבנה/Astebana
אפשרות ב ': לוקי
יצרנים # Trafftail/Fluent Bit # מפיץ לוקי/egester/querier # Grafana/Assettles
היברידי
ELK לחיפוש טקסט/פקט מלא, לוקי לאחסון סקלרי בעלות נמוכה, ושאילתות מהר כמו גרף; מתאם עם מדדים/עקבות בגרפנה.
3) זרימת מידע ורמות עיבוד
1. אוסף: קבצי זנב bette, יומן, syslog, מכולות stadout, HTTP.
2. העשרה: נורמליזציה של חותמת זמן, מארח/תרמיל/שם, env (פרוד/שלב), שחרור, ביצוע SHA, עקבות/מרחב זיהוי.
3. Pressing: JSON # שדות שטוחים; גרוק/רגקס; תבניות נגינקס/שליח; תוכניות תשלום (קוד שגיאות PSP).
4. סינון/עריכה: חיתוך PII (PAN, CVV, דואר אלקטרוני, כתובות), סודות, אסימונים.
5. ניתוב: על ידי דייר/שירות/רמת לוג; חם/חם/קר; לאחסון S3/object.
6. אחסון ושמירה: מדיניות TTL לפי שיעור נתונים.
7. גישה/אנליטיקה/התראות.
4) ELK: פתרונות מפתח
4. 1 לוגסטאש/פעימות
השתמש ב-Beats/Fluent Bit בצמתים לקוטב קל, Logstash כ-ETL מרכזי (גרוק, לנתח, לעבור מוטציה, geoip, לתרגם).
בריכות לוגסטאש: בלע-ETL, אבטחה-ETL, תשלומים-ETL - לבודד עומסים.
4. 2 Elasticsearch
מוקד על ~ 20-50 GB לחתיכה; להימנע מפיצוץ ”שבר”.
אסטרטגיה אינדקס: 'logs- <דייר> - <שירות> - YYYY. מ. מ. ד 'או זרמי נתונים; רולובר על ידי גודל/זמן.
- אס-אס-די, 1-7 ימים; חם: HDD, 7-30 ימים; קר: נפח; מינימום עלות עם גישה איטית יותר.
- מפיות - שדות קשיחים, להגביל את שדה התעופה וליצור שדות דינמיים.
- מטמון ושאלות: מסננים על ידי שדות מילות מפתח, אגרגטים - בצורה מסודרת; פין-טו-טו לחיפוש בתדר גבוה.
4. 3 קיבאנה
חללים לריבוי דירות.
חיפושים שמורים, עדשה/TSVB, מדדי סף/התראה.
RBAC על ידי תבניות אינדקס ('logs-tenant').
5) לוקי: החלטות מפתח
5. מודל תווית 1
תוויות הן אינדקס "של לוקי. "השתמש בקרדינליות נמוכה:" אשכול "," שם "," אפליקציה "," רמה "," env "," דייר ".
שדות עם קרדינליות גבוהה (uid, request_id) - ברצף; לאחזר '| =', '| json', '| regexp' כאשר נבדק דרך LogQL.
5. 2 רכיבים
שליח: stadout, קבצים, journald; פרזרים (JSON, רגקס, cri).
מפיץ/אינגסטר/Querier/Query-frontend: מדד לפי תפקיד; מבקש מזומנים.
אחסון אובייקטים (S3/GCS/MinIO) עבור אחסון ארוך טווח של רישומי נתחים.
5. 3 טכניקות LogQL
fast grep: ”[אפליקציה =” תשלומים, ”level =” שגיאה ”| =” נדחה ””
הקוד ג' סון =” 5xx” פרק זמן פתיחת העטיפה (” avg”)
קורלציה עם מדדים: 'rate (' אפליקציה = "nginx" | = "200" [ 5m ]) "
6) ELK נגד לוקי השוואה (בקיצור)
חיפוש/צבירה: ELK חזק יותר עבור טקסט מלא מורכב ושאילתות עם פנים; לוקי, כמו גרפ, מהיר וזול.
עלות: לרוב לוקי זול יותר בכרכים גדולים יותר (אחסון אובייקטים + אינדקס קטן יותר).
מורכבות תפעולית: ELK דורש משמעת במדדים/ILM, Javu-Hips; לוקי - תווית דיסציפלינות.
מתאם עם מטריצות/עקבות: לוקי משתלב באופן טבעי עם ערימת Grafana/Otel; ELK גם יודע איך, אבל לעתים קרובות יותר באמצעות אינטגרציה.
7) בטיחות וציות
מהדורת PII בקצה (שולח): מסכה פאן, דואר אלקטרוני, טלפון, כתובות, אסימונים.
TLS במעבר, MTLS בין סוכנים ואוטובוסים.
RBAC: אינדקסים/תוויות לכל דייר; בידוד של מרחבים/מרחבים נימיים.
סודות היגיינה: משתני סביבה ללא סודות, מנהלים סודיים.
אחיזה חוקית: מנגנון הקפאת מקטע/אינדקס; לכתוב פעם אחת לתקופות שנויות במחלוקת.
מחיקה/שימור: מדיניות TTL על ידי מחלקת נתונים (prod/statually/propriduction/audit).
רישום שבילי ביקורת גישה.
8) אמינות ותפקוד
חציצה ותרמיל גב: קבצים/דיסקים מקומיים עבור סוכנים; נסיגות עם גיבוי מעריכי.
idempotency: ”inbleged _ id'/” log _ id' fields כדי למנוע שכפולים במהלך שכפולים.
HA: מינימום 3 צמתים עבור Loki ES Masters/Ingesters; זיקה אנטיביוטית היא AZ.
מכסות וגבולות קצב על ידי דייר/שירות; הגנה מפני כריתת עצים ”סופות”.
סכימת רמת רישום: ”שגיאה” מוגבלת, ”DEBUG” רק באופן זמני באמצעות דגלים דינמיים.
9) ביצועים וכיוונון
ELK:- JVM hap 50% RAM (אבל delate ~ 30-32 GB per node), מטמון דף חשוב.
- גלגול חכם (20-50 GB/shard), רענון _ interval עבור אינדקסים בולטים.
- בלוגסטאש, הימנע מגרגר ”כבד”; אם אפשר, ג 'סון נכנס למקור.
- התווית הנכונה היא המפתח למהירות.
- נתחים גדולים = אחסון זול יותר, אבל זיכרון יקר יותר באינגסטר; איזון.
- שאילתה-פרונטנד + מטמון (Meme/Redis) לבקשות חוזרות ונשנות.
10) FinOps עבור יומנים (עלות)
הפחתת הקרדינליות של שדות/תוויות.
דגימת DEBUG ו ”מתגי יומן דינמיים”.
סיבוב: קצר חם, ארוך קר להתנגד.
שכפול והודעות מאוחדות (אצווה).
ארכיון כמעט ולא השתמש ביומנים לשיעורי אחסון זולים.
לוח מחוונים ערך: נפח/זרמי נתונים/תוויות/אינדקסים/דיירים.
11) יכולת תצפית 3-in-1
Trace-ID/Span-ID לכל יומן (תוכנה בינונית על שערי API ושירותים).
OpenTelemetry: הקשר יחיד; יצואנים לטמפו/יגר, מדדים לפרומתאוס/מימיר, יומנים ללוקי/ELK.
תרחישים מהירים: "התראה באמצעות מטרי" קפיצה אל תוך היומנים המתאימים "." קפיצה אל המסלול ".
12) עמידות ובידוד
בידוד מבוסס שם (תוויות K8s), תבניות אינדקס נפרדות/תוויות 'דייר'.
הפרדת התראות/לוחות מחוונים/מפגר על ידי דייר.
חיוב צריכה: נפח בלע, אחסון, בקשות.
13) ניטור ו ־ SLO עבור המסוע עצמו
SLO לבלוע: "99. 9% יומנים נמסרו חיפוש SLO: ”שאילתות p95 <Y second”. 14) תוכניות פריסה טיפוסיות מנוהל: Elasticsearch Service/Opensearch, Grafana Cloud Loki. 15) דוגמאות הגדרות 15. 1 פרומטייל (K8s, CRI JSON) 15. 2 לוגסטאש (בלע ומסווה) 16) התראות ולוחות מחוונים (תבניות) rate (”api”, רמה = ”שגיאה”) [ 5 מטר ]> סף ”Pagre Duty/Telegram”. 17) בדיקות איכות (רישום QA) חוזי רישום: פורמט JSON, שדות דרושים (”ts',” level ”,” service ”,” env ”,” trace _ id', ”msg”). 18) שגיאות תכופות ותבניות אנטי Loki תוויות עם קרדינליות גבוהה (”user _ id',” request _ id') = פיצוץ של זיכרון. 19) תוכנית יישום (איטרציות) 1. MVP: סוכנים + 1 צינור (יישומים), לוחות מחוונים בסיסיים, מהדורת PII. 20) רשימת השיגור לייצור 21) מיני ־ FAQ במה לבחור, אייל או לוקי?
מדדים טכניים: עומק תור, יומנים שהושמטו, קצב עיבוד חוזר, שיעור שגיאות פרסר, כשל בלע/ES.
המארח את עצמו: StatfestSets for ES/Loki, אנטי-זיקה עבור AZ, Pers Volums, אחסון אובייקטים.
סוכני קצה (יישומים באזורים): ערוץ חוצץ מקומי + TLS לבלע המרכזי.yaml scrape_configs:
- job_name: kubernetes-pods kubernetes_sd_configs:
- role: pod pipeline_stages:
- cri: {}
- json:
expressions:
level: level msg: message trace: trace_id
- labels:
level:
app:
namespace:
- match:
selector: '{namespace="prod"}'
stages:
- regex:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
- replace:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
replace: '[REDACTED_PAN]'
relabel_configs:
- action: replace source_labels: [__meta_kubernetes_pod_label_app]
target_label: app
- action: replace source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- action: replace source_labels: [__meta_kubernetes_pod_node_name]
target_label: noderuby input {
beats { port => 5044 }
}
filter {
json { source => "message" skip_on_invalid_json => true }
mutate { add_field => { "env" => "%{[kubernetes][labels][env]}" } }
PII mutate {
gsub => [
"message", "\b[0-9]{12,19}\b", "[REDACTED_PAN]",
"message", "(?i)(authorization: Bearer)([A-Za-z0-9\.\-_]+)", "\1[REDACTED_TOKEN]"
]
}
}
output {
elasticsearch {
hosts => ["https://es-hot-1:9200","https://es-hot-2:9200"]
index => "logs-%{[fields][tenant]}-%{[app]}-%{+YYYY. MM. dd}"
ilm_enabled => true ssl => true cacert => "/etc/ssl/certs/ca. crt"
user => "${ES_USER}"
password => "${ES_PASS}"
}
}
5xx ספלאש בנגינקס/שליח; טיפה לבלוע סוכנים; צמיחת החיפוש החבוי.
רישומי לינטר במצ "ח: לאסור שדות חדשים עם קרדיליות גבוהה ללא הסכם.
שירותי הכנרת: דור של יומני התייחסות לגילוי מוקדם של נסיגות.
שדות דינמיים ב-ES ללא מיפוי ”פיצוץ אינדקס”.
DeBUG במכירה "לנצח. "תדליק בדגלים ועם טי-טי-אל.
היעדר תיקוני מח "ש.
צינור ”מונוליטי” נפוץ לכל דבר - מקטעים טובים יותר בתחום.
2. הרחבה: רשת/רישומי מידע, התראות SLO, קורלציה עם מסלולים.
3. FinOps: שימור מטריצות, דו "ח עלות, אופטימיזציה של תווית/אינדקס.
4. מרובה דיירים: רווחים, RBAC, חיוב צריכה.
5. אמינות: הא, תרגילי אסונות, אחיזה משפטית.[ ] בפורמט JSON ונדרשו תחומים בכל השירותים.[ ] מח "ש מסווה על סוכן בלע.[ ] שימור/ILM או מדיניות חיים-דלי.[ ] RBAC/רווחים/דיירים.[ ] SLO בלע/חיפוש והתראות.[ ] יומני הקנריים ועומס ריצת מבחן.[ ] ערך לוחות מחוונים ודיווח על בעלי שירות.[ ] Runbooks: ”מה לעשות אם בלע ירד/לחפש איטי/שברי אדום”.