GH GambleHub

آثار توزیع شده

ردیابی توزیع شده

1) چرا و چه چیزی است

ردیابی توزیع شده راهی برای پیوند عملیات در امتداد کل مسیر درخواست است: front → API gateway → microservices → databases/caches → brokers → jabs/pipelines.
نتیجه یک ردیابی از دهانه (دهانه)، که در آن هر دهانه قطاری از عملیات جزء با ویژگی ها، حوادث و وضعیت است. این RCA را تسریع می کند، به حفظ SLO کمک می کند و MTTR را کاهش می دهد.

اهداف کلیدی:
  • قابلیت مشاهده مسیر بحرانی و تنگناها.
  • ارتباط علائم (متریک) با علل (دهانه) و جزئیات (سیاهههای مربوط).
  • تجزیه و تحلیل از retrays، صف، DLQ، طرفداران، «اره» از تاخیر.

2) ردیابی مدل داده

Trace - گراف فراخوانی با 'trace _ id'.
دامنه - операция: «نام»، «نوع» (SERVER/CLIENT/PRODUCER/CONSUMER/INTERNAL)، «شروع/پایان»، «وضعیت»، «ویژگی ها»، «رویدادها»، «لینک ها []».
ویژگی ها - کلید ارزش (مسیر، db. سیستم، پیام سیستم، ابر منطقه و غیره).
Events - تگ های فوری در داخل محدوده (به عنوان مثال، 'retry'، 'cache _ miss').
Span Links - اتصالات خارج از «پدر و مادر» (batchi، retrai، fan-in/out).
منبع - فراداده فرآیند/سرویس ('سرویس. نام '، نسخه، محیط زیست).

3) زمینه و تحمل

3. 1 زمینه ردیابی W3C

عناوین:
  • 'traceparent': 'version-traceid-spanid-flags' (پرچم ها شامل نمونه برداری).
  • «tracestate»: حالت خاص فروشنده (حداقل).
  • چمدان - کلید برای زمینه کسب و کار (محدود، بدون PII/اسرار).

3. 2 پرتاب زمینه

HTTP: 'traceparent '/' tracestate'; gRPC: ابرداده ؛ WebSocket: هنگام ارتقاء و در پیام ها ؛

پیام ها: در هدر (Kafka/NATS/RabbitMQ) - ذخیره متن اصلی با تولید کننده و انتقال با مصرف کننده.
Bases: زمینه را «حمل» نمی کند - ما ویژگی ها را به span (query، rows، db وارد می کنیم. سیستم)، اما نه ارزش ها.

4) نمونه برداری: چگونه به شکست

نمونه برداری سر: احتمالی/با قوانین (مسیر، مستاجر، نقطه پایانی).
نمونه گیری دم (بر روی جمع کننده): ذخیره «جالب» مسیرهای - خطاها, طولانی p95/p99, مسیرهای نادر.
نمونه ها: معیارهای هیستوگرام ارجاعات به 'trace _ id' خاص را ذخیره می کنند.
توصیه: ترکیب - سر 5-20٪ + قوانین دم 100٪ برای 5xx/timeout/p99.

5) ویژگی ها و طبقه بندی (حداقل مورد نیاز)

عمومی:
  • در خدمت شما هستم. نام، خدمات. نسخه '،' استقرار. محیط زیست، ابر. منطقه '،' HTTP. مسیر '،' HTTP. روش '،' HTTP. status_code' دی بی سیستم، DB statement '(کوتاه/بدون داده)،' پیام. سیستم «،» پیام. عمل جراحی، همکار. سرویس، شبکه. همکار. اسم مستأجر. من درخواست کردم. کارت شناسایی.

برچسب های کسب و کار: شسته و رفته، PII رایگان. مثال: «دستور» بخش '،' طرح. سطح...

6) اسکریپت های ناهمزمان، صف و دسته

تولید کننده → مصرف کننده: ایجاد تولید کننده دامنه با زمینه ؛ در پیام - هدر (ردیابی، چمدان). مصرف کننده شروع می شود سرور/مصرف کننده-دهانه از لینک به تولید کننده (اگر هیچ سلسله مراتب دقیق وجود دارد).
Fan-out: یک ورودی - بسیاری از خروجی ها → کودک یا لینک ها.
دسته: مصرفکننده پشت سر هم N پیام را میخواند → یک دوره با «events» برای هر messageId یا «links» برای N زمینه جداگانه.
DLQ: جداگانه span 'messaging. DLQ ها دلیل с и شمارش منتشر کنید.
Retrai: "رویداد: دوباره امتحان کنید" + "دوباره امتحان کنید. ویژگی شمارش ؛ ترجیحا یک کودک جدید را امتحان کنید.

7) ادغام با سیاههها و معیارها

ما نوشتن سیاهههای مربوط JSON با 'trace _ id '/' span _ id' → از دهانه ما به سیاهههای مربوط با کلیک کردن بروید.
معیارهای RED/USE حاوی نمونه هایی از قله های P99 است که ما به دهانه های «بد» می رویم.
ردیابی تولید سیگنال های فنی (خطاهای وابستگی) و سیگنال های کسب و کار (تبدیل) از طریق حوادث.

8) عملکرد و هزینه

نمونه برداری رویداد و خفه کردن.
Cardinality کاهش ویژگی های (no 'user _ id '/' session _ id' as label!).
فشرده سازی/قصابی توسط صادر کننده ؛ صادرات مرزهای زمانی.
ذخیره سازی: داغ 1-7 روز، پس از آن - واحد/تنها «مشکل» مسیرهای پیاده روی.
دسته بندی هزینه ها: جمع کننده ها، شاخص ها، ذخیره سازی، خروج.

9) امنیت و حریم خصوصی

در حمل و نقل: TLS 1. 3/mTLS kollektor↔agenty ؛ در حالت استراحت: رمزگذاری، کلیدهای خصوصی (به «رمزگذاری در ترانزیت/در حالت استراحت» مراجعه کنید).
PII و اسرار: در ویژگی ها/حوادث نوشتن نیست ؛ tokenization/masking در تولید کننده.
چند اجاره ای: "مستاجر. ID به عنوان یک برچسب منابع و جداسازی فضاها، خواندن سیاست ها ؛ حسابرسی دسترسی ردیابی (نگاه کنید به حسابرسی و سیاهههای مربوط اصلاح نشده).

10) طرح های پیاده سازی (مرجع)

10. 1 SDK OpenTelemetry (شبه کد)

python from opentelemetry import trace from opentelemetry. sdk. trace import TracerProvider from opentelemetry. sdk. resources import Resource from opentelemetry. sdk. trace. export import BatchSpanProcessor from opentelemetry. exporter. otlp. proto. grpc. trace_exporter import OTLPSpanExporter

provider = TracerProvider(resource=Resource. create({
"service. name":"checkout","service. version":"1. 12. 0","deployment. environment":"prod"
}))
provider. add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint="otel-collector:4317", insecure=True)))
trace. set_tracer_provider(provider)
tr = trace. get_tracer("checkout")

with tr. start_as_current_span("POST /pay", attributes={
"http. route":"/pay","http. method":"POST","tenant. id":"t-42"
}):
business logic, external API call and pass DB

10. 2 جمع کننده OTel - نمونه برداری دم (قطعه)

yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_codes: [ERROR]
- type: latency threshold_ms: 900
- type: probabilistic sampling_percentage: 10 exporters:
otlphttp: { endpoint: http://trace-backend:4318 }
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, tailsampling]
exporters: [otlphttp]

10. 3 کافکا - انتقال زمینه (مفهوم)

تولید کننده: اضافه کردن هدر 'traceparent'، 'چمدان'.
مصرف کننده: اگر پیام یک جریان جدید ایجاد کند - یک دامنه جدید SERVER/CONSUMER از لینک به زمینه از هدر ها.

11) داده ها/ETL и میلی لیتر

برای خطوط لوله دسته ای: دهانه در دسته/پارتیشن با 'dataset. فرار کن. من، صف. در/خارج، طراوت. تاخیر داشته باشد.
برای ML: محدوده آموزش/استنتاج، نسخه مدل، تاخیر، فروشگاه ویژگی.
لینک به Lineage: "اجرا کنید. ID 'и' مجموعه داده. urn 'allow شما را از ردیابی به نمودار مبدأ داده پرش کنید.

12) ردیابی بستر های نرم افزاری SLO

در دسترس بودن مصرف: ≥ 99. 9%

تاخیر در نمایه سازی: ≤ 60 ثانیه p95

پوشش سر نمونه: ≥ 5-10٪ از مسیرهای کلیدی

100% صرفه جویی در مسیرهای پیاده روی با وضعیت ERROR و با تاخیر> آستانه با توجه به «مسیرهای بحرانی» دایرکتوری

هشدار پلت فرم: رشد قطره، زمان صادرات، تاخیر شاخص، بیش از حد کاردینالیتی.

13) تست و تایید

قرارداد ردیابی در CI: حضور دهانه در نقاط پایانی کلیدی، ویژگی های اجباری، درست «traceparent» مگس از طریق دروازه/پروکسی.
مصنوعی/رم نمونه: جمع آوری مسیرهای پیاده روی از خارج.
هرج و مرج/حوادث: غیر فعال کردن وابستگی، چک کردن که نمونه دم «میدارد» خطا.
دود در فروش: پس از انتشار - «وجود دارد هر گونه دهانه» و نمونه → ردیابی.

14) چک لیست

قبل از فروش

  • زمینه ردیابی W3C در همه جا پرتاب می شود ؛ برای پیام ها - هدر.
  • نمونه برداری از سر اصلی فعال است ؛ قوانین دم برای 5xx/p99 پیکربندی شده است.
  • ویژگی های اجباری مسیر، روش، وضعیت، خدمات است. نسخه، مستاجر. کارت شناسايي.
  • JSON با 'trace _ id '/' span _ id'، متریک با نمونه ها، وارد می شود.
  • ضدعفونی کننده PII ؛ رمزگذاری در رفتن/در سیاست های دسترسی استراحت.
  • داشبورد: «مسیر بحرانی»، «خطاهای وابستگی»، «retras/timeouts».

عملیات

  • بررسی ماهانه کاردینالیتی از ویژگی های; سهمیه بندی.
  • تنظیم نمونه دم توسط SLO (سر و صدای کمتر، همه «داغ» - در نمونه).
  • آموزش RCA ها با متریک انتقال → نمونه → ردیابی → سیاهههای مربوط.
  • چک کردن را پوشش می دهد برای صف، DLQs، ETL شغل.

15) Runbook'и

RCA: p99 افزایش/پرداخت

1. داشبورد قرمز را باز کنید از بن p99 رفتن به نمونه برای ردیابی.
2. یک CLIENT-span «باریک» پیدا کنید (به عنوان مثال، «دروازه». call ')، امتحان کنید. شمارش، وقفه.
3. مقایسه نسخه های خدمات/وابستگی ها، منطقه/منطقه.
4. فعال کردن تخریب (پاسخ ذخیره/RPS حد)، اطلاع صاحبان وابستگی.
5. پس از تعمیر - RCA و بهینه سازی بلیط.

افزایش DLQ

1. ردیابی فیلتر توسط 'messaging. DLQ ها چاپ کن.
2. دلایل (رویدادها) را بررسی کنید، با انتشار ارتباط دارد.
3. شروع دوباره پردازش، به طور موقت افزایش زمان برای مصرف کننده، اطلاع صاحبان پایین دست.

16) خطاهای مکرر

هیچ پیش بینی زمینه ای از طریق دروازه ها/کارگزاران وجود ندارد. راه حل: میان افزار/interseptors، کتابخانه های تک.
تمام ردپاها 100% گران و بی معنی - استفاده از نمونه دم.
سیاهههای مربوط بدون 'ردیابی _ id'. ↑ MTTR از دست رفته است.
PII در صفات. ماسک/نشانه گذاری ؛ فقط زمینه فنی را حفظ کنید.
«بی صدا» ضربه محکم و ناگهانی پس زمینه. اضافه کردن دهانه به دسته/پارتیشن و 'run. کارت شناسایی.
اختلاف نام یک فرهنگ لغت از دهانه ها و کلیدهای ویژگی را وارد کنید.

17) سوالات متداول

س: آیا نمونه برداری سر یا دم بهتر است ؟

A: ترکیب سر لایه پایه را می دهد، دم تضمین حفظ ناهنجاری ها/خطاها را تضمین می کند.

س: چگونه می توانم از طریق کافکا بدون سلسله مراتب سفت و سخت ردیابی کنم ؟

الف: استفاده از ارتباطات بین تولید کننده و مصرف کننده ؛ زمینه - در هدر.

س: با SQL حساس چه باید کرد ؟

A: DB عبارت 'shorted/normalized (no values), or' db. عملیات + ابعاد/زمان.

س: چگونه با معیارهای تجاری ارتباط برقرار می کنید ؟

A: ویژگی های دامنه بدون PII (طرح/بخش) را اضافه کنید، از رویدادهای «مراحل کسب و کار» در محدوده استفاده کنید و از معیارهای تبدیل به نمونه استفاده کنید.

مواد مرتبط:
  • «قابلیت مشاهده: سیاهههای مربوط، معیارها، ردیابی»
  • «گزارش های حسابرسی و تغییر ناپذیر»
  • «در حمل و نقل/در حالت استراحت رمزگذاری»
  • «منبع داده (اصل و نسب)»
  • حریم خصوصی از طریق طراحی (GDPR)
  • «مدیریت مخفی»
Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.