Як і у випадку будь-яких комунікацій з відключенням, нетехнічний читач в першу чергу шукає розуміння:
- Як довго це було?
- Як це було погано?
Показники Amazon CloudWatch надають такі показники для черг SQS, які можуть допомогти відповісти на ці питання:
- NumberOfMessagesSent: Кількість повідомлень, доданих до черги.
- NumberOfMessagesReceived: Кількість повідомлень, що повертаються дзвінками до дії API ReceiveMessage.
- ПриблизнийNumberOfMessagesVisible: Кількість повідомлень, доступних для отримання з черги.
Якщо правильно зафіксовано, ці показники можуть бути потужними візуальними посібниками при описі затримок обробки черги. Ось декілька прикладів перебоїв, які я зазнав, коли можливість роботи з обробкою повідомлень черги була сильно погіршена:
NumberOfMessagesSent & NumberOfMessagesReceived
- Тип графіка: Лінійний графік
- Статистика: Сума
- Період: 5 хвилин
Це графік контрасту між надісланими та отриманими повідомленнями, що допомагає виділити, який компонент обробки відповідає за затримку. У цьому графіку отриманий показник різко падає, тоді як відправлений показник продовжується у звичайному напрямку, тому ми можемо зробити висновок, що проблема лежить у компоненті читання черги замість компонента запису черги.
Чи відповідає це, як довго / як погано відбулася подія? Так; описує процеси, на які впливає час.
NumberOfMessagesReceived & ApproximateNumberOfMessagesVisible
- Тип графіка: Складений графік області
- Статистика: Сума
- Період: 5 хвилин
Цей графік відображає глибину черги вгорі отриманих повідомлень, що допомагає показати, наскільки резервна копія черги та як її відновлено. На цьому графіку ми бачимо, що глибина черги різко резервувалась, коли компонент читання черги мав проблеми, і почав відновлюватися, коли компонент читання черги знову почав читати повідомлення.
Чи відповідає це, як довго / як погано відбулася подія? Так; описує повідомлення, на які впливає час.
Графічне обговорення
В обох графіках обробка черг, як правило, може вважатися здоровою, коли рядки перетинаються, і нездоровою, коли лінії розходяться. Це легкий зразок, який можна навчити члену команди, який не є технічним, і може допомогти їм швидко розповсюдити, де і як виникають проблеми, коли вони представлені з цими графіками.
Для подальшого спілкування конкретних точок у графіках, ви можете просто зазначити їх:
Поради щодо графіку:
- Мітки та осі міток.
- Використовуйте послідовні кольори для відповідності показників для графіків. Зауважте, що NumberOfMessagesReceived має оранжевий колір в обох графіках; це допоможе візуалізувати один і той же показник для різних графіків.
- Вертикально вирівняйте графіки, що описують подібні показники, щоб їх було легше порівнювати за часом.
Примітка: я відформатував ці графіки для презентації на StackExchange, тому не обов'язково вони будуть представити їх після відключення. Я явно видалив значення з лівої осі тут, щоб затемнити їх із StackExchange; ви хочете зберегти їх у своїх посмертних життях.
Додаткові поради
- Розширення можливостей своєї команди: Після навчання членів вашої команди читати ці графіки, немає ніяких причин тримати їх прихованими. Подумайте про налаштування інформаційної панелі CloudWatch та надання вашим членам нетехнічної команди доступу для IAM лише для читання до CloudWatch , щоб вони могли будь-коли переглядати ці графіки.
- Налаштування сповіщень: Подумайте про налаштування сигналів Cloudwatch на основі показника приблизногоNumberOfMessagesVisible, якщо він перевищує деяке узгоджене високе значення, і підпишіться членів команди, щоб повідомляти їх про можливі проблеми. У Cloudwatch Alarms є поля опису, які надсилаються разом із повідомленнями електронної пошти. Обов'язково додайте до них доступний для читання людський опис, щоб допомогти вашим нетехнічним членам розповсюджувати тривогу.
- Дослідіть інші дані: за коментарем Євгена , вивчіть інші дані, крім того, що надає CloudWatch, і подумайте, як ви можете передати ці дані своїй команді. Його приклад використання життя повідомлення в черзі для створення гістограми є чудовим прикладом цього творчого мислення, і його можна досягти, записуючи як час надсилання повідомлення, так і час отримання повідомлення у вашій програмі. Ви можете отримати повідомлення Sent Timestamp через атрибут SentTimeStamp у кожному повідомленні черги відповіді API ReceiveMessage. Детальніше тут .