Връща постоянни стойности в graphite във формат json

Как да получим поредица от стойности на съдържанието в графит. Проверих функция constantLine(x), но тя рисува постоянна линия на "графиката". Въпреки това ще ми трябват стойностите във формат json.

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

В момента ми се струва, че трябва да инжектираме точки от данни в графит DB. Има ли начин да минем без него.

[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().

Heads-up: Вашата редакция трябва да отчита и случаите, при които се връщат множество цели.

РЕДАКТИРАНЕ:

Подправете своя 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
Здравейте, има функция threshold(20.1,hello,color), това решава проблема, за съжаление отново не работи с &format=json; проверих functions.py, същото е.. - person Vamsi Krishna; 17.12.2013
comment
:/ Работи с моя. копирах го и го поставих тук. - person erbdex; 17.12.2013
comment
повторно инсталиране на webapp, проблемът е във views.py.. не във функциите. - person Vamsi Krishna; 17.12.2013
comment
Какъв точно беше вашият проблем? - person erbdex; 17.12.2013
comment
comment
Хей това е django .. Имам 1.3.. и има нужда от 1.4, получих подсказката, когато каза проблем с изгледа - person Vamsi Krishna; 17.12.2013