OpenTelemetry Π΄Π»Ρ Django SaaS: ΠΏΠΎΠΈΡΠΊ ΡΠ·ΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° ΠΏΠΎ ΡΡΠ΅ΠΉΡΠ°ΠΌ
Π§ΡΠΎ Π»ΠΎΠΌΠ°Π΅ΡΡΡ Π² ΠΏΡΠΎΠ΄Π΅
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΆΠ°Π»ΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π² Π»ΠΎΠ³Π°Ρ ΡΠΈΠΊΡΠΈΡΡΡΡΡΡ ΡΠ°ΠΉΠΌΠ°ΡΡΡ Π½Π° Π·Π°ΠΏΡΠΎΡΠ°Ρ ΠΊ API. ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΌΠΏΡΠΎΠΌ β Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· API-ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡ SLA Π² 500 ΠΌΡ. Π Π»ΠΎΠ³Π°Ρ ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ°Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π²ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²Π½ΠΎ Π΅ΡΡΡ. ΠΠ΅Π· ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΡΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ: Π² Django SaaS-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ² Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ Π½Π°ΡΠ°Π»ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠΎΠ³ΠΈ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ, Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΠΎΡΠ²Π΅ΡΠ°Π»Π° Π±ΡΡΡΡΠΎ, Π½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ. ΠΠ΅Π· ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π±ΡΠ»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠΎΡΠ΅ΠΌΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ
ΠΠ΅ΡΡΠΈΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ° CPU, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ²Π΅ΡΠ°, Π΄Π°ΡΡ Π»ΠΈΡΡ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π½ΠΎΡΠΌΡ, Π½ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ² Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ SQL-Π·Π°ΠΏΡΠΎΡΡ, ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π½Π΅ ΡΠΊΠ°ΠΆΡΡ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°.
Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ "Π·Π°Π³Π»ΡΠ½ΡΡΡ Π²Π½ΡΡΡΡ" ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ OpenTelemetry.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ OpenTelemetry
OpenTelemetry β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ°. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Django ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
- ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ middleware;
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΡ (views);
- SQL-Π·Π°ΠΏΡΠΎΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ΅ΡΠ΅Π· ORM (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Django ORM);
- ΠΠ½Π΅ΡΠ½ΠΈΠ΅ API-Π·Π°ΠΏΡΠΎΡΡ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, requests ΠΈΠ»ΠΈ httpx);
- ΠΡΠ΅ΡΠ΅Π΄ΠΈ Π·Π°Π΄Π°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Celery);
- ΠΡΡ-Π·Π°ΠΏΡΠΎΡΡ (Redis, Memcached).
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ "ΡΠΏΠ°Π½ΠΎΠΌ" (span) Π² ΡΡΠ΅ΠΉΡΠ΅. Π’ΡΠ΅ΠΉΡ β ΡΡΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΡΠΏΠ°Π½ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° ΡΠ΅ΡΠ΅Π· ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ OpenTelemetry Π² Django
ΠΠ»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ OpenTelemetry Π² Django-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ²:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ: Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ OpenTelemetry, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
opentelemetry-api,opentelemetry-sdk, ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Django ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,opentelemetry-instrumentation-django,opentelemetry-instrumentation-requests). - ΠΠ°ΡΡΡΠΎΠΈΡΡ SDK: ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ SDK Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΠΊΡΠΏΠΎΡΡΠ΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, OTLP, Jaeger, Zipkin) ΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΡΠΎΠ²Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ Π΄Π»Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Django ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ middleware, Π° Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ API-Π·Π°ΠΏΡΠΎΡΠΎΠ² β ΠΎΠ±Π΅ΡΡΠΊΠ° Π½Π°Π΄ HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ.
- ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ±ΠΎΡ Π΄Π°Π½Π½ΡΡ : Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΠ΅ΠΉΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ Π±ΡΠΊΠ΅Π½Π΄ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Jaeger ΠΈΠ»ΠΈ Tempo) ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ SDK
ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ OpenTelemetry SDK Π΄Π»Ρ Django:
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
from opentelemetry.instrumentation.django import DjangoInstrumentor
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°
trace.set_tracer_provider(TracerProvider())
# ΠΠΊΡΠΏΠΎΡΡΠ΅Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ (ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° Jaeger ΠΈΠ»ΠΈ OTLP)
span_processor = BatchSpanProcessor(ConsoleSpanExporter())
trace.get_tracer_provider().add_span_processor(span_processor)
# ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Django
DjangoInstrumentor().instrument()
Π§Π°ΡΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ OpenTelemetry ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ:
- ΠΡΡΠΎΠΊΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ±ΠΎΡ Π²ΡΠ΅Ρ ΡΠΏΠ°Π½ΠΎΠ² Π±Π΅Π· ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΌΠΏΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (sampling) Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ .
- ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ: ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ½ΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ.
- ΠΡΠΈΠ±ΠΊΠΈ ΡΠΊΡΠΏΠΎΡΡΠ°: ΠΡΠ»ΠΈ ΡΠΊΡΠΏΠΎΡΡΠ΅Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½, ΡΡΠ΅ΠΉΡΡ ΠΌΠΎΠ³ΡΡ Π½Π΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² Π±ΡΠΊΠ΅Π½Π΄. ΠΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π»ΠΎΠ³ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠΊΡΠΏΠΎΡΡΠ°.
ΠΠΎΠΈΡΠΊ ΡΠ·ΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ OpenTelemetry ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ Π°Π½Π°Π»ΠΈΠ·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ:
- ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ°: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ΅ΠΉΡΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ SLA.
- ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΡΠΏΠ°Π½ΠΎΠ²: ΠΠ·ΡΡΠΈΡΠ΅ ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΡΡΠΎΠΌΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠΏΠ°Π½ Ρ ΡΠ°ΠΌΡΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ·ΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°: ΠΡΠ»ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠΌ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π΅Π³ΠΎ ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (
EXPLAIN). ΠΡΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² HTTP-Π·Π°ΠΏΡΠΎΡΠ΅, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΉ API ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π±ΡΡΡΡΠΎ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ
Π ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ΅ Π±ΡΠ»ΠΈ ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ΠΊΡΡ-ΡΠ΅ΡΠ²ΠΈΡΠ° Redis. Π’ΡΠ΅ΠΉΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Redis. Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π»ΠΎΡΡ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ Π±Π°ΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΊΡΡΠ°.
Π’ΡΠ΅ΠΉΡΡ β ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ, Π½ΠΎ ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠΎΡΡ "ΡΠ΅ΠΊΡΡ" ΡΠ΅ΡΠ΅Π· ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π²ΡΡΠ²ΠΈΡΡ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΠΎΡΠ»Π΅ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Π°ΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½Π°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
- Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΡΠ΅ΠΉΡΡ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ°Π½Π° ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎΡΡ.
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΡΠ°Π»Π°ΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π½ΠΎΡΠΌΡ.
- ΠΡΠΎΠ²Π΅Π΄ΠΈΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π° Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ OpenTelemetry, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π³Π»ΡΠ½ΡΡΡ Π²Π½ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π½Π°ΠΉΡΠΈ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈ. ΠΠ»Ρ Django SaaS-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠΊΡΡΠ²Π°ΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²Π½Π΅Π΄ΡΠΈΡΡ OpenTelemetry Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΠΌΠΎΠΈΠΌΠΈ ΡΡΠ»ΡΠ³Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ.




