Налаштування декоратора маршрутів OBI
Секція YAML: routes
Ви можете налаштувати компонент у секції routes вашої YAML конфігурації або за допомогою змінних середовища.
Ви повинні налаштувати цю секцію у файлі YAML. Якщо ви не надасте секцію routes, OBI створить стандартний етап конвеєра маршрутів і використовуватиме декоратор маршрутів heuristic.
Наприклад:
routes:
patterns:
- /basic/:rnd
unmatched: path
ignored_patterns:
- /metrics
ignore_mode: traces
| YAML | Опис | Тип | Стандартно |
|---|---|---|---|
patterns | Список шаблонів URL-адрес для відповідності та встановлення властивості http.route. Див. шаблони. | список рядків | (unset) |
ignored_patterns | Список шаблонів URL-адрес для ігнорування. Викидає події трейси/метрики, якщо вони мають збіг. Див. ігноровані шаблони. | список рядків | (unset) |
ignore_mode | Уточнює, які типи подій ігноруються при використанні ignored_patterns. Див. режим ігнорування. | рядок | all |
unmatched | Вказує, що робити, коли HTTP-шлях трасування не відповідає жодному з записів patterns. Див. невідповідність. | рядок | heuristic |
wildcard_char | Символ, який використовується для компонентів шляху, замінених режимом евристики. Див. символ підстановки. | рядок | * |
Шаблони
OBI порівнює надані шаблони шляхів URL і встановлює властивість http.route трасування/метрики. Використовуйте властивість routes коли це можливо, щоб зменшити кардинальність згенерованих метрик.
Кожен шаблон маршруту є шляхом URL з теґами, які групують сегменти шляху. Ви можете використовувати формат :name або {name} для теґів відповідності.
Наприклад, якщо ви визначите наступні шаблони:
routes:
patterns:
- /user/{id}
- /user/{id}/basket/{product}
Трейси з цими HTTP шляхами включають ту ж саму http.route='/user/{id}' властивість:
/user/123
/user/456
Трейси з цими HTTP шляхами включають ту ж саму http.route='/user/{id}'/basket/{product} властивість:
/user/123/basket/1
/user/456/basket/3
Порівнювач маршруту також підтримує символ підстановки *, який відповідає префіксам шляху. Наприклад, якщо ви визначите цей шаблон:
routes:
patterns:
- /user/*
Будь-які трейси з HTTP шляхами, які починаються з /user (включаючи /user сам по собі), відповідають маршруту /user/*. Усі наступні шляхи відповідають /user/*:
/user
/user/123
/user/123/basket/1
/user/456/basket/3
Шаблони ігнорування
OBI порівнює наданий шлях URL з визначеними шаблонами і відкидає трейси та/або метрики, якщо вони відповідають будь-якому з ignored_patterns. Формат для поля ignored_patterns ідентичний полю patterns. Ви можете визначити шаблони ігнорування з або без будь-яких символів підстановки. Наприклад, якщо ви визначите ці шаблони ігнорування:
routes:
ignored_patterns:
- /health
- /v1/*
Будь-які шляхи подій з префіксом /v1 або рівні /health ігноруються.
Ця опція корисна, якщо ви хочете запобігти запису певних шляхів, які використовуються для розробки або моніторингу стану служби, як трасування або метрики.
Режим ігнорування
Використовуйте цю властивість разом з властивістю ignored_patterns, щоб уточнити, які типи подій ігноруються.
Можливі значення для властивості ignore_mode:
allскидає як метрики, так і трейси, які відповідаютьignored_patternstracesскидає лише трейси, які відповідаютьignored_patterns, жодні події метрик не ігноруютьсяmetricsскидає лише метрики, які відповідаютьignored_patterns, жодні події трасування не ігноруються
Якщо ви хочете ігнорувати певні типи подій, наприклад, ви можете захотіти знати показники продуктивності вашого API перевірки стану, але не хочете накладних витрат на ці записи трасування у вашій базі даних трейсів. У цьому випадку встановіть властивість ignore_mode на traces, щоб лише трасування, що відповідають ignored_patterns, були скинуті, тоді як метрики все ще записуються.
Unmatched
Ця властивість визначає, що робити, коли HTTP шлях трасування не відповідає жодному з записів patterns.
Можливі значення для властивості unmatched:
unsetзалишає властивістьhttp.routeне заданоюpathкопіює властивість поляhttp.routeв значення шляху. Ця опція може призвести до вибуху кардинальності на стороні споживанняwildcardвстановлює властивість поляhttp.routeна загальне значення з зірочкою/**heuristicавтоматично виводить властивість поляhttp.routeз значення шляху, на основі цих правил:- Будь-які компоненти шляху з числами або символами поза ASCII алфавітом (або
-і_) замінюються наwildcard_char - Будь-які алфавітні компоненти, які не виглядають як слова, замінюються на
wildcard_char
- Будь-які компоненти шляху з числами або символами поза ASCII алфавітом (або
Символ підстановки
Використовуйте цю властивість разом з unmatched: heuristic, щоб вибрати, яким символом замінюються компоненти шляху, визначені евристичним режимом. Типово OBI використовує зірочку '*'. Значення повинно бути в лапках і повинно бути єдиним символом.
Режим евристичного декорування маршруту
Декоратор heuristic є декоратором маршруту, що забезпечує найкращі результати, який все ще може призвести до вибуху кардинальності в деяких сценаріях. Наприклад, URL-адреси GitHub є хорошим прикладом, де декоратор маршруту heuristic не спрацює, оскільки URL-адреси побудовані як дерево тек. У цьому сценарії всі шляхи залишаються унікальними і призводять до вибуху кардинальності.
Якщо ваші шаблони шляхів URL слідують певній структурі, а унікальні ідентифікатори складаються з чисел або випадкових символів, то декоратор heuristic може бути варіантом конфігурації з низькими витратами, який працює для вашого випадку використання. Наприклад, наступні макети URL-адрес Google Docs правильно зменшуються до версії з низькою кардинальністю:
Обидва шляхи URL нижче:
document/d/CfMkAGbE_aivhFydEpaRafPuGWbmHfG/edit (відсутність цифр в ідентифікаторі)
document/d/C2fMkAGb3E_aivhFyd5EpaRafP123uGWbmHfG/edit
перетворюються на маршрут з низькою кардинальністю (використовуючи стандартний wildcard_char):
document/d/*/edit
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!