Словник для інженерів спостережливості: журнали, метрики і сліди
Необхідний англійський словник для інженерів спостережливості: три стовпи, кардинальність, процентилі, терміни попередження і як правильно використовувати кожен з них у контексті.
Спостережність - це те, як інженери розуміють, що система робить ззовні - шляхом збору ** журналів **, ** метрики ** і ** слідів **. Поле має щільний, специфічний словник, і багато термінів (кардиналість, процентиль, спектр) дратують нерідних носіїв. У цьому довіднику пояснюється зміст основних слів у контексті, щоб ви могли вільно читати панелі, писати попередження і обговорювати події.
Три стовпи
Спостережливість базується на трьох типах даних. Знайте точно, що це таке і як ним користуватися.
| Pillar | What it is | A sentence |
|---|---|---|
| Logs | Timestamped text records of events | ”Grep the logs for the error.” |
| Metrics | Numeric measurements over time | ”CPU is a gauge metric.” |
| Traces | The path of a request across services | ”The trace shows where the latency is.” |
«Коли запит повільний, метрика говорить вам що він повільний, сліди говорять вам де, і логи говорять вам чому»
Це речення є єдиним найкращим способом запам’ятати різницю - і чудова річ, щоб сказати в інтерв’ю.
Метрична лексика
Метрики мають певні типи, і ви повинні використовувати правильне слово.
| Term | Meaning |
|---|---|
| Counter | A number that only goes up (e.g. total requests) |
| Gauge | A number that goes up and down (e.g. memory in use) |
| Histogram | A distribution of values (e.g. latency buckets) |
| Rate | How fast a counter increases |
| Cardinality | The number of unique label combinations |
“Кількість запитів є лічильником, тому ми дивимося на його частоту, а не на його первинне значення. Пам’ять є гауджем — ми читаємо її безпосередньо»
Кардинальність - це термін, який найбільше плутає людей. Висока кардиналість означає занадто багато унікальних комбінацій (наприклад, метання метрики за ідентифікатором користувача), що підвищує вартість зберігання.
«Не ставте
user_idв метричну позначку — це вибух кардиналізації. Використовуйте його в traces замість цього»
Перцентили: найчастіше використовуване слово
Затримку описують за допомогою процентиль, а не середніх значень. Ви повинні сказати їх правильно.
| Notation | Said as | Meaning |
|---|---|---|
| p50 | ”p fifty” / “the median” | Half of requests are faster |
| p95 | ”p ninety-five” | 95% are faster, 5% slower |
| p99 | ”p ninety-nine” | 99% are faster |
| p99.9 | ”p three nines” | The slowest 0.1% |
«середня затримка виглядає добре, але p99 жахлива — наш найповільніший 1% користувачів страждає. Середня приховує хвостову затримку.»
** Хвостова затримка ** (повільний кінець розподілу) є критичним словником. «Хвіст» є довгою тонкою частиною кривої.
«Ми переслідуємо довгий хвіст — невелика кількість дуже повільних запитів, що тягнуть p99 вгору»
Реєстрування словника
| Term | Meaning |
|---|---|
| Log level | Severity: DEBUG, INFO, WARN, ERROR |
| Structured logging | Logs as key-value/JSON, not free text |
| Log line | A single log entry |
| Verbose | Producing a lot of log output |
| Correlation ID | An ID linking logs from one request |
| Sampling | Keeping only a fraction of logs/traces |
«Використовувати структурований журнал з кореляційним ідентифікатором, щоб ви могли зшити разом кожен рядок журналу для одного запиту по всіх службах.»
Дієслово ** stitch together ** (об’ єднати разом пов’ язані частини) є тут природнім і корисним.
Відстеження словникового запасу
| Term | Meaning |
|---|---|
| Span | One unit of work in a trace |
| Parent / child span | Nesting of operations |
| Trace ID | The ID for the whole request journey |
| Instrumentation | Adding tracing code to your service |
| Distributed trace | A trace spanning multiple services |
“Кожна служба додає span до distributed trace. Перегляд водоспад показує, що база даних span споживає 80% часу.”
Instrument є дієсловом, що походить від іменника: « ми повинні instrument платіжну службу » означає додати до неї код спостережливості.
Попереджувальний словник
| Term | Meaning |
|---|---|
| Threshold | The value that triggers an alert |
| Fire | When an alert triggers |
| Flapping | Alert toggling on and off rapidly |
| Noisy | Alerts that fire too often without value |
| Alert fatigue | Becoming numb to too many alerts |
| Actionable | An alert a human can actually do something about |
«Це попередження хрипить і шумно — це викликає втомлюваність попередження. Якщо це не actionable, давайте вилучити його. Кожна попередження повинна вимагати людської дії.”
Дієсловом є fire: «тревога запалилась о 2 годині ранку» — а не «тревога була активована»
Фрази для обговорення інцидентів
- «Давайте ** піднімемо приборну панель ** і поглянемо на p99.»
- “Я ** копаюсь в следах ** чтобы найти медленный промежуток.”
- «Метрики є ** плоскими ** — немає змін — але журнали показують помилки.»
- «Ми **літаємо сліпо ** тут; ця служба не інструментована.»
- «Давайте ** сверліть вниз** від рівня обслуговування до кінцевої точки.»
“Частота помилок підскочила, p99 підскочила, і сліди вказують на один повільний виклик вниз. Журнали ** підтверджують ** перевищення часу очікування. Класика»
** Летять слепо ** (працювати без видимості) це чудовий словник для системи без інструментів.
Поширені помилки
- **Слово “средний” означає “p99”. **Средний показник приховує найгірші випадки. СРЕ майже завжди цікавляться процентилями.
- ** Плутанина між « лічильником » і « мірою ». ** лічильник тільки збільшується, мірка рухається в обидва боки. Використовуючи неправильний, ти порушуєш свої математичні правила.
- Неправильно произношу “кардинал”. Это /ˌkɑːrdɪˈnæləti/ — “кар-ди-нал-і-ти.”
- ** Використання фрази « журнали повідомляють ». ** Журнали є множини: « журнали ** повідомляють ** », « рядок журналу ** показує ** »
- ** Використання « метрики » для всього. ** Журнал не є метрикою. Три стовпи повинні бути чітко видні.
Швидкий довідковий словник
- ** SLO / SLI ** — цілі надійності і метрики, що стоять за ними
- ** Золоті сигнали ** — затримка, трафік, помилки, насиченість
- ** Насиченість ** — рівень заповненості ресурсу
- ** Агрегація ** — об’ єднання багатьох точок даних (суми, середнього значення, максимуму)
- ** Збереження ** — тривалість зберігання даних
- ** Панель приладів ** — візуальна панель показників
- ** Heatmap ** — візуалізація розподілу за часом
«Моніторинг чотирьох золотих сигналів — затримки, трафіку, помилок, насиченості — і ви впізнаєте більшість проблем, перш ніж це зроблять користувачі»
Ключевые вещи
- ** Метрики ** = * що * це повільно, ** сліди ** = * де *, ** журнали ** = * чому *.
- Говоріть в перцентилах (p95, p99), а не середніх значеннях — середні значення приховують затримку хвоста.
- Mind ** cardinality **: мітки з високою кардиналістю знижують вартість; вставляти унікальні ідентифікатори у сліди.
- Попередження повинні бути можливими до виконання; шумні, тремтливі попередження спричиняють втомлюваність попереджень.
Освоїте цей словник, і панелі приладів перестануть бути залякувальними стінами з цифр - вони стануть мовою, яку ви зможете вільно читати, навіть о 3 годині ранку.
Національні мови: рідна мова для ненаціональних меншин
Інженерія спостережливості є галуззю, що проникається точним технічним словником - і це може бути особливо складно, коли ваша перша мова не є англійською. Це не просто про те, щоб знати визначення таких термінів, як «метрики» або «сліди»; це про те, як ці терміни використовуються, тонкі нюанси фразування і розуміння немовлених очікувань в професійному середовищі. Давайте розглянемо деякі спільні області, де носії мови, які не є рідними, можуть спіткати, і як стратегічно підходити до них.
Однією з найчастіших перешкод є використання надто буквальних перекладів. Наприклад, безпосередній переклад «аналізу кореневої причини» на вашу рідну мову може призвести до фрази, яка звучить незграбно або не повністю охоплює процес розслідування, який ми маємо на увазі. Аналогічно, коли ви описуєте проблему, не вказуйте просто « система не працює ». Замість цього, використовуйте більш конкретні і реальні описи, наприклад, « Затримка відповіді API значно збільшилася, що вплинуло на навички користувача ». Таким чином ви показуєте, що розумієте вплив проблеми і готові до її розслідування. Іншою ключовою областю є розуміння неявного контексту дискусій. Простий запит на «лог» може бути інтерпретований як просто запит на необроблені дані; проте, на практиці, це зазвичай запит на журнали кореляційні з конкретними подіями або помилками - часто в межах сліду.
Крім того, звертайте увагу на те, як інші використовують термінологію під час перегляду коду і розмов Slack. Фрази на кшталт «Це потребує розслідування» є неймовірно поширеними, але основне очікування полягає в тому, що ви насправді * зробите * розслідування, а не просто визнаєте проблему. Аналогічно, при написанні описів PR, зосередьтеся на наданні чітких, коротких пояснень ваших змін і їх впливу - уникати жаргону, де це можливо, і використовувати активний голос для ясності. Пам’ ятайте, документація не лише про технічні деталі; вона про ефективне спілкування з вашою командою. Хорошим прикладом буде сказати «Вреалізовано механізм повторних спроб з експоненційним відступом для обробки перехідних помилок мережі», а не просто сказати «Повніше оброблення помилок»
І, нарешті, не вагайтеся попросити про пояснення. Набагато краще визнати, що ви чогось не розумієте, ніж зробити неправильне припущення або спричинити плутанину. Більшість досвідчених інженерів раді терпляче пояснювати речі і цінують вашу працю, яку ви робите, щоб вивчити мову спостережливості.
# Example using Prometheus query (illustrative)
promql "rate(http_requests_total{job='my-app', status_code=5xx}[5m])"
Ця команда, яку виконують у середовищі Prometheus, демонструє запит на кількість помилок HTTP 5xx у межах певного завдання ( my-app ) протягом 5- х хвилинного вікна. Це поширений сценарій при усуненні проблем з продуктивністю і розумінні стану служби - ситуація, коли точний словник, наприклад, “рівень”, “код стану” і “задача” стає критичним для точного опису проблеми і її потенційних рішень.