Podobnie jak w przypadku każdej komunikacji dotyczącej awarii, czytelnik nietechniczny będzie przede wszystkim chciał zrozumieć:
- Jak długie to było?
- Jak źle było?
Metryki Amazon CloudWatch zapewniają następujące metryki dla kolejek SQS, które mogą pomóc odpowiedzieć na te pytania:
- NumberOfMessagesSent: liczba wiadomości dodanych do kolejki.
- NumberOfMessagesReceived: liczba komunikatów zwracanych przez wywołania akcji API ReceiveMessage.
- ApproximateNumberOfMessagesVisible: liczba komunikatów dostępnych do pobrania z kolejki.
Po prawidłowym wykreśleniu wskaźniki te mogą być skutecznymi pomocnikami wizualnymi w opisywaniu opóźnień w przetwarzaniu kolejek. Oto kilka przykładów z awarii, której doświadczyłem, gdy zdolność zadania do przetwarzania komunikatów w kolejce została poważnie ograniczona:
NumberOfMessagesSent & NumberOfMessagesReceived
- Typ wykresu: Wykres liniowy
- Statystyka: Suma
- Okres: 5 minut
Pokazuje wykres kontrastu między wiadomościami wysyłanymi i odbieranymi, co pomaga w określeniu, który składnik przetwarzania jest odpowiedzialny za opóźnienie. Na tym wykresie odebrane dane dramatycznie spadają, podczas gdy wysłane dane kontynuują normalny trend, więc możemy wywnioskować, że problem leży w składniku odczytu kolejki zamiast w komponencie zapisu w kolejce.
Czy to odpowiada, jak długo / jak złe było wydarzenie? Tak; opisuje procesy, na które wpływa czas.
NumberOfMessagesReceived & ApproximateNumberOfMessagesVisible
- Typ wykresu: Wykres warstwowy
- Statystyka: Suma
- Okres: 5 minut
To pokazuje głębokość kolejki na podstawie odebranych wiadomości, co pomaga pokazać, jak daleko utworzono kopię zapasową kolejki i jak ją odzyskała. Na tym wykresie możemy zobaczyć, że głębokość kolejki gwałtownie się cofnęła, gdy wystąpił problem z komponentem do czytania w kolejce, i zaczęła się ona odzyskiwać, gdy komponent do czytania w kolejce ponownie zaczął czytać wiadomości.
Czy to odpowiada, jak długo / jak złe było wydarzenie? Tak; opisuje wiadomości, na które wpłynął upływ czasu.
Graficzna dyskusja
Na obu wykresach przetwarzanie kolejki można ogólnie uznać za zdrowe, gdy linie się nakładają, i niezdrowe, gdy linie się rozchodzą. Jest to prosty wzór do nauczenia dla nietechnicznego członka zespołu i może pomóc w szybkim rozróżnieniu, gdzie i jak występują problemy, gdy są przedstawione na tych wykresach.
Aby dalej komunikować określone punkty na wykresach, wystarczy je opatrzyć adnotacjami:
Wskazówki dotyczące wykresów:
- Oznacz jednostki i osie.
- Używaj spójnych kolorów do dopasowywania wskaźników na wykresach. Zauważ, że NumberOfMessagesReceived ma kolor pomarańczowy na obu wykresach; Pomoże to zwizualizować tę samą metrykę na różnych wykresach.
- Wyrównaj w pionie wykresy opisujące podobne metryki, aby łatwiej było je porównywać w czasie.
Uwaga: Sformatowałem te wykresy do prezentacji na StackExchange, więc niekoniecznie tak przedstawiłbym je w sekcji zwłok. W tym miejscu wyraźnie usunąłem wartości z lewej osi, aby ukryć je w StackExchange; będziesz chciał zatrzymać ich w sekcji zwłok.
Dodatkowe wskazówki
- Wzmocnij swój zespół: po przeszkoleniu członków zespołu do czytania tych wykresów, nie ma powodu, aby ukrywać ich. Zastanów się nad utworzeniem pulpitu nawigacyjnego CloudWatch i zapewnieniem swoim nietechnicznym członkom zespołu dostępu do usługi IAM tylko do odczytu do CloudWatch , aby mogli oni oglądać te wykresy w dowolnym momencie.
- Konfigurowanie powiadomień: rozważ skonfigurowanie alarmów Cloudwatch na podstawie metryki ApproximateNumberOfMessagesVisible, jeśli przekracza ona pewną uzgodnioną wysoką wartość, i zasubskrybuj członków zespołu, aby powiadomić ich o potencjalnych problemach. Alarmy w Cloudwatch mają pola opisu, które są wysyłane wraz z e-mailami z powiadomieniami - pamiętaj o dołączeniu czytelnego dla człowieka opisu, aby pomóc członkom nietechnicznym w rozpowszechnieniu alarmu.
- Przeglądaj inne dane: według komentarza Evgeny , eksploruj inne dane poza tym, co zapewnia CloudWatch, i zastanów się, jak możesz przekazać te dane swojemu zespołowi. Jego przykład użycia czasu życia wiadomości w kolejce do utworzenia histogramu jest doskonałym przykładem tego kreatywnego myślenia i można to osiągnąć, rejestrując zarówno czasy wysłania, jak i odebrania wiadomości w aplikacji. Komunikat Znacznik czasu wysłania można uzyskać za pomocą atrybutu SentTimeStamp na każdej kolejce komunikatu interfejsu API ReceiveMessage. Więcej informacji tutaj .