Подтвердить что ты не робот

Есть ли способ заполнить недостающие данные в графите при использовании statsD?

Я использую statsD для отправки данных счетчику в графит; отправляет галочку каждый раз, когда я получаю сообщение. Это отлично работает, за исключением ситуации, когда statsD должен перезагружаться по любой причине. Затем я получаю огромные дыры на моих графиках, так как statsD теперь больше не отправляет "0" каждые 10 секунд для периодов, когда я не получал никаких сообщений.

Я сообщаю о различных типах сообщений и очередях, и иногда я не получаю сообщение для определенной очереди в течение длительного времени.

Существует ли какой-либо существующий способ "заполнить" отсутствующие данные значением по умолчанию, которое я указываю (в моем случае это будет 0)?

Я подумал о том, чтобы отправить счетчик "0" для данной метрики, чтобы statsD начал отправлять 0 для него, но я не всегда знаю набор показателей, о которых я буду сообщать заранее.

4b9b3361

Ответ 1

Если вы просто хотите "заполнить" визуальный график нулями, посмотрите "Параметры графика → Линейный режим → Нарисуйте нуль как ноль". Это не позволит вам установить значение, отличное от 0, и оно не приведет к появлению 0, если вы получите данные в формате json или csv, но часто это то, что вы хотите, если хотите просто посмотреть график с некоторыми растягивается, когда данные не записываются.

without Draw Null as Zero

With Draw Null as Zero

Ответ 2

Проверьте функцию transformNull, которую предоставляет Graphite. например.

transformNull(stats.timers.deploys.all.duration.total.mean, 0)

Это отобразит разделы с нулевыми данными в 0.

Ответ 3

Вы можете использовать функцию "keepLastValue (requestContext, seriesList)" в графите для обработки отсутствующих данных. Он "[c] выводит строку с последним полученным значением, когда пробелы (" Нет значений ") отображаются в ваших данных, а не ломаются."

Ответ 4

Решение этой проблемы заключается не в том, чтобы сохранить последнее значение или преобразовать нули. Реализация одного из этих параметров приведет только к отображению неверных данных, и вы не будете предупреждены, если что-то не так.

Вам нужно изменить схему хранения, чтобы он хранил объем данных, которые вы отправляете, и не более того.

Если метрики отправляются каждые 5 секунд, а схема хранения - 1 с, вы получите пять точек данных, четыре из которых будут пустыми.

Проверьте этот документ: https://github.com/etsy/statsd/blob/master/docs/graphite.md