Files
progcode/web/public/assets/editorial/2023/telemetry-signals-2023-diagnosis-route.svg
T
huncode 2c860caddd
Build and deploy / deploy (push) Successful in 15s
revise September 2023 telemetry articles
2026-07-31 15:13:05 +03:00

58 lines
3.9 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 720" role="img" aria-labelledby="title desc">
<title id="title">Учебный маршрут диагностики между metric, trace и log event</title>
<desc id="desc">Сначала маленькая synthetic metric задаёт класс исхода. Затем общий trace ID ведёт к gateway и payment span, после чего log event с теми же trace и span IDs объясняет payment отказ. Карточка evidence сохраняет статус not-a-production-observation. Ветка trace ID как metric label перечёркнута.</desc>
<defs>
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0 0L12 6L0 12Z" fill="#5b6cff"/></marker>
<style>
.bg { fill: #f7f8fc; }
.metric { fill: #fff4df; stroke: #d77a00; stroke-width: 3; }
.trace { fill: #e6eaff; stroke: #5b6cff; stroke-width: 3; }
.log { fill: #e8fbf5; stroke: #138b6d; stroke-width: 3; }
.evidence { fill: #f3ecff; stroke: #8b5cf6; stroke-width: 3; }
.label { font: 700 33px Arial, sans-serif; fill: #17213a; }
.sub { font: 500 24px Arial, sans-serif; fill: #42516c; }
.mono { font: 600 23px Menlo, Consolas, monospace; fill: #17213a; }
.tiny { font: 500 20px Arial, sans-serif; fill: #55627b; }
.arrow { fill: none; stroke: #5b6cff; stroke-width: 5; marker-end: url(#arrow); }
.dash { fill: none; stroke: #8b5cf6; stroke-width: 4; stroke-dasharray: 10 8; marker-end: url(#arrow); }
.cross { stroke: #dc3d4b; stroke-width: 7; stroke-linecap: round; }
</style>
</defs>
<rect class="bg" width="1200" height="720" rx="28"/>
<text x="56" y="68" class="label">Маршрут: симптом → причина → проверка → действие</text>
<text x="56" y="106" class="sub">Один fixed synthetic scenario; каждая стрелка требует отдельной реальной проверки позднее</text>
<rect x="54" y="160" width="244" height="220" rx="24" class="metric"/>
<text x="82" y="207" class="label">1. Metric</text>
<text x="82" y="247" class="mono">outcome=rejected</text>
<text x="82" y="282" class="mono">route=checkout</text>
<text x="82" y="330" class="tiny">вопрос: какой класс?</text>
<rect x="392" y="160" width="340" height="220" rx="24" class="trace"/>
<text x="420" y="207" class="label">2. Trace</text>
<text x="420" y="247" class="mono">synthetic-trace-A</text>
<text x="420" y="285" class="sub">gateway span → payment span</text>
<text x="420" y="330" class="tiny">вопрос: какой путь?</text>
<rect x="826" y="160" width="320" height="220" rx="24" class="log"/>
<text x="854" y="207" class="label">3. Log/event</text>
<text x="854" y="247" class="mono">same trace + span</text>
<text x="854" y="285" class="sub">authorization-rejected</text>
<text x="854" y="330" class="tiny">вопрос: что случилось?</text>
<path d="M300 270H382" class="arrow"/>
<path d="M734 270H816" class="arrow"/>
<text x="315" y="238" class="tiny">не per-request label</text>
<text x="748" y="238" class="tiny">correlation key</text>
<rect x="345" y="482" width="510" height="142" rx="24" class="evidence"/>
<text x="378" y="530" class="label">4. Evidence card</text>
<text x="378" y="570" class="mono">not-a-production-observation</text>
<text x="378" y="606" class="tiny">записать hypothesis и нужную проверку</text>
<path d="M985 382C967 438 842 459 798 478" class="dash"/>
<text x="70" y="473" class="mono" fill="#dc3d4b">trace_id as metric label</text>
<path d="M60 493L295 529M295 493L60 529" class="cross"/>
<text x="56" y="602" class="tiny">Не заменять missing correlation новым identifier в счётчике.</text>
</svg>