Возвращать постоянные значения в графите в формате json

Как мы получаем ряд постоянных значений в графите. Я проверил функцию constantLine(x), однако она рисует на "графике" постоянную линию. Однако мне понадобятся значения в формате json.

Функция Identity(t) возвращает x(t) = t; то, что нам нужно y(t) = constant.

В настоящее время мне кажется, что нам нужно ввести точки данных в графитовую БД. Есть ли способ обойтись без него.

[graphite web uri]/render?target=FUNC(x)&format=json.

* Редактировать: я пробовал функцию ConstantLine(x), которую получаю: Traceback (последний последний вызов): *

File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/opt/graphite/webapp/graphite/render/views.py", line 104, in renderView
    seriesList = evaluateTarget(requestContext, target)
  File "/opt/graphite/webapp/graphite/render/evaluator.py", line 10, in evaluateTarget
    result = evaluateTokens(requestContext, tokens)
  File "/opt/graphite/webapp/graphite/render/evaluator.py", line 21, in evaluateTokens
    return evaluateTokens(requestContext, tokens.expression)
  File "/opt/graphite/webapp/graphite/render/evaluator.py", line 27, in evaluateTokens
    func = SeriesFunctions[tokens.call.func]
KeyError: u'contantLine'

*


person Vamsi Krishna    schedule 17.12.2013    source источник


Ответы (1)


graphite.com/render/?target=constantLine(123.456)&format=json

возвращается

[{"target": "123.456", "datapoints": [[123.456, 1381399794]]}]

Разве это не то, что вы хотите? Если вы ожидаете, что графит вернет чистый 123.456, вам придется отредактировать код и переопределить способ отображения результатов.

  1. Добавьте новую функцию customConstantLine(requestContext, value) в файл functions.py.
  2. Переопределите класс рендеринга для печати чистого 123.456, когда возвращаемая функция customConstantLine().

Внимание: ваше редактирование также должно учитывать случаи, когда возвращаются несколько целей.

РЕДАКТИРОВАТЬ:

Залатайте свой functions.py! Если вы не хотите обновлять надстройку Graphite,

def constantLine(requestContext, value):
  start = timestamp( requestContext['startTime'] )
  end = timestamp( requestContext['endTime'] )
  step = (end - start) / 1.0
  series = TimeSeries(str(value), start, end, step, [value, value])
  return [series]
person erbdex    schedule 17.12.2013
comment
Эй, у меня есть ошибка, когда я использую то же самое, какую версию графита вы используете? - person Vamsi Krishna; 17.12.2013
comment
0.9.10. я отредактировал ответ, чтобы включить способ обойти это. - person erbdex; 17.12.2013
comment
Привет, есть порог функции (20.1, привет, цвет), это решает проблему, к сожалению, снова это не работает с &format=json; проверил functions.py, то же самое.. - person Vamsi Krishna; 17.12.2013
comment
:/ Работает с моим. я скопировал и вставил сюда. - person erbdex; 17.12.2013
comment
повторно устанавливая веб-приложение, проблема в views.py .. не в функциях. - person Vamsi Krishna; 17.12.2013
comment
В чем именно заключалась ваша проблема? - person erbdex; 17.12.2013
comment
давайте продолжим обсуждение в чате - person erbdex; 17.12.2013
comment
Эй, это django.. У меня 1.3.. и ему нужна 1.4, понял, когда сказал, что проблема с представлением - person Vamsi Krishna; 17.12.2013