Архитектура statsd для распределенной системы
Я учусь использовать стек графита - statsd - collectd для мониторинга распределенной системы.
Я протестировал компоненты (графит-сеть, углерод, шепот, statsd, collectd и grafana) в локальном экземпляре.
Однако я не совсем понимаю, как распределять эти компоненты в распределенной системе: - Узел монитора с графитовой сетью (и графаном), углеродом и шепотом. - В каждом рабочем узле: statsd и collectd отправляют данные на углеродный сервер в удаленный узел мониторинга.
Правильна ли эта схема? Что я должен настроить statsd и collectd, чтобы получить приемлемое использование сети (tcp / udp, пакетов в секунду...)?
1 ответ
Предполагая, что у вас относительно легкая рабочая нагрузка, хорошо работать с узлом, который управляет графитовой сеткой, графаном и углеродом (который сам управляет базой данных шепота).
Тогда у вас должен быть отдельный узел для вашей статистики. Каждый из ваших компьютеров / приложений должен иметь код клиента statsd, который отправляет ваши метрики этому узлу statsd. Этот узел statsd должен затем перенаправить эти метрики на ваш углеродный узел.
Для больших рабочих нагрузок, которые испытывают нагрузку на один узел, вам нужно либо масштабировать по вертикали (получить более мощный узел для размещения ваших экземпляров Carbon / statsd), либо начать кластеризацию этих сервисов.
Углеродные кластеры, как правило, используют какой-то тип ретранслятора, который вы отправляете для управления пересылкой этих метрик в кластер (обычно с использованием согласованного хеширования). Вы можете использовать аналогичную настройку для последовательного хеширования метрик для кластера серверов statsd.