2013-03-11 1 views
4

Есть ли способ фильтровать показатели в Graphite, игнорируя иерархию?Метрический фильтр в графите - игнорирование иерархии (точки)

Например: Скажем, у меня есть следующие показатели:

stats_count.A.B.TestMetric 
stats_count.A.TestMetric 
stats.A.B.TestMetric 
stats.A.B.TestMetric 

Как я могу подвести TestMetric под stats_count только?

Я попробовал следующее без успеха:

stats_counts.*.*.TestMetric - obviously this won't work... 
sumSeriesWithWildcards(stats_counts.[A-Z\.]*[A-Z]*.TestMetric,1) 
sumSeriesWithWildcards(stats_counts.[A-Z]*[.]*[A-Z]*.TestMetric,1) 

Любые идеи? Это вообще возможно?

+0

Do A и B принимают набор исправлений значений или они неизвестны? –

+0

Их следует считать неизвестными (иначе я мог бы просто использовать какое-либо «или» условие «дублировать» фильтр). Единственными известными именами являются stats_count + TestMetric. Я хочу решить его в общем виде, что означает возможность суммирования даже таких серий, как: stats_count. *. *. *. *. TestMetric –

+1

Боюсь, я не думаю, что вы хотите. Графит очень разработан вокруг последовательных, унифицированных схем пути. –

ответ

4

У меня есть установка графита (версия 0.9.9), где я создаю метрики на множестве небольших систем

Например, у меня есть 2 установок базы данных PostgreSQL (PostgreSQL-1 и 2-PostgreSQL), где вторая - подчиненная репликация первого. Первая база данных используется для повседневного использования, а вторая - для горячего резервирования, используемого в основном системами отчетности и отладочными запросами.

Я думаю, что следующий пример - это то, что вы хотите сделать. Изображение представляет собой количество подключений в обеих базах данных. Синяя линия находится на первом, зеленая линия на секунду в то время как красная линия является суммой обеих серий, давая общее количество соединений

database.postgresql-1.connection.ALL.value    # blue line 
database.postgresql-2.connection.ALL.value    # green line 
sumSeries(database.postgresql-*.connection.ALL.value) # red line 

amount of connections

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

данный

stats_count.A.B.TestMetric 
stats_count.A.TestMetric 
stats.A.B.TestMetric 
stats.A.B.TestMetric 

сумма stats_count ** TestMetric метрики с использованием

sumSeries(stats_count.*.TestMetric, stats_count.*.*.TestMetric) 

Графит все еще нуждается много улучшений и, к сожалению. разработка идет довольно медленно (например, версия 0.9.10 является последней версией, имеет проблемы с установкой и от 1 года назад). Я действительно рассматриваю вопрос о форсировании/содействии этому проекту

+0

Спасибо за ваш ответ. В настоящее время ваш метод решения довольно решает проблему. Это условие «ИЛИ», о котором я упомянул в своих комментариях выше. Так что Graphite не поддерживает это в настоящее время. Еще раз спасибо! –