Что произойдет, если statsd не сможет связаться с Graphite?

Я новичок в Node.js, но, читая источник statsd, мне кажется, что если по какой-либо причине серверная часть Graphite становится недоступной, этот statsd просто выбрасывает собранную статистику на пол, а не сохраняет ее в растущем кеше. статистика. Это правильно?

(Я беспокоюсь не об удалении статистики, а о постоянно растущей куче статистики, которая не может связаться с Graphite. Так что, если мое прочтение кода верно, я счастлив!)


person Steve Rehrauer    schedule 17.08.2012    source источник
comment
Насколько я понимаю, это правильно ( github.com/etsy/statsd /blob/master/backends/graphite.js#L140).... Еще следует отметить, что statsD использует UDP, что ненадежно ( en.wikipedia.org/wiki/)   -  person dannyla    schedule 08.09.2012


Ответы (1)


Краткий ответ: это настраивается, но поведение по умолчанию — это то, что вам нужно (кеш удаляется между циклами сброса).

Длинный ответ: statsd на самом деле не отчитывается перед графитом. Однако он может загрузить плагин, который будет это делать (и он поставляется с таким плагином).

Важно понимать, что хотя плагины могут сообщать об успешной или неудачной инициализации, у них нет обратного вызова или другого варианта обратной связи для событий сброса. Плагин графита регистрирует 2 события, статус и сброс (https://github.com/etsy/statsd/blob/master/backends/graphite.js строка 230), из которых flush — единственное событие, сообщающее о метриках.

Регистр графитового плагина для события сброса. Во время события сброса узел EventEmitter будет вызывать все зарегистрированные плагины с копией кэшированных статистических данных. Каждому плагину отправляется отдельная копия без гарантии порядка. Вы можете увидеть, как это происходит, если посмотрите на https://github.com/etsy/statsd/blob/master/stats.js, строка 32, где вы увидите, что metrics_hash создается и заполняется, а затем используется для создания события сброса (строка 122).

Сам кеш удаляется сразу после заполнения копии (строки 77-120). Как вы можете видеть в коде, вы можете изменить это поведение по умолчанию для определенного типа метрики (время, датчики, счетчики, наборы), добавив запись в файл конфигурации. Например, чтобы сохранить кэш счетчика, вы должны добавить deleteCounters = true в свою конфигурацию. Обратите внимание, что эта конфигурация всегда будет хранить кешированные метрики, независимо от успеха или неудачи любого плагина.

person polo    schedule 20.06.2013