Yüksek oranda erişilebilir, Web'de erişilebilir ve ölçeklenebilir istatistik ve grafit dağıtımı


17

HTMLd aygıtlarında çalışan JS uygulamalarını günlüğe kaydedebilmem için statsd / graphite ayarlamak istiyorum (örn. İçerdiği LAN ortamında değil ve büyük olasılıkla doğrudan denetlemediğim büyük miktarda veri ile).

Kısıtlarım:

  • giriş noktası HTTP konuşmalıdır: Bu, basit bir HTTP-UDP-istatistikd proxy'si tarafından çözülür (örn. github'da httpstatsd)
  • tek bir sunucunun başarısızlığına direnmelidir (Murphy kanunları ile savaşmak için :)
  • yatay olarak ölçeklenebilir olmalıdır: web ölçeği, bebek! :)
  • mimari mümkün olduğunca basit (ve ucuz) tutulmalıdır
  • sunucularım sanal makineler
  • veri dosyaları bir dosyalama cihazında saklanacaktır (NFS ile)
  • Tcp / udp donanım yük dengeleyicilerim var

Kısacası, veri yolu: [istemci] - (http) -> [http2statsd] - (udp) -> [statsd] - (tcp) -> [grafit] - (nfs) -> [dosyalayıcı]

Bulgularım şu ana kadar:

  • http2statsd bölümünü ölçeklendirmek kolaydır (vatansız cinler)
  • statsd parçasının ölçeklendirilmesi kolay görünmüyor (sanırım toplam, avg, min, maks ... gibi toplu veriler için grafitte tutarsız değerler elde ediyorum). HTTP arka plan programı anahtarları parçalamak için tutarlı karma yapmadığı sürece. Belki bir fikir ... (ama sonra HA sorusu var)
  • grafit parçasının ölçeklendirilmesi parçalama (karbon-röle kullanılarak) ile yapılabilir (ancak bu HA sorusunu da çözmez). Açıkçası birkaç fısıltı örneği aynı NFS dosyasını yazmamalıdır.
  • Disk denetleme parçasının ölçeklendirilmesi sorunun bir parçası değildir (ancak daha az IO, daha iyi :)
  • sadece paylaşılan NFS verilerini okudukları için webapp'ı ölçeklendirmek (test etmedim de) açık görünüyor

Yani sağlam bir istatistik / grafit dağıtımı için paylaşmak için deneyimleri ve en iyi uygulamaları olup olmadığını merak ediyordum?


Etsy'nin blog yazıları hakkında StatsD hakkındaki yorumları okuyarak, her 10 saniyede bir StatsD 10.000-30.000 metrik beslediklerini yazıyorlar. Bir http2statsd müşteri bir statsd sunucuyu birbirine bağlayan önermek ve onu shard ediyorum eğer statsd gönderilen metrik değerlerin sayısı bir darboğaz haline gelir.
pkhamre

Sonunda bunu uyguladın mı? Öyleyse, ayrıntıları paylaşabilir misiniz?
16:16

Yanıtlar:


1

Tutarlı karma özelliğine sahip bir istatistikd proxy'si vardır, bu da her biri kendi metrik adlarını kullanarak istatistik trafiğini birden fazla istatistikd toplayıcısı arasında yaymayı mümkün kılar. İstatistik işlemlerini ölçeklendirmenize izin veren, mimarinizdeki önemli bir ölçeklenebilirlik öğesidir.

Grafit de zor, ancak umarım sonsuz ölçeğe ihtiyacınız olmaz ve servis veya başka bir statik parametre ile ince parçalama yapabilirsiniz.

En zor kısmı web uygulamasını ölçeklendirmektir ve en ağır grafik sorgularınızın ne olduğuna çok bağlıdır. Ancak en zor grafikler için verileri önceden toplayabilir ve yükün çoğundan kurtulabilirsiniz.

Tüm bu acılardan kaçınmak için HostedGraphite'ı oldukça uzun süredir kullanıyorum, bu adamlar Karbon için kendi Riak arka uçlarını uyguladılar ve orada tüm ölçeklendirmeleri yaptık.

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.