Files
progcode/web/public/assets/editorial/2023/telemetry-signals-2023-cardinality-budget.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

53 lines
3.5 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 720" role="img" aria-labelledby="title desc">
<title id="title">Учебный budget metric labels и запрет per-request identifiers</title>
<desc id="desc">Слева три metric labels с фиксированным словарём service, route и outcome. Справа идентификаторы trace, request, user и текст ошибки перечёркнуты как неподходящие для labels и направлены в отдельный trace/log контекст.</desc>
<defs>
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0 0L12 6L0 12Z" fill="#138b6d"/></marker>
<style>
.bg { fill: #f8fafc; }
.panel { fill: #fff; stroke: #d9e1ed; stroke-width: 3; }
.good { fill: #e8fbf5; stroke: #138b6d; stroke-width: 3; }
.bad { fill: #fff0f1; stroke: #dc3d4b; stroke-width: 3; }
.context { fill: #e6eaff; stroke: #5b6cff; stroke-width: 3; }
.label { font: 700 35px Arial, sans-serif; fill: #17213a; }
.sub { font: 500 25px Arial, sans-serif; fill: #42516c; }
.mono { font: 600 25px Menlo, Consolas, monospace; fill: #17213a; }
.tiny { font: 500 21px Arial, sans-serif; fill: #58667d; }
.arrow { fill: none; stroke: #138b6d; stroke-width: 5; 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="58" y="70" class="label">Metric labels: маленький словарь, не поиск одного запроса</text>
<text x="58" y="108" class="sub">Budget — проектный договор; это не расчёт real series или backend limit</text>
<rect x="58" y="154" width="524" height="500" rx="26" class="panel"/>
<text x="88" y="208" class="label">Разрешённые dimensions</text>
<text x="88" y="245" class="sub">фиксированные synthetic values</text>
<rect x="90" y="281" width="458" height="74" rx="16" class="good"/>
<text x="118" y="327" class="mono">service = checkout-api</text>
<rect x="90" y="378" width="458" height="74" rx="16" class="good"/>
<text x="118" y="424" class="mono">route = checkout</text>
<rect x="90" y="475" width="458" height="74" rx="16" class="good"/>
<text x="118" y="521" class="mono">outcome = rejected</text>
<text x="92" y="604" class="tiny">Metric отвечает: «какой класс исхода?»</text>
<rect x="650" y="154" width="492" height="500" rx="26" class="panel"/>
<text x="680" y="208" class="label">Не класть в labels</text>
<text x="680" y="245" class="sub">per-request или свободный контекст</text>
<rect x="682" y="281" width="426" height="58" rx="14" class="bad"/>
<text x="708" y="319" class="mono">trace_id</text>
<path d="M1000 287L1087 333M1087 287L1000 333" class="cross"/>
<rect x="682" y="359" width="426" height="58" rx="14" class="bad"/>
<text x="708" y="397" class="mono">request_id / order_id</text>
<path d="M1000 365L1087 411M1087 365L1000 411" class="cross"/>
<rect x="682" y="437" width="426" height="58" rx="14" class="bad"/>
<text x="708" y="475" class="mono">user_id</text>
<path d="M1000 443L1087 489M1087 443L1000 489" class="cross"/>
<rect x="682" y="515" width="426" height="58" rx="14" class="bad"/>
<text x="708" y="553" class="mono">error text / raw URL</text>
<path d="M1000 521L1087 567M1087 521L1000 567" class="cross"/>
<path d="M583 406H645" class="arrow"/>
</svg>