2017-01-03 13 views
1

У меня довольно специфический случай использования, когда мне нужно умножить:Графит/Графана - выбор показателей, совокупность, сохранение в качестве новой метрики - любое решение?

  • метрика метрическим B, давайте назовем его А. Б.
  • метрика С метрическим D, давайте назовем его CD и так далее

Тогда мне нужно использовать AB, CD ... YZ вместе для того, чтобы выработать результат, давайте назовем его ABYZ. Реальные преобразования сложнее, но давайте пропустим его, поскольку это не так важно.

Это облегчило бы мою жизнь, если бы у меня были предварительно рассчитанные AB и CD, так как я мог запросить его с помощью переменных шаблона в Grafana. Предположим, что я могу указать переменную $include, которая будет представлять собой список пар: AB, CD и т. Д. Тогда я мог бы легко контролировать результаты для ABYZ, включив некоторые из показателей и исключая некоторые из них.

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

Скажем, я хотел бы получить результаты этого запроса Графит:... псевдоним (diffSeries (maxSeries (multiplySeries (maxSeries (stats.gauges.stock {stock1, stock2} .offers EUR .bid ), averageSeries (stats.gauges.stock.currency.fidor. .EUR.PLN)), maxSeries (stats.gauges.stock. {stock1, stock2} .offers. PLN .bid. *)), minSeries (multiplsSeries (minSeries (stats.gauges.stock. {stock1, stock2} .offers. EUR .ask. ), averageSeries (stats.gauges.stock.currency.fidor. .EUR.PLN)), minSeries (статистика .gauges.stock. {stock1, stock2}. предложения. PLN .ask *))), 'Diff')

и хранить его в этой метрике:. stats.gauges.stock.diff

Есть ли какое-либо решение, которое может создать новые метрики из уже существующих? Я хотел бы пропустить слой StatD и напрямую нажать на слой graphite/carbon (если возможно).

ответ

1

Вы можете абсолютно написать небольшой скрипт, который может запрашивать значения A, B и т. Д. Из графита и корма AB и т. Д. На углерод, чтобы вы могли запросить их обратно из графита.

Практически любой язык должен быть достаточным, графитовый API - это просто JSON через HTTP, а углеродный протокол еще проще. Вот небольшой скрипт PHP, который я написал некоторое время назад, чтобы получить значения из моей системы домашней автоматизации и подавать их на углерод после некоторых преобразований. Он запускается через cron с соответствующим интервалом. Единственное отличие для вашего приложения заключается в том, что вы извлекаете исходные значения из графита, а не из внешней системы.

https://gist.github.com/DanCech/348d37ee45898b34abd3

+1

Отлично, спасибо. Первоначально я не был уверен, как это сделать, но теперь, после того, как я тестировал запись на «carbon», я вижу, что в прошлом также можно заполнить пункты.Подобный сценарий для вашей работы периодически выполняется с одним начальным запуском (для расчета всех исторических данных), и я должен быть в порядке. Всего наилучшего ! – NeverEndingQueue

+0

Рад это слышать! – AussieDan