Фильтр метрик в Graphite — игнорировать иерархию (точки)

Есть ли способ фильтровать метрики в 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)

Есть идеи? Это вообще возможно?


person Tomer Peled    schedule 11.03.2013    source источник
comment
Принимают ли A и B фиксированный набор значений или они неизвестны?   -  person Ben Butler-Cole    schedule 17.04.2013
comment
Их следует считать неизвестными (иначе я мог бы просто использовать некоторые или условия, продублировав фильтр). Единственные известные имена — stats_count + TestMetric. Я хочу решить это в общем виде, что означает возможность суммировать даже ряды, такие как: stats_count.*.*.*.*.TestMetric   -  person Tomer Peled    schedule 18.04.2013
comment
Боюсь, я не думаю, что то, что вы хотите, возможно. Графит очень сильно разработан вокруг последовательных, унифицированных схем пути.   -  person Ben Butler-Cole    schedule 18.04.2013
comment
К такому выводу я тоже пришел... Спасибо за ответ!   -  person Tomer Peled    schedule 18.04.2013


Ответы (1)


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

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

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

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

количество подключений

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

дано

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

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

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

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

person Bruno Penteado    schedule 12.06.2013
comment
Спасибо за ответ. В настоящее время ваш обходной путь вполне решает проблему. Это условие ИЛИ, о котором я упоминал в своих комментариях выше. Так что действительно Graphite не поддерживает это в настоящее время. Спасибо еще раз! - person Tomer Peled; 12.06.2013