Kuyruk tabanlı işleme gecikmelerini teknik olmayan ekip üyelerine nasıl iletirim?


13

ApproximateNumberOfMessagesVisibleCloudWatch metriğinde bir ölçekleme politikası olan bir dizi SQS kuyruk işleme işinden sorumluyum. Bu işler, birçok nedenden dolayı gönderilen ileti miktarını yakalayamayabilir:

  • Servis bozulması işlenebilen mesajların kapasitesini azaltır.
  • AutoScaling kuyruk derinliği artmaya devam ederken maksimum sınıra ulaşıldı.
  • S3 Kesintisi AutoScaling, kuyruk işleme işinin talebi karşılamak için kullandığı diğer bağımlı AWS hizmetlerini ( hizmetini) etkiler .

Teknik olmayan ekip üyeleriyle kesintileri tartışırken, müşteri tarafından görülebilir bozulmalara dönüşebilecek belirli kuyruk işleme gecikmelerini bildirmek istiyorum. Bunu SQS kuyruklarıyla nasıl yapabilirim?

Yanıtlar:


15

Herhangi bir kesinti iletişiminde olduğu gibi, teknik olmayan bir okuyucu öncelikle şunları anlamaya çalışacaktır:

  • Ne kadar uzundu?
  • Ne kadar kötüydü?

Amazon CloudWatch metrikleri, bu soruların yanıtlanmasına yardımcı olabilecek SQS kuyrukları için aşağıdaki metrikleri sağlar :

  • NumberOfMessagesSent: Bir kuyruğa eklenen mesaj sayısı.
  • NumberOfMessagesReceived: ReceiveMessage API eylemine çağrılar tarafından döndürülen mesaj sayısı.
  • YaklaşıkSayıOfMesajlarıVisible: Kuyruktan alınabilecek mesaj sayısı.

Doğru şekilde grafik çizildiğinde, bu metrikler kuyruk işleme gecikmelerini tanımlamak için güçlü görsel yardımcılar olabilir. İşte işin kuyruk iletilerini işleme kapasitesinin ciddi şekilde bozulduğu bir kesinti örneğidir:

NumberOfMessagesSent & NumberOfMessagesAlı

  • Grafik Türü: Çizgi Grafiği
  • İstatistik: Toplam
  • Süre: 5 dakika

NumberOfMessagesSent & NumberOfMessagesAlı

Bu, gönderilen ve alınan mesajlar arasındaki kontrastı grafikleyerek gecikmeden hangi işleme bileşeninin sorumlu olduğunu izole etmeye yardımcı olur. Bu grafikte, gönderilen metrik normal eğilimine devam ederken alınan metrik önemli ölçüde düşer, bu nedenle sorunun kuyruk yazma bileşeni yerine kuyruk okuma bileşeninde yattığını söyleyebiliriz.

Bu olay ne kadar sürdü / ne kadar kötü oldu? Evet; zaman içinde etkilenen süreçleri açıklar.

NumberOfMessagesReceived & YaklaşıkNumberOfMessagesVisible

  • Grafik Türü: Yığılmış Alan Grafiği
  • İstatistik: Toplam
  • Süre: 5 dakika

NumberOfMessagesReceived & YaklaşıkNumberOfMessagesVisible

Bu, alınan iletilerin üstündeki kuyruk derinliğini gösterir, bu da kuyruğun ne kadar yedeklendiğini ve nasıl kurtarıldığını göstermeye yardımcı olur. Bu grafikte, kuyruk okuma bileşeni sorun yaşarken kuyruk derinliğinin önemli ölçüde yedeklendiğini görebilir ve kuyruk okuma bileşeni tekrar mesajları okumaya başladığında toparlanmaya başlayabilir.

Bu olay ne kadar sürdü / ne kadar kötü oldu? Evet; zaman içinde etkilenen mesajları açıklar.


Grafik Tartışması

Her iki grafikte de kuyruk işleme genellikle çizgiler çakıştığında sağlıklı, çizgiler ayrıldığında sağlıksız olarak değerlendirilebilir. Bu, teknik olmayan bir ekip üyesine öğretilmesi kolay bir modeldir ve bu grafiklerle sunulduğunda sorunların nerede ve nasıl hızlı bir şekilde dağılmasına yardımcı olabilir.

Grafiklerdeki belirli noktaları daha fazla iletmek için bunlara açıklama ekleyebilirsiniz:

Ek açıklama içeren önceki her iki grafik.

Grafik İpuçları:

  • Etiket birimleri ve eksenler.
  • Metrikleri grafikler arasında eşleştirmek için tutarlı renkler kullanın. Her iki grafikte NumberOfMessagesReceived'nin turuncu olduğunu unutmayın; bu, aynı metriği farklı grafiklerde görselleştirmeye yardımcı olur.
  • Benzer ölçümleri tanımlayan grafikleri, zaman içinde karşılaştırılması daha kolay olacak şekilde dikey olarak hizalayın.

Not: Bu grafikleri StackExchange'te sunulacak şekilde biçimlendirdim, bu yüzden bunları mutlaka bir kesinti sonrası ölümde sunacağım gibi değil. Açıkça burada sol eksenden değerleri StackExchange onları gizlemek için kaldırdık; onları post-mortem'lerinizde tutmak isteyeceksiniz.


Ek ipuçları

  • Ekibinize Güç Verin: Ekip üyelerinize bu grafikleri okumaları için eğitim verdikten sonra, onları gizli tutmak için hiçbir neden yoktur. Bir CloudWatch Panosu oluşturmayı ve teknik olmayan ekip üyelerinize CloudWatch'a salt okunur IAM erişimi vermelerini sağlayın , böylece bu grafikleri her zaman görüntüleyebilirler.
  • Bildirimleri Ayarlayın: Üzerinde anlaşılan bazı yüksek değerleri aşarsa Cloudwatch Alarmlarını YaklaşıkNumaraOfMessagesVisible metriğine göre ayarlamayı düşünün ve ekip üyelerine olası sorunları bildirmeleri için abone olun. Cloudwatch Alarmları, bildirim e-postalarıyla birlikte gönderilen açıklama alanlarına sahiptir; teknik olmayan üyelerinizin alarmı yaymasına yardımcı olmak için okunabilir bir açıklama eklediğinizden emin olun.
  • : Diğer Veri keşfi Başına Evgeny yorumuna , CloudWatch sağlar ötesinde diğer verileri incelemek ve ekibinizi bu verileri iletmek nasıl düşünün. Histogram oluşturmak için sıradaki mesaj ömrünü kullanma örneği, bu yaratıcı düşüncenin harika bir örneğidir ve hem mesaj gönderme hem de mesaj alma sürelerini uygulamanızda günlüğe kaydederek gerçekleştirilebilir. Alınan Zaman Damgası iletisini , ReceiveMessage API yanıtının her kuyruk iletisindeki SentTimeStamp Özniteliği aracılığıyla alabilirsiniz . Daha fazla ayrıntı burada .

1
Ayrıca, yalnızca CloudWatch tarafından sağlananlara değil, farklı görünüm noktalarındaki verilere bakmak da çok yararlıdır. Örneğin, her iletinin kuyrukta ne kadar süre kalacağına dair bir histogram gösterebilir , bazı iletilerin X süresi kadar kaldığını, bazılarının ise X * 2 kez kalacağını gösterebilirsiniz. Ve kesintiler sırasında histogram yüksek noktalarını X * 4'e ya da görmek için son derece güçlü bir şeye doğru hareket ettirir.
Evgeny

4
Ayrıca, sadece şunu söylemek istiyorum: Bu kesinlikle şaşırtıcı bir cevap.
Evgeny

Teşekkürler @Evgeny! Bu harika bir fikir ve cevabınıza verdiğiniz cevaba, yorumunuza değer vererek başka bir ipucu daha ekledim.
Anthony Neace
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.