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


13

Я несу відповідальність за набір завдань по обробці черг SQS з політикою масштабування за ApproximateNumberOfMessagesVisibleметрикою CloudWatch. Ці завдання не можуть бути в курсі кількості повідомлень, надісланих з будь-якої кількості причин:

  • Деградація послуги зменшує ємність повідомлень, які можна обробити.
  • AutoScaling максимальна межа, досягнута, поки глибина черги продовжує зростати.
  • Випуск S3 впливає на інші залежні послуги ( AutoScalingсервіс) AWS, якими використовується робота з обробки черги, щоб не відставати від попиту.

Обговорюючи відключення роботи з членами нетехнічної команди, я хотів би повідомити про конкретні затримки обробки черги, які можуть призвести до видимих ​​замовникам деградацій. Як я можу це зробити в черзі SQS?

Відповіді:


15

Як і у випадку будь-яких комунікацій з відключенням, нетехнічний читач в першу чергу шукає розуміння:

  • Як довго це було?
  • Як це було погано?

Показники Amazon CloudWatch надають такі показники для черг SQS, які можуть допомогти відповісти на ці питання:

  • NumberOfMessagesSent: Кількість повідомлень, доданих до черги.
  • NumberOfMessagesReceived: Кількість повідомлень, що повертаються дзвінками до дії API ReceiveMessage.
  • ПриблизнийNumberOfMessagesVisible: Кількість повідомлень, доступних для отримання з черги.

Якщо правильно зафіксовано, ці показники можуть бути потужними візуальними посібниками при описі затримок обробки черги. Ось декілька прикладів перебоїв, які я зазнав, коли можливість роботи з обробкою повідомлень черги була сильно погіршена:

NumberOfMessagesSent & NumberOfMessagesReceived

  • Тип графіка: Лінійний графік
  • Статистика: Сума
  • Період: 5 хвилин

NumberOfMessagesSent & NumberOfMessagesReceived

Це графік контрасту між надісланими та отриманими повідомленнями, що допомагає виділити, який компонент обробки відповідає за затримку. У цьому графіку отриманий показник різко падає, тоді як відправлений показник продовжується у звичайному напрямку, тому ми можемо зробити висновок, що проблема лежить у компоненті читання черги замість компонента запису черги.

Чи відповідає це, як довго / як погано відбулася подія? Так; описує процеси, на які впливає час.

NumberOfMessagesReceived & ApproximateNumberOfMessagesVisible

  • Тип графіка: Складений графік області
  • Статистика: Сума
  • Період: 5 хвилин

NumberOfMessagesReceived & ApproximateNumberOfMessagesVisible

Цей графік відображає глибину черги вгорі отриманих повідомлень, що допомагає показати, наскільки резервна копія черги та як її відновлено. На цьому графіку ми бачимо, що глибина черги різко резервувалась, коли компонент читання черги мав проблеми, і почав відновлюватися, коли компонент читання черги знову почав читати повідомлення.

Чи відповідає це, як довго / як погано відбулася подія? Так; описує повідомлення, на які впливає час.


Графічне обговорення

В обох графіках обробка черг, як правило, може вважатися здоровою, коли рядки перетинаються, і нездоровою, коли лінії розходяться. Це легкий зразок, який можна навчити члену команди, який не є технічним, і може допомогти їм швидко розповсюдити, де і як виникають проблеми, коли вони представлені з цими графіками.

Для подальшого спілкування конкретних точок у графіках, ви можете просто зазначити їх:

Обидва попередні графіки з анотаціями.

Поради щодо графіку:

  • Мітки та осі міток.
  • Використовуйте послідовні кольори для відповідності показників для графіків. Зауважте, що NumberOfMessagesReceived має оранжевий колір в обох графіках; це допоможе візуалізувати один і той же показник для різних графіків.
  • Вертикально вирівняйте графіки, що описують подібні показники, щоб їх було легше порівнювати за часом.

Примітка: я відформатував ці графіки для презентації на StackExchange, тому не обов'язково вони будуть представити їх після відключення. Я явно видалив значення з лівої осі тут, щоб затемнити їх із StackExchange; ви хочете зберегти їх у своїх посмертних життях.


Додаткові поради

  • Розширення можливостей своєї команди: Після навчання членів вашої команди читати ці графіки, немає ніяких причин тримати їх прихованими. Подумайте про налаштування інформаційної панелі CloudWatch та надання вашим членам нетехнічної команди доступу для IAM лише для читання до CloudWatch , щоб вони могли будь-коли переглядати ці графіки.
  • Налаштування сповіщень: Подумайте про налаштування сигналів Cloudwatch на основі показника приблизногоNumberOfMessagesVisible, якщо він перевищує деяке узгоджене високе значення, і підпишіться членів команди, щоб повідомляти їх про можливі проблеми. У Cloudwatch Alarms є поля опису, які надсилаються разом із повідомленнями електронної пошти. Обов'язково додайте до них доступний для читання людський опис, щоб допомогти вашим нетехнічним членам розповсюджувати тривогу.
  • Дослідіть інші дані: за коментарем Євгена , вивчіть інші дані, крім того, що надає CloudWatch, і подумайте, як ви можете передати ці дані своїй команді. Його приклад використання життя повідомлення в черзі для створення гістограми є чудовим прикладом цього творчого мислення, і його можна досягти, записуючи як час надсилання повідомлення, так і час отримання повідомлення у вашій програмі. Ви можете отримати повідомлення Sent Timestamp через атрибут SentTimeStamp у кожному повідомленні черги відповіді API ReceiveMessage. Детальніше тут .

1
Також дуже корисно дивитись на дані з різних точок зору, а не лише з тих, які надає CloudWatch. Наприклад, якщо ви можете показати гістограму, скільки часу кожне повідомлення залишається у черзі, показуючи, що деякі повідомлення залишаються на X час, а інші залишаються на X * 2 рази. А під час відключень гістограма рухає свої найвищі точки у напрямку до X * 4 або чогось іншого ... надзвичайно потужного для бачення.
Євгеній

4
Також просто хочу сказати: це одна абсолютно дивовижна відповідь.
Євгеній

Дякую @Evgeny! Це чудова ідея, і я додав ще одну пораду до відповіді, заснованої на ній, з врахуванням вашого коментаря.
Ентоні Нічі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.