2014-11-06 2 views
8

Я использую Graphite + Statsd (с клиентом Python) для сбора пользовательских показателей из webapp: счетчика успешных транзакций. Предположим, что счетчик stats.transactions.count, который также имеет показатель скорости/в секунду в stats.transactions.rate.Как предупредить в Seyren с графитом, если транзакции за последние 60 минут меньше, чем x?

Я также установил Seyren в качестве системы мониторинга + предупреждения и успешно вытащил метрики из графита. Теперь Я хочу настроить оповещение в Seyren, если количество успешных транзакций за последние 60 минут меньше определенного минимума.

Какую функцию метрика и графит использовать? Я пробовал с summarize(metric, '1h'), но это дает мне предупреждение каждый час, когда Graphite начинает агрегировать метрику для начального часа.

Обратите внимание, что Seyren также позволяет указать параметры Graphite from и until, если это помогает.

ответ

14

Я внесла код Seyren для поддержки from/until, чтобы справиться с этой точной ситуацией.

Следующая конфигурация должна поднять предупреждение, если счетчик за последний час опускается ниже 50, и ошибка, если она опускается ниже 25.

  • Target: реферирования (nonNegativeDerivative (stats.transactions.count), "1 час", "сумма", правда)
  • От:-1h
  • To: [пробел]
  • Предупреждать: 50 (мягкий минимум)
  • Ошибка: 25 (жесткий минимум)

Примечания это будет работать каждую минуту, так что «последний час» является скользящей шкалой. Также обратите внимание, что третий логический параметр true для функции суммирования говорит ему о выравнивании своего 1-го ведра с From, что означает, что вы получаете полный 1-часовой ведро, начинающийся 1 час назад, вместо того, чтобы случайно получить половину ведра. (Новые версии Graphite могут делать это автоматически.)

Ваш пробег может отличаться. У меня были проблемы с этим подходом, когда счетчик возвращается к 0 при перезапуске сервера. Но в моем случае я использую метрики dropwizard + графит, а не statsd + graphite, поэтому у вас может не быть этой проблемы.

Пожалуйста, дайте мне знать, подходит ли этот подход для вас!

+3

Спасибо! Я использовал интеграл (transformNull (stats.transactions.count, 0)) fom -1h для [blank] для достижения аналогичного результата. Возможно, мы можем внести некоторые примеры в документы Seyren? – dukebody

Смежные вопросы