Високодоступне, доступне в Інтернеті та масштабоване розгортання статистики та графіту


17

Я хотів би встановити statsd / graphite, щоб я міг реєструвати JS-програми, що працюють на пристроях HTML (тобто не в умовах локальної локальної мережі та, можливо, з великим обсягом вхідних даних, які я безпосередньо не контролюю).

Мої обмеження:

  • точка входу повинна говорити HTTP: це вирішується простим проксі HTTP-UDP-statsd (наприклад, httpstatsd на github)
  • повинні протистояти відмові єдиного сервера (щоб боротися із законом Мерфі :)
  • повинно бути горизонтально масштабованим: веб-масштаб, дитина! :)
  • архітектура повинна зберігатися максимально просто (і дешево)
  • мої сервери - це віртуальні машини
  • файли даних зберігатимуться на пристрої набору даних (з NFS)
  • У мене в розпорядженні балансові навантаження для апаратного забезпечення tcp / udp

Коротше кажучи, шлях даних: [клієнт] - (http) -> [http2statsd] - (udp) -> [statsd] - (tcp) -> [графіт] - (nfs) -> [filer]

Мої висновки поки що:

  • масштабування частини http2statsd легко (демони без громадянства)
  • масштабування частини statsd не здається простим (я думаю, я закінчував би невідповідними значеннями графіту для сукупних даних, таких як сума, avg, min, max ...). Якщо HTTP-демон не буде послідовно виконувати хешування для того, щоб розділити ключі. Можливо, ідея ... (але тоді виникає питання НА)
  • масштабування графітової частини можна здійснити шляхом заточування (за допомогою вуглецевого реле) (але це також не вирішує питання НА). Очевидно, кілька екземплярів шепіту не повинні записувати один і той же файл NFS.
  • Масштабування файлової частини не є частиною питання (але чим менше IO, тим краще :)
  • масштабування веб-сторінки здається очевидним (хоча я не перевірявся), оскільки вони читають лише спільні дані NFS

Тож мені було цікаво, чи є у когось досвід та найкращий досвід для спільного розгортання статистики / графіту?


Читаючи коментарі до блогу Etsy про StatsD, вони пишуть, що вони кожні 10 секунд подають 10 000-30 000 метрик StatsD. Я б запропонував зв’язати один клієнт http2statsd з одним сервером statsd і розподілити його, якщо кількість метрик, надісланих статистиці, стане вузьким місцем.
pkhamre

Чи реалізували ви це врешті-решт? Якщо так, ви могли б поділитися деталями?
gf_

Відповіді:


1

Існує statsd проксі з послідовним хешуванням, що дозволяє поширювати трафік statsd між кількома агрегататорами statsd, кожен з яких використовує власний набір метричних імен. Це важливий елемент масштабування у вашій архітектурі, що дозволяє масштабувати статистичні процеси.

Графіт теж складний, але, сподіваємось, вам не знадобиться нескінченний масштаб і ви зможете зробити просто тонке заточування за допомогою сервісу чи іншого статичного параметра.

Найважче - це масштабування веб-сторінки, і це багато залежить від ваших найважчих запитів графіків. Однак ви завжди можете попередньо зібрати дані для найскладніших графіків і позбутися більшої частини навантаження.

Я використовую HostedGraphite досить довгий час, щоб уникнути всього цього болю, ці хлопці впровадили свій власний бекенд Riak для Carbon і роблять все масштабування там.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.