Я хотів би встановити 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
Тож мені було цікаво, чи є у когось досвід та найкращий досвід для спільного розгортання статистики / графіту?