Wie kommuniziert man warteschlangenbasierte Verarbeitungsverzögerungen an nichttechnische Teammitglieder?

13

Ich bin für eine Reihe von SQS-Warteschlangenverarbeitungsjobs mit einer Skalierungsrichtlinie für die ApproximateNumberOfMessagesVisibleCloudWatch-Metrik verantwortlich. Diese Jobs können aus einer Reihe von Gründen nicht mit der Menge der gesendeten Nachrichten Schritt halten:

  • Die Beeinträchtigung des Dienstes verringert die Kapazität der Nachrichten, die verarbeitet werden können.
  • AutoScaling Höchstgrenze erreicht, während die Warteschlangentiefe weiter ansteigt.
  • S3-Ausfall wirkt sich auf andere abhängige AWS-Services ( AutoScalingService) aus, die der Warteschlangenverarbeitungsjob verwendet, um mit der Nachfrage Schritt zu halten.

Bei der Besprechung von Ausfällen mit nicht-technischen Teammitgliedern möchte ich bestimmte Verzögerungen der Warteschlangenverarbeitung mitteilen, die sich in vom Kunden sichtbaren Beeinträchtigungen niederschlagen können. Wie kann ich das mit SQS-Warteschlangen machen?

Anthony Neace
quelle

Antworten:

15

Wie bei jeder Ausfallkommunikation möchte ein nicht-technischer Leser in erster Linie Folgendes verstehen:

  • Wie lang war es?
  • Wie schlimm war es

Amazon CloudWatch-Metriken bieten die folgenden Metriken für SQS-Warteschlangen , mit denen diese Fragen beantwortet werden können:

  • NumberOfMessagesSent: Die Anzahl der einer Warteschlange hinzugefügten Nachrichten.
  • NumberOfMessagesReceived: Die Anzahl der Nachrichten, die von Aufrufen der ReceiveMessage-API-Aktion zurückgegeben wurden.
  • ApproximateNumberOfMessagesVisible: Die Anzahl der Nachrichten, die aus der Warteschlange abgerufen werden können.

Bei korrekter grafischer Darstellung können diese Metriken leistungsstarke visuelle Hilfsmittel bei der Beschreibung von Verzögerungen bei der Warteschlangenverarbeitung sein. Im Folgenden sind einige Beispiele aus einem Ausfall aufgeführt, bei dem die Kapazität des Jobs zur Verarbeitung von Warteschlangenmeldungen erheblich beeinträchtigt war:

NumberOfMessagesSent & NumberOfMessagesReceived

  • Diagrammtyp: Liniendiagramm
  • Statistik: Summe
  • Dauer: 5 Minuten

NumberOfMessagesSent & NumberOfMessagesReceived

Auf diese Weise wird der Kontrast zwischen gesendeten und empfangenen Nachrichten grafisch dargestellt. Auf diese Weise können Sie herausfinden, welche Verarbeitungskomponente für die Verzögerung verantwortlich ist. In diesem Diagramm sinkt die empfangene Metrik dramatisch, während die gesendete Metrik ihren normalen Trend beibehält. Daraus lässt sich schließen, dass das Problem in der Warteschlangenlesekomponente und nicht in der Warteschlangenschreibkomponente liegt.

Beantwortet dies, wie lange / wie schlecht das Ereignis war? Ja; beschreibt Prozesse, die im Laufe der Zeit beeinflusst werden.

Anzahl der empfangenen und ungefähren Anzahl der sichtbaren Nachrichten

  • Diagrammtyp: Gestapeltes Flächendiagramm
  • Statistik: Summe
  • Dauer: 5 Minuten

Anzahl der empfangenen und ungefähren Anzahl der sichtbaren Nachrichten

Auf diese Weise wird die Warteschlangentiefe über den empfangenen Nachrichten grafisch dargestellt, um zu zeigen, wie weit die Warteschlange gesichert und wie sie wiederhergestellt wurde. In diesem Diagramm sehen wir, dass die Warteschlangentiefe dramatisch gesichert wurde, während die Warteschlangenlesekomponente Probleme hatte, und dass die Wiederherstellung begann, als die Warteschlangenlesekomponente erneut mit dem Lesen von Nachrichten begann.

Beantwortet dies, wie lange / wie schlecht das Ereignis war? Ja; beschreibt Nachrichten, die im Laufe der Zeit betroffen sind.


Grafik Diskussion

In beiden Diagrammen kann die Warteschlangenverarbeitung im Allgemeinen als fehlerfrei angesehen werden, wenn sich die Zeilen überlappen, und als fehlerhaft, wenn sich die Zeilen unterscheiden. Dies ist ein einfaches Muster, das Sie einem nicht-technischen Teammitglied beibringen können, um schnell zu ermitteln, wo und wie Probleme mit diesen Diagrammen auftreten.

Um bestimmte Punkte in Diagrammen besser zu kommunizieren, können Sie sie einfach mit Anmerkungen versehen:

Beide vorherigen Grafiken mit Anmerkungen.

Grafiktipps:

  • Beschriften Sie Einheiten und Achsen.
  • Verwenden Sie konsistente Farben, um Kennzahlen in allen Diagrammen abzugleichen. Beachten Sie, dass NumberOfMessagesReceived in beiden Diagrammen orange ist. Auf diese Weise können Sie dieselbe Metrik in verschiedenen Diagrammen darstellen.
  • Richten Sie Diagramme, die ähnliche Metriken beschreiben, vertikal aus, damit sie über die Zeit hinweg leichter verglichen werden können.

Hinweis: Ich habe diese Diagramme für die Präsentation in StackExchange formatiert, sodass dies nicht unbedingt der Fall ist, wenn ich sie nach einem Ausfall post mortem präsentiere. Ich habe hier ausdrücklich Werte von der linken Achse entfernt, um sie von StackExchange zu verbergen. du wirst sie in deinen Obduktionen behalten wollen.


Zusätzliche Tipps

  • Befähigen Sie Ihr Team: Nachdem Sie Ihre Teammitglieder zum Lesen dieser Grafiken geschult haben, gibt es keinen Grund, sie versteckt zu halten. Erwägen Sie, ein CloudWatch-Dashboard einzurichten und Ihren nicht-technischen Teammitgliedern schreibgeschützten IAM-Zugriff auf CloudWatch zu gewähren , damit sie diese Diagramme jederzeit anzeigen können.
  • Einrichten von Benachrichtigungen: Erwägen Sie, Cloudwatch-Alarme basierend auf der Metrik ApproximateNumberOfMessagesVisible einzurichten, wenn sie einen vereinbarten hohen Wert überschreiten, und abonnieren Sie Teammitglieder, um sie über potenzielle Probleme zu informieren. Cloudwatch-Alarme haben Beschreibungsfelder, die zusammen mit den Benachrichtigungs-E-Mails gesendet werden. Stellen Sie sicher, dass Sie eine lesbare Beschreibung enthalten, damit Ihre nicht-technischen Mitglieder den Alarm verbreiten können.
  • Versuchen Sie andere Daten: Per Evgeny Kommentar , erkunden andere Daten über das, was Cloudwatch bietet und darüber nachdenken , wie Sie feststellen , dass Daten zu Ihrem Team vermitteln können. Sein Beispiel für die Verwendung der Nachrichtenlebensdauer in der Warteschlange zum Erstellen eines Histogramms ist ein gutes Beispiel für dieses kreative Denken und kann durch Protokollieren der Sende- und Empfangszeiten von Nachrichten in Ihrer Anwendung erreicht werden. Sie können den gesendeten Zeitstempel der Nachricht über das SentTimeStamp-Attribut in jeder Warteschlangennachricht der ReceiveMessage-API-Antwort abrufen. Weitere Details hier .
Anthony Neace
quelle
1
Es ist auch sehr nützlich, Daten aus verschiedenen Blickwinkeln zu betrachten, nicht nur aus den von CloudWatch bereitgestellten. Wenn Sie beispielsweise ein Histogramm anzeigen können, wie lange jede Nachricht in der Warteschlange verbleibt, wird angezeigt, dass einige Nachrichten X-mal verbleiben, während andere X * 2-mal verbleiben. Und während eines Ausfalls verschiebt das Histogramm seine Höhepunkte in Richtung X * 4 oder etwas, das extrem stark zu sehen ist.
Evgeny
4
Außerdem möchte ich nur sagen: Dies ist eine absolut erstaunliche Antwort.
Evgeny
Vielen Dank @Evgeny! Das ist eine großartige Idee, und ich habe der darauf basierenden Antwort einen weiteren Tipp hinzugefügt, der Ihrem Kommentar alle Ehre macht.
Anthony Neace