Skip to main content
НачалоБлогРъководство за надеждност на Tracking API: Как да наблюдавате времето на безотказна работа, актуалността на данните и пропуснатите актуализации след пускането в продукция

Ръководство за надеждност на Tracking API: Как да наблюдавате времето на безотказна работа, актуалността на данните и пропуснатите актуализации след пускането в продукция

17TRACK

След пускането в реална експлоатация наблюдавайте надеждността на API за проследяване на три отделни нива: дали заявките са успешни, дали информацията за пратките пристига в приемливо забавяне и дали актуализациите достигат до собствените ви системи без пропуски. Успешният отговор от API не доказва, че данните за проследяване са актуални или че известието до клиента е доставено. Определете собствени показатели, предупреждения и процедури за възстановяване за всяко ниво.

Ръководство за надеждност на API за проследяване: как да наблюдавате непрекъснатата работа и актуалността на данните

Това ръководство е предназначено за инженерни и оперативни екипи, отговорни за активна интеграция за проследяване на пратки. Целта е да откриете загубата на видимост, преди тя да се превърне в проблем за поддръжката, а след това да установите дали повредата е в потока от превозвача, доставчика на проследяване, получателя на вашия webhook или последващата обработка.

Определете какво означава надеждна актуализация за проследяване

Започнете с пълния път на доставката: регистрация на пратката, извличане от доставчика, отговор от API или доставка чрез webhook, вътрешна обработка, запазване в базата данни и визуализация за клиента. Ако изпращате известия, разглеждайте това като отделен етап, вместо да приемате, че запазената актуализация е достигнала до получателя.

За всеки етап запишете неговия отговорник и доказателствата, които потвърждават успеха. Приемането на номер за проследяване от доставчика доказва, че регистрацията е приета, но не и че превозвачът е публикувал събитие. Получаването на успешен HTTP отговор от webhook доказва, че крайната ви точка го е потвърдила, но не непременно че вашият worker е записал актуализацията.

Насоките на Google SRE описват латентността, трафика, грешките и насищането като четирите основни сигнала за наблюдение. Тези сигнали са полезни за инфраструктурата на интеграцията ви, но проследяването на пратки изисква и проверки за актуалност и пълнота, тъй като привидно здравата крайна точка може да предоставя непроменена или непълна информация.

НивоВъпрос, на който трябва да се отговориДоказателства за събиране
Достъпност на APIМоже ли интеграцията да завърши валидна операция?Резултат от транспорта, резултат от приложението, латентност, дял на изтеклите по време заявки
Актуалност на даннитеКолко изостава информацията?Време на събитието, време на наблюдението, време на получаване, време на запазване
Пълнота на актуализациитеДостигна ли всяка очаквана и извличаема актуализация до местоназначението?Разлики при сверяване, записи за обработка, неразрешени пропуски
Видимост за клиентаСъвпада ли показваният статус със запазеното състояние на пратката?Проверки на пътя за четене, възраст на кеша, резултати от обработката на известията

Инструментирайте интеграцията, преди да задавате предупреждения

Поддържайте оперативен запис, който свързва пратката с опита за регистрация, входящите актуализации, опитите за обработка и полученото състояние. Използвайте вътрешен идентификатор на пратката за корелация; когато е възможно, не включвайте номера за проследяване и данните за клиентите в широко достъпни логове.

Минималният полезен запис включва:

  • Вътрешен идентификатор на пратката, идентификатор на превозвача, когато е известен, интеграционен акаунт и среда.
  • Идентификатор на заявката или корелацията, тип операция, време на опита, категория на резултата и продължителност.
  • Идентификатор на събитието от доставчика, когато е предоставен, както и оригиналната времева отметка на събитието и информацията за часовата зона.
  • Време на получаване на webhook, време на надеждно съхранение, време на завършване на обработката и време на достъпност за визуализация, когато могат да бъдат измерени.
  • Версия на схемата на полезния товар, когато е налична, резултат от парсирането, резултат от дедупликацията и причина за грешката.

Запазвайте оригиналния полезен товар при подходящи контроли за достъп и срокове за съхранение, когато е необходим за разследване или повторно възпроизвеждане. Не записвайте заглавки за оторизация или секрети. Използвайте ограничени измерения, като превозвач и категория на резултата, за показателите; отделните номера за проследяване трябва да бъдат в записи с възможност за търсене, а не в етикети на показатели с висока кардиналност.

Разграничавайте времето на събитието от времето на наблюдението. Моделът на данните за логове на OpenTelemetry изрично прави това разграничение чрез Timestamp и ObservedTimestamp. Прилагането на същото разграничение към записите за проследяване помага да се предотврати объркването на късно съобщено събитие от превозвача с бавен запис в базата данни.

Наблюдавайте непрекъснатата работа от гледната точка на приложението си

Използвайте както реалния производствен трафик, така и синтетична проверка с нисък обем. Производственият трафик показва действителното въздействие върху клиентите. Синтетичната проверка може да открива повреди, когато производственият трафик е слаб, при условие че използва документирана, недеструктивна операция и спазва ограниченията за използване на доставчика.

Полезен показател за успешни заявки е:

Успешни допустими операции / Всички допустими опитани операции

Определете „успешна“ операция чрез HTTP статуса и документирания резултат на ниво приложение. Някои интерфейси могат да върнат успешен HTTP отговор, като същевременно съобщят за неуспешна операция в тялото. При пакетни операции измервайте резултатите на ниво елемент наред с резултатите на ниво заявка.

Поддържайте два изгледа на грешките. Изгледът за въздействието върху клиента включва всичко, което пречи на приложението ви да изпълни задачата си. Диагностичният изглед разделя грешките на доставчика, мрежовите повреди, проблемите с удостоверяването, невалидните входни данни и отговорите за квота или ограничение на честотата. Изтеклите идентификационни данни може да не са прекъсване на услугата на доставчика, но все пак представляват прекъсване за вашата интеграция.

  • Латентност: Проследявайте p50, p95 и p99, когато обемът на трафика позволява смислени перцентили. Измервайте изтичанията на времето отделно, за да не изглежда латентността нормална заради бързи неуспешни заявки.
  • Трафик: Сравнявайте обема на заявките и callback-ите с регистрациите на пратки и броя на активните пратки.
  • Грешки: Разделяйте транспортните повреди, грешките на приложението, грешките при парсиране и грешките при последващо записване.
  • Насйщане: Наблюдавайте пуловете от връзки, капацитета на worker-ите, дълбочината на опашката, най-стария елемент в опашката и наличния бюджет за заявки.

Не представяйте тези измервания като договорна непрекъсната работа на доставчика, освен ако не използват точните определения от договора. Наблюдаваната достъпност на интеграцията ви и споразумението за ниво на услугата на доставчика отговарят на различни въпроси.

Измервайте актуалността, без да бъркате мълчанието с повреда

Пратка, която не се е придвижила, не е автоматично остаряла. Международният транзит, предаването между оператори, почивните дни и практиките на превозвачите за сканиране могат да доведат до нормални пропуски. Предизвикателството при наблюдението е да се разграничи „нищо ново не се е случило“ от „има нова информация, но системата ни не я е получила“.

Използвайте отделни часовници за отделните забавяния

  • Възраст на последното събитие: Текущото време минус времето на последното събитие от превозвача. Това описва видимостта на пратката, а не непременно ефективността на интеграцията.
  • Забавяне при получаване: Времето на получаване минус времето на събитието. То включва забавянията при подаване и извличане нагоре по веригата, когато междинните времеви отметки не са налични.
  • Вътрешно забавяне при обработка: Времето на завършване на надеждната обработка минус времето на получаване. Това изолира работата във вашата система.
  • Забавяне при визуализация: Времето на достъпност за клиента минус времето на завършване на обработката. То може да разкрие проблеми с кеша или модела за четене.
  • Възраст на проверката: Текущото време минус последната успешна проверка за по-нова информация. Това измерва активността по проверяване, но не доказва, че потокът от превозвача е актуален.

Изчислявайте забавянето при приемане от доставчика за конкретен доставчик само ако необходимата времева отметка от доставчика съществува и значението ѝ е документирано. Без нея забавянето при получаване не може справедливо да бъде приписано на една страна.

Нормализирайте времевите отметки към еднаква часова зона, като запазвате оригиналното им представяне. Отбелязвайте липсваща информация за часовата зона, събития с бъдеща дата и несъответствия в часовниците. Не преобразувайте безшумно отрицателно забавяне в нула; разследвайте го или го класифицирайте като проблем с качеството на времевата отметка.

Сравнявайте сходни пратки

Създавайте изгледи за актуалност по превозвач, услуга или маршрут, когато са известни, статус на пратката и време от регистрацията. Разделяйте новорегистрираните пратки, които очакват първото си събитие, от пратките, които вече са в транзит. Изключвайте доставените пратки от проверките за активно движение според оперативните си правила, като запазвате всяко наблюдение след доставката, необходимо за работния ви процес.

Задавайте първоначалните прагове въз основа на бизнес изискванията и наблюдаваното поведение, а не на измислен универсален интервал за обновяване. Праг, подходящ за местна доставка, може да създава шум при трансгранично предаване. Обратно, широката средна стойност за мрежата може да скрие проблем, засягащ един превозвач.

Обозначавайте покритието на всеки панел за актуалност. Ако времевите отметки на събитията липсват за част от съвкупността, показвайте тази съвкупност отделно, вместо да представяте останалите пратки като представителни за целия трафик.

Откривайте пропуснати актуализации чрез сверяване

Самият обем на webhook-ите не може да установи пълнотата. Тихият трафик може да е нормален, а успешният отговор на webhook може да прикрива последваща грешка при обработката. Сверяването сравнява това, което референтен източник излага в момента, с това, което системата ви действително е запазила или обработила.

  1. Определете допустимата съвкупност. Включете регистрираните и активно наблюдавани пратки. Проследявайте отделно отхвърлените регистрации и спряното наблюдение, за да не изчезват от оперативните отчети.
  2. Изберете референция. Когато документираният API позволява, извличайте текущите детайли за проследяване независимо от приемането на webhook-и. Страниците за проследяване на превозвачите могат да помогнат при разследване на отделни случаи, но не трябва да се превръщат в автоматизирана зависимост от извличане на данни без разрешение.
  3. Приложете гратисен период. Позволете нормалните забавяния при доставката и обработката, преди да класифицирате разликата като предполагаем пропуск.
  4. Сравнявайте съпоставими неща. Съпоставяйте поддържаните идентификатори на събитията или използвайте документирано правило за нормализиране на времеви отметки, статуси, местоположения и описания.
  5. Възстановявайте безопасно. Възпроизвеждайте повторно запазените съобщения или извличайте разрешените актуализации чрез нормалния идемпотентен път за обработка.
  6. Потвърдете местоназначението. Проверете дали базата данни и изгледът за клиента са коригирани, а не само дали е изпълнена задача за възстановяване.

Вътрешен показател може да бъде изразен като:

Допустими сверени пратки с неразрешени разлики / Всички допустими сверени пратки

Наричайте това дял на неразрешените пропуски при сверяване, а не универсален дял на пропуснатите събития. Ако референцията излага само последното състояние, тя не може да докаже, че всяко историческо събитие е пристигнало. Дори съвпадащият краен статус може да прикрива пропуснат междинен етап.

Започнете със стратифицирана извадка по превозвачи, възраст на пратките и статуси. Разширете покритието за засегнатите сегменти по време на инцидент, съобразно документираните ограничения. Отчитайте както броя на проверените пратки, така и броя с разлики, за да не бъде малката извадка объркана с пълно покритие.

Направете приемането на webhook-и възстановимо

Проектирайте получателя така, че да валидира входящите заявки и надеждно да записва приетите съобщения, преди да ги потвърди, в съответствие с документирания договор за доставка на доставчика. Когато е практично, поддържайте по-бавната бизнес логика в отделен worker.

Проверявайте действителните правила на интеграцията, вместо да ги приемате по подразбиране: удостоверяване или проверка на подписа, изисквания за потвърждение, изчакване на заявката, условия за повторен опит, продължителност на повторните опити, подреждане и възможност за повторно възпроизвеждане. Тези детайли определят какво възстановяване трябва да осигури приложението ви.

  • Предвиждайте дубликати: Използвайте документиран идентификатор на събитието, когато е наличен. В противен случай създайте внимателно ограничен ключ за дедупликация и го тествайте спрямо легитимни сходни събития.
  • Обработвайте доставка извън ред: Запазвайте историята на събитията и използвайте изрични правила за преход, вместо сляпо да заменяте състоянието на пратката с последното получено съобщение.
  • Изолирайте грешките: Запазвайте съобщенията, които не могат да бъдат обработени, заедно с подробностите за грешката и осигурете контролиран процес за повторното им подаване.
  • Разделяйте възстановяването на състоянието от страничните ефекти: Повторното възпроизвеждане на събитие не трябва автоматично да изпраща отново стар имейл за доставка или да повтаря друго действие, насочено към клиента.

Ако интеграцията ви използва 17TRACK, използвайте официалната документация на Tracking API като справочник за реализация и проверете изискванията, приложими към вашата интеграция. Продуктовата страница на Tracking API предоставя продуктов контекст, но праговете за наблюдение и предположенията за възстановяване трябва да произтичат от документираното поведение, споразумението за услугата и производствените измервания, а не от продуктовите описания.

Превърнете таблата в действащи предупреждения

Всяко предупреждение трябва да посочва засегнатата съвкупност, вероятния етап на повредата, бизнес въздействието и първата стъпка за разследване. Глобално предупреждение „проследяването е остаряло“ рядко предоставя достатъчно информация за действие.

Модел на сигналаПърво разследванеОсновен отговорник
Заявките се провалят при няколко превозвачаПроверете идентификационните данни, мрежата, ограниченията и отговорите на доставчикаДежурният екип за интеграции или платформа
Callback-ите пристигат, но възрастта на обработката нарастваПроверете worker-ите, състоянието на базата данни и изолираните съобщенияИнженерен екип на приложението
Един превозвач показва необичайни пропуски в актуалносттаСравнете кохортите и извадка от референтните записи за проследяванеОперативният екип за проследяване съвместно с инженерния екип
Запазеното състояние е актуално, но визуализацията е стараПроверете кешовете, моделите за четене и извличането от предния крайЕкипът на приложението, ориентирано към клиента

Използвайте продължителни нарушения и минимални размери на извадката, за да намалите шума. За целите за достъпност и обработка бюджетът за грешки може да помогне да се разграничи кратка аномалия от повреда, изразходваща неприемлив дял от разрешените грешки. Поддържайте целите за актуалност на данните от превозвачите отделно от целите, които инженерният ви екип контролира пряко.

Използвайте наръчник за възстановяване, който доказва завършването

Когато започне инцидент, установете последната известна здрава точка и запазете съответните записи. Определете дали са засегнати новите регистрации, входящите съобщения, обработката или актуализациите на визуализацията. След това оценете броя на пратките в риск, вместо да отчитате само броя на заявките.

Възстановете повредения етап, възпроизведете или извлечете отново данните в рамките на документираните ограничения и извършете сверяване спрямо засегнатата съвкупност. Закрийте инцидента едва след като възрастта на натрупаната опашка се върне към нормалното, неразрешените пропуски бъдат отчетени и състоянието за клиента бъде проверено. Отбележете отделно всички исторически актуализации, които не могат да бъдат възстановени.

Тествайте този процес чрез контролирани повреди: недостъпен получател, неправилен полезен товар, прекъсване на worker, дублирано събитие, събитие извън реда и изтекли идентификационни данни. Тестът е успешен, когато екипът открие проблема, установи отговорника, възстанови данните и избегне дублирани странични ефекти, а не просто когато крайната точка отново стане достъпна.

Често задавани въпроси

Може ли API да връща успешни отговори, докато информацията за проследяване е остаряла?

Да. Успешната заявка установява, че операцията е завършила съгласно правилата на интерфейса. Тя не установява, че превозвачът е публикувал ново сканиране или че всяка последваща система е обработила резултата. Наблюдавайте отделно актуалността и обработката от край до край.

Колко често трябва да сверяваме пратките?

Изберете честота въз основа на приемливото забавяне при откриване, обема на активните пратки, бюджета за заявки и документираните ограничения. Използвайте по-чести проверки за оперативно чувствителните сегменти и по-широко планирано обхождане за покритие. Няма единен интервал, подходящ за всеки превозвач и работен процес.

Означава ли липсата на активност от webhook, че интеграцията е повредена?

Не. Възможно е да няма нови събития. Сравнете активността на callback-ите с броя на активните пратки, последните модели, състоянието на получателя и независима проверка чрез извличане, когато се поддържа. Сигнализирайте въз основа на потвърждаващи доказателства, а не само на мълчанието.

Трябва ли да извършваме непрекъснато допитване като резервен вариант?

Не по подразбиране. Неконтролираното допитване може да изразходва капацитета за заявки, без да подобрява видимостта. Използвайте ограничено сверяване и извличане, специфично за инцидента, в рамките на документираните ограничения. Потвърдете как допитването и доставката чрез webhook взаимодействат при вашия доставчик.

Какво трябва да изпратим при ескалиране на предполагаем проблем при доставчика?

Включете засегнатите типове операции, времевите диапазони в UTC, анонимизирани идентификатори на заявки, кодове на отговори, представителни препратки към пратки чрез одобрен защитен канал и очакваното спрямо наблюдаваното поведение. Обяснете кои вътрешни етапи сте проверили. Не включвайте идентификационни данни или ненужни клиентски данни.

Източници

Loading