خطوط أنابيب السجل: ELK و Loki
1) لماذا ومتى: أهداف قطع الأشجار
إمكانية الرصد و RCA: تسارع Debag وتشريح الجثة ومراقبة SLO/SLA.
الأمن ومراجعة الحسابات: آثار الوصول، والشذوذ، والتحقيقات.
مقاييس الأعمال: التحويل، تدفق الدفع، أخطاء PSP، سلوك المستخدم.
الامتثال: التخزين، إخفاء PII، سياسات الاحتفاظ، Legal Hold.
أنواع السجلات: التطبيق، البنية التحتية (kubelet، kube-proxy، CNI، الدخول)، الشبكة، التدقيق، الدفع، أحداث الويب، Nginx/Envoy، قاعدة البيانات.
2) هياكل معمارية رفيعة المستوى
الخيار أ: ELK
المنتجون → Logshipper (Filebeat/Fluent Bit/Vector) → Logstash/Beats input → Elasticsearch → Kibana/Алертинг
الخيار ب: لوكي
المنتجون → Promtail/Pluent Bit → Loki distributor/ingester/querier → Grafana/Алертинг
هجين
ELK للبحث عن النص الكامل/الوجه، Loki للتخزين القابل للتطوير منخفض التكلفة، والاستفسارات السريعة الشبيهة بالرسم البياني ؛ الارتباط مع المقاييس/الآثار في غرافانا.
3) مستويات تدفق البيانات ومعالجتها
1. المجموعة: ملفات ذيل البايت، المجلة، syslog، حاويات stdout، HTTP.
2. الإثراء: تطبيع الطابع الزمني، المضيف/الكبسولة/مساحة الاسم، env (prod/stage)، الإصدار، الالتزام SHA، التتبع/span id.
3. الإعراب: JSON → الحقول المسطحة ؛ grok/regex ؛ أشكال Nginx/المبعوث ؛ مخططات الدفع (رموز خطأ PSP).
4. الترشيح/التحرير: قطع PII (PAN، CVV، البريد الإلكتروني، العناوين)، الأسرار، الرموز.
5. المسار: حسب مستوى المستأجر/الخدمة/السجل ؛ الساخنة/الدافئة/الباردة ؛ إلى التخزين S3/object.
6. التخزين والاحتفاظ: سياسة TTL حسب فئة البيانات.
7. الوصول/التحليلات/التنبيهات.
4) ELK: الحلول الرئيسية
4. 1 لوجستاش/دقات
استخدم Beats/Fluent Bit على العقد لسهولة انتقاء، Logstash as central ETL (grok، discuct، mutate، geoip، translate).
برك Logstash: interst-ETL، security-ETL، payments-ETL - لعزل الأحمال.
4. 2 مرن
الشحن: التركيز على ~ 20-50 جيجابايت لكل قطعة ؛ تجنب «انفجار شظية».
استراتيجية الفهرس: "logs- <المستأجر> - <الخدمة> - YYYY. MM. DD 'أو تدفقات البيانات ؛ التمديد حسب الحجم/الوقت.
- الساخنة: SSD، 1-7 أيام ؛ دافئ: HDD، 7-30 يومًا ؛ الباردة: حجمية ؛ مجمدة: الحد الأدنى للتكلفة مع تباطؤ الوصول.
- الخرائط - الحقول الصلبة، وتقييد fieldata، وإنشاء حقول ديناميكية.
- المخبأ والاستفسارات: المرشحات حسب حقول الكلمات الرئيسية، المجاميع - بدقة ؛ دبوس إلى ساخن للبحث عالي التردد.
4. 3 كيبانا
مساحات للإيجار المتعدد.
عمليات البحث المحفوظة، عدسة/TSVB، مقاييس العتبة/التنبيه.
RBAC حسب أنماط الفهرس (logs-tenant-).
5) لوكي: القرارات الرئيسية
5. 1 نموذج التسمية
التسميات هي فهرس لوكي. "استخدم الكاردينالية المنخفضة:" العنقود "،" مساحة الاسم "،" التطبيق "،" المستوى "،" env "،" المستأجر ".
الحقول ذات الكرازة العالية (أويد، request_id) - على التوالي ؛ استرجاع '| ='، '| json'، '| regexp' عند الاستفسار من خلال LogQL.
5. 2 مكونات
Promtail: сбор stdout, files, journald; المحللون (JSON، regex، cri).
الموزع/Ingester/Querier/Query-frontend: التوسع حسب الدور ؛ طلب التخزين المؤقت.
تخزين الكائنات (S3/GCS/MinIO) للتخزين الطويل الأجل لسجلات القطع.
5. 3 تقنيات LogQL
Fast grep: '{app = "payments', level =" خطأ "} | =" رفض "
Парсинг JSON: ' {app =» api»} | json | code =» 5xx» | unwrap term | avg ()'
الارتباط بالمقاييس: 'المعدل ({app = «nginx»} | = «200» [5 م])'
6) مقارنة ELK vs Loki (باختصار)
البحث/التجميع: تعتبر ELK أقوى بالنسبة للاستفسارات المعقدة عن النص الكامل والأوجه ؛ Loki - مثل grep، سريع ورخيص.
التكلفة: غالبًا ما يكون Loki أرخص على الأحجام الأكبر (تخزين الكائن + مؤشر أصغر).
التعقيد التشغيلي: يتطلب التعليم المهني للجميع الانضباط في المؤشرات/ILM، Javu-hips ؛ Loki - تخصصات التسمية.
الارتباط مع المقاييس/الآثار: يتكامل لوكي بشكل طبيعي مع مكدس Grafana/OTel ؛ تعرف ELK أيضًا كيف، ولكن في كثير من الأحيان من خلال التكامل.
7) السلامة والامتثال
إصدار PII على الحافة (الشاحن): قناع PAN، البريد الإلكتروني، الهاتف، العناوين، الرموز.
TLS أثناء العبور، mTLS بين الوكلاء والحافلات.
المكتب الإقليمي لآسيا والمحيط الهادئ: الفهارس/العلامات لكل مستأجر ؛ عزل المساحات/المساحات.
نظافة الأسرار: متغيرات بيئية بدون أسرار، مديرون سريون فرديون.
الحجز القانوني: آلية تجميد القطاعات/المؤشرات ؛ مرة واحدة لفترات متنازع عليها.
الحذف/الاحتفاظ: سياسات TTL حسب فئة البيانات (برود/دولة/مدفوعات/مراجعة حسابات).
سجل الوصول مسارات التدقيق.
8) الموثوقية والإنتاجية
التخزين المؤقت والضغط الخلفي: ملفات/أقراص محلية للوكلاء ؛ التراجع مع التراجع الأسي.
الخصوصية: حقول «infest _ id »/« log _ id» لتجنب التكرار أثناء النسخ المكررة.
HA: 3 عقد على الأقل لأساتذة/مبتدعي Loki ES ؛ مكافحة التقارب по AZ.
الحصص وحدود الأسعار حسب المستأجر/الخدمة ؛ الحماية من «العواصف» قطع الأشجار.
مخطط مستوى السجل: «خطأ» محدود، «DEBUG» فقط مؤقتًا من خلال الأعلام الديناميكية.
9) الأداء والضبط
ELK:- JVM كومة 50٪ ذاكرة الوصول العشوائي (ولكن ≤ ~ 30-32 جيجابايت لكل عقدة)، وذاكرة التخزين المؤقت للصفحة مهمة.
- انقلاب ذكي (20-50 جيجابايت/شارد)، «تحديث _ فاصل زمني» ↑ لأصغر الفهارس.
- في Logstash، تجنب الأخدود «الثقيل» ؛ إذا أمكن، يقوم JSON بتسجيل الدخول إلى المصدر.
- مجموعة الملصقات الصحيحة هي مفتاح السرعة.
- قطع كبيرة → تخزين أرخص، ولكن ذاكرة أكثر تكلفة في ingester ؛ التوازن.
- Query-frontend + cache (meme/Redis) للطلبات المتكررة.
10) FinOps للسجلات (التكلفة)
تناقص كاردينية الحقول/الملصقات.
أخذ عينات DEBUG و «مفاتيح تسجيل» ديناميكية.
الدوران: قصير ساخن، طويل بارد للاعتراض.
التفريغ والرسائل الموحدة (دفعة).
نادرًا ما تستخدم الأرشفة السجلات لفصول التخزين الرخيصة.
لوحة متابعة القيمة: الحجم/تدفقات البيانات/الملصقات/الفهارس/المستأجرين.
11) إمكانية الرصد 3 في 1
تتبع المعرف/المعرف الشامل لكل سجل (البرامج الوسطى على بوابات وخدمات واجهة برمجة التطبيقات).
OpenTelemetry: سياق واحد ؛ المصدرين إلى Tempo/Jaeger، المقاييس إلى Prometheus/Mimir، سجلات إلى Loki/ELK.
السيناريوهات السريعة: «يقفز التنبيه بمقياس → إلى السجلات المقابلة → يقفز إلى المسار».
12) تعدد الإيجارات والعزلة
العزل القائم على فضاء الأسماء (ملصقات K8s)، أنماط الفهرس/العلامات المنفصلة «المستأجر».
فصل التنبيهات/لوحات القيادة/الريتنشنا حسب المستأجر.
فواتير الاستهلاك: حجم الابتلاع والتخزين والطلبات.
13) الرصد و SLO للناقل نفسه
تناول SLO: "99. 9٪ سجلات تم تسليمها Search SLO: «p95 queseries <Y sec». 14) مخططات النشر النموذجية تمت إدارته: Elasticsearch Service/Opensearch، Grafana Cloud Loki. 15) أمثلة التكوين 15. 1 برومتيل (K8s، CRI JSON) 15. 2 لوغستاش (ابتلاع وإخفاء) 16) التنبيه ولوحات القيادة (قوالب) Ошибки واجهة برمجة التطبيقات: 'معدل ({app = «api «، المستوى =» خطأ»} [5 م])> عتبة '→ PagerDuty/Telegram. 17) فحوصات الجودة (سجل الجودة) عقود قطع الأشجار: شكل نظام JSON، الحقول المطلوبة ('ts' و 'level' و' service 'و' env 'و' trace _ id 'و' msg '). 18) الأخطاء المتكررة والأنماط المضادة ملصقات Loki ذات الكاردينالية العالية («المستخدم _ معرف»، «طلب _ معرف») → انفجار في الذاكرة. 19) خطة التنفيذ (تكرارات) 1. أفضل لاعب: وكلاء + خط أنابيب واحد (تطبيقات)، لوحات القيادة الأساسية، إصدار PII. 20) قائمة مرجعية للإطلاق في الإنتاج 21) الأسئلة الشائعة الصغيرة ماذا تختار - ELK أم Loki ؟
المقاييس التقنية: عمق قائمة الانتظار، جذوع الأشجار المتساقطة، معدل إعادة المعالجة، معدل خطأ المحلل، فشل عقدة ingester/ES.
K8s المستضافة ذاتيًا: StatefulSets لـ ES/Loki، ومكافحة التقارب لـ AZ، و PersententVolumes، وتخزين الكائنات.
عوامل الحافة (التطبيقات في المناطق): قناة عازلة محلية + 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 splash in Nginx/Investoy; الانخفاض في تناول العملاء ؛ نمو البحث عن الكمون.
سجلات البطانة في CI: حظر الحقول الجديدة ذات الكاردينالية العالية دون اتفاق.
خدمات الكناري: توليد سجلات مرجعية للكشف المبكر عن الانحدارات.
حقول ديناميكية في ES دون رسم خرائط → «انفجار المؤشر».
DEBUG في البيع "إلى الأبد. "قم بتشغيل الأعلام ومع TTL.
غياب تنقيح مؤشر الاستثمار الدولي.
خط أنابيب «متجانس» شائع لكل شيء - شرائح أفضل حسب المجال.
2. الامتداد: الشبكة/السجلات الداخلية، تنبيهات SLO، الارتباط بالمسارات.
3. FinOps: مصفوفة الاحتفاظ، تقرير التكلفة، التسمية/تحسين الفهرس.
4. متعدد المستأجرين: المساحات، RBAC، فواتير الاستهلاك.
5. الموثوقية: HA، تدريبات الكوارث، Legal Hold.