قابلیت مشاهده: گزارش ها، معیارها، ردیابی ها
قابلیت مشاهده: گزارش ها، معیارها، ردیابی ها
1) چرا شما به آن نیاز دارید
قابلیت مشاهده: توانایی یک سیستم برای پاسخ دادن به سوالات برنامه ریزی نشده در مورد شرایط آن. این به سه سیگنال اصلی بستگی دارد:- معیارها مجموعه ای جمع و جور برای SLI/SLO و هشدار علائم هستند.
- ردیابی - زنجیرهای پرس و جو پایان به پایان.
- سیاهههای مربوط - رویدادهای دقیق برای تحقیقات و ممیزی.
هدف: RCA سریع، هشدارهای پیشگیرانه و قابلیت اطمینان مدیریت شده در بودجه خطا.
2) اصول معماری
تک زمینه: در همه جا ما 'trace _ id'، 'span _ id'، 'tenant _ id'، 'request _ id'، 'user _ agent'، 'client _ ip _ hash' را پرتاب می کنیم.
استانداردها: OpenTelemetry (OTel) برای SDK/عوامل، فرمت ورود JSON (متعارف، با طرح).
علائم> علل: هشدار توسط علائم کاربر (تاخیر/خطاها)، نه توسط CPU.
ارتباط سیگنال: از → متریک به نمونه → به سیاهههای مربوط خاص توسط 'trace _ id'.
امنیت و حریم خصوصی: PII در سیاهههای مربوط، رمزگذاری در حمل و نقل/در حالت استراحت، سیاهههای مربوط به حسابرسی غیر قابل تغییر است.
چند اجاره: جداسازی فضای نام/کلید/سیاست.
3) طبقه بندی و طرح های سیگنال
3. 1 معیارها
RED (نرخ، خطا، مدت زمان) برای خدمات و USE (استفاده، اشباع، خطا) برای زیرساخت.
Типы: شمارنده، سنج، هیستوگرام/خلاصه. برای تاخیر، هیستوگرام با سطل ثابت.
نمونه ها: اشاره به 'trace _ 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 ؛ سطوح: اشکال زدایی/اطلاعات/هشدار/خطا.
فیلدهای مورد نیاز عبارتند از «ts _ utc»، «level»، «message»، «trace _ id»، «span _ id»، «tenant _ id»، «env»، «service»، «region»، «host»، «labels {}».
ممنوع: اسرار، نشانه ها، PAN، کلمه عبور. 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) جمع آوری و حمل و نقل
نمایندگان/صادرکنندگان (daemonset/sidecar) → بافر در گره → bus/ingest (TLS/mTLS) → فروشگاه سیگنال.
مورد نیاز: عقب فشار، retrays، deduplication، محدودیت cardinality (برچسب!)، حفاظت در برابر «طوفان ورود به سیستم».
معیارها: کشش (سازگار با Prometheus) یا فشار از طریق OTLP.
ردیابی: OTLP/HTTP (gRPC)، نمونه های دم بر روی جمع کننده.
Logs: local collection (journal/docker/stdout) → تجزیه کننده → نرمال کننده.
5) ذخیره سازی و نگهداری (لایه ای)
معیارها: TSDB گرم 7-30 روز (با نمونه پایین)، جمع برای یک دوره طولانی تر (90-365 روز).
ردیابی: 1-7 روز کامل، و سپس جمع/دهانه از خدمات «مهم» ؛ فهرست فروشگاه در «سرویس»، «وضعیت»، «خطا».
سیاهههای مربوط: شاخص گرم 7-14 روز، گرم 3-6 ماه، آرشیو تا 1-7 سال (انطباق). حسابرسی - WORM.
بهینه سازی هزینه: downsampling، فیلتر کردن DEBUG در فروش، سهمیه برچسب، نمونه برداری برای آهنگ.
6) SLI/SLO، هشدار و وظیفه
SLI: در دسترس بودن (٪ درخواست های موفق)، تاخیر (p95/p99)، سهم 5xx، طراوت داده ها، سهم مشاغل موفق.
SLO: هدف در SLI (به عنوان مثال 99. 9٪ موفقیت آمیز ≤ 400 میلی ثانیه).
بودجه خطا: 0. 1٪ «حاشیه برای خطا» → قوانین داستان/آزمایش.
- 'ALERT HighLatency' если 'p99 (http_server_duration_seconds{route="/pay"})> 1s' 5мин.
- 'ALERT ErrorRate' если 'rate (http_requests_total{code=~"5.."}[5m] )/rate (http_requests_total[5m])> 0. 02`.
- هشدار سیلو (CPU/دیسک) - فقط به عنوان کمکی، بدون صفحه بندی.
7) همبستگی سیگنال
متریک «قرمز» → کلیک بر روی نمونه → یک «trace _ id» خاص → نگاهی به «slow» span → باز کردن سیاهههای مربوط با همان «trace _ id».
ارتباط با نسخه های منتشر شده: ویژگی های «نسخه»، «image _ sha»، «feature _ flag».
برای داده/ETL: 'dataset _ urn', 'run _ id', link to lineage (مقاله مربوطه را ببینید).
8) نمونه برداری و کاردینالیتی
معیارها: برچسب ها را محدود کنید (بدون 'user _ id'، 'session _ id') ؛ سهمیه/اعتبار در ثبت نام.
ردیابی: ترکیب سر نمونه (در ورودی) و دم نمونه (در جمع کننده) با قوانین: «همه چیز است که 5xx، P99، خطا - 100٪».
سیاهههای مربوط: سطح و خفه کردن ؛ برای خطاهای مکرر مکرر - رویدادهای جمع آوری (کلید dedupe).
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).
PII/اسرار: ضد عفونی کننده قبل از حمل و نقل، نشانه گذاری، ماسک کردن.
دسترسی: ABAC/RBAC برای خواندن ؛ جدایی از تولید/خوانندگان/مدیران نقش.
حسابرسی: ورود بدون تغییر دسترسی به سیاهههای مربوط/آثار ؛ export - به صورت رمزگذاری شده
چند اجاره: فضای نام/برچسب مستاجر با سیاست ؛ جداسازی کلید رمزگذاری.
10) پروفایل های پیکربندی (قطعات)
Prometheus (معیارهای HTTP + هشدار):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 برای داده ها: طراوت (حداکثر تاخیر)، کامل بودن (ردیف در مقابل انتظار)، «کیفیت» (اعتبار سنج/تکراری).
هشدارها: پرش پنجره، تاخیر مصرف کننده، رشد DLQ.
همبستگی: 'run _ id'، 'dataset _ urn'، رویدادهای تبار ؛ آثار برای خطوط لوله (دهانه در هر دسته/پارتیشن).
Kafka/NATS: معیارهای تولید کننده/مصرف کننده، تاخیر/شکست ؛ آثار توسط هدر (از جمله 'traceparent').
12) پروفایل و eBPF (سیگنال اضافی)
مسیرهای سطح پایین CPU/-/IO ؛ پروفیل در هر حادثه
eBPF تله متری (تاخیر شبکه، DNS، تماس های سیستم) به «trace _ id »/PID گره خورده است.
13) تست مشاهده پذیری
قرارداد سیگنال - صادرات معیارها/برچسب ها/هیستوگرام ها را به CI بررسی می کند.
پروب های مصنوعی: سناریوهای RUM/مشتریان شبیه سازی شده برای SLI های خارجی.
هرج و مرج/آتش سوزی: از کار انداختن وابستگی ها، تخریب - ما به چگونگی واکنش هشدارها و شرکت کنندگان نگاه می کنیم.
Smoke in Prod: پس از استقرار بررسی کنید که نقاط پایانی جدید دارای معیارها و ردیابی هستند.
14) کنترل هزینه و حجم
بودجه توسط سیگنال/فرمان ؛ داشبورد «هزینه هر سیگنال».
کاردینالیتی تحت بودجه (SLO برای کاردینالیتی)، محدودیت در برچسب های جدید.
Downsampling، ارائه کلاس داده، آرشیو سرد و WORM برای حسابرسی.
15) بهره برداری و SLO از پلت فرم قابل مشاهده
SLO پلت فرم: 99. 9٪ از مصرف موفقیت آمیز ؛ تاخیر به شاخص متریک ≤ 30 ثانیه، سیاهههای مربوط ≤ 2 دقیقه، آثار ≤ 1 دقیقه.
هشدار پلت فرم: تاخیر تزریق، رشد قطره، خطای امضا/رمزگذاری، سرریز بافر.
DR/HA: چند منطقه، تکرار، پیکربندی/قانون پشتیبان گیری.
16) چک لیست
قبل از فروش:- در همه جا 'ردیابی _ id '/' span _ id' پرتاب می شود ؛ JSON با یک نمودار وارد می شود.
- معیارهای RED/USE با هیستوگرام ؛ نمونه → هم ترازی.
- نمونه برداری دم را فعال کنید ؛ قوانین 5xx/p99 = 100%
- هشدار توسط علائم + Runybooks ؛ ساعت آرام/ضد فلپ.
- ضدعفونی کننده PII ؛ رمزگذاری در حالت استراحت/در حمل و نقل WORM برای حسابرسی.
- Retentions و بودجه برای حجم/cardinality.
- بررسی هشدار ماهانه (سر و صدا/دقت)، آستانه تنظیم.
- گزارش بودجه خطا و اقدامات انجام شده (fichfreeze، سخت شدن).
- بررسی پوشش داشبورد/ورود/ردیابی برای مسیرهای بحرانی.
- حوادث آموزش و به روز رسانی runbook.
17) Runbook'и
RCA: p99/افزایش حقوق
1. داشبورد قرمز را برای «پرداخت» باز کنید.
2. برو به نمونه → یک مسیر آهسته → آشکار «دهانه باریک» (به عنوان مثال،. راه دوری است. تماس بگیرید).
3. سیاهههای مربوط به باز کردن توسط 'trace _ id' → مشاهده timeouts/retrays.
4. فعال کردن ویژگی بازگشت/RPS محدود, اطلاع صاحبان وابستگی.
5. پس از تثبیت - RCA، بلیط بهینه سازی، آزمون پخش.
1. SLI «طراوت» قرمز → مسیر کار → زمین شکست.
2. بررسی کارگزار/DLQ ورود به سیستم، خطاهای اتصال.
3. پردازش مجدد را شروع کنید، مصرف کنندگان (BI/محصول) را از طریق کانال وضعیت اطلاع دهید.
18) خطاهای مکرر
سیاهههای مربوط بدون طرح و بدون 'trace _ id'. تحقیقات گاهی اوقات به تأخیر می افتد.
هشدار در مورد زیرساخت ها به جای علائم. پيجينگ «به شير تبديل ميشه»
کاردینالیتی بی حد و مرز معیارها. انفجار هزینه و بی ثباتی.
همه چیز 100% پیگیری می شود. گران و غیر ضروری امکان نمونه برداری هوشمند
PII/اسرار در سیاهههای مربوط. شامل پاک کننده ها و لیست های قرمز.
ویژگیهای «بیصدا» کد جدید بدون متریک/ردیابی/سیاهههای مربوط.
19) سوالات متداول
س: آیا باید متن خام سیاهههای مربوط را ذخیره کنم ؟
A: بله، اما با نگهداری و آرشیو ؛ برای هشدارها و SLO ها، جمع ها کافی هستند. حسابرسی - در WORM.
س: چه چیزی را برای آهنگ ها انتخاب کنید - نمونه برداری سر یا دم ؟
A: ترکیب: سر احتمالی برای basecoat + قوانین دم برای خطاها و ناهنجاری ها.
س: چگونه می توانم معیارهای کاربر و معیارهای فنی را پیوند دهم ؟
A: از طریق عمومی «ردیابی» و برچسب های کسب و کار («مسیر»، «مستاجر»، «طرح»)، و همچنین از طریق رویدادهای محصول (تبدیل) با همبستگی به آهنگ.
س: چگونه در هشدارها غرق نشویم ؟
A: ضرب و شتم علائم، وارد ساعات آرام، deduplication، گروه بندی، اولویت بندی SLO و مالک به طور پیش فرض در هر هشدار.
مواد مرتبط:- «گزارش های حسابرسی و تغییر ناپذیر»
- «در حمل و نقل/در حالت استراحت رمزگذاری»
- «مدیریت مخفی»
- «منبع داده (اصل و نسب)»
- حریم خصوصی از طریق طراحی (GDPR)
- «Webhook گارانتی تحویل»