2015-08-13 2 views
1

Я использую Dashing и помещаю данные в графический виджет, используя скрипт python, работающий на сервере, который обращается к URL-адресу API.Dashing Graph X axis

Он работает так, что график отображает данные, которые python получает каждую минуту как часть задания cron, а часть графика отображается, но не перемещается. Я предполагаю, что это потому, что я не передаю last.point и только текущее значение.

Python:

data = '{ "auth_token":"YOUR_AUTH_TOKEN", "points": [{ "x":"1", "y":"9" }, {"x":"2","y": ' + str(status) + '}] }' 
print(data) 
url = 'http://10.0.0.40:3030/widgets/CB_stats' 
req = urllib2.Request(url, data, {'Content-Type': 'application/json'}) 
f = urllib2.urlopen(req) 
for x in f: 
    print(x) 
f.close() 

Это посылает значение (статус) правильно.

Вот как это выглядит:

Example graph

Это только когда-либо показывает текущее значение на левой стороне графика. Он не двигается.

Кофейный скрипт графиков и виджеты rickshawgraph не изменился. В X-оси часть скрипта установлена ​​на «Время».

Кто-нибудь знает, как я могу начать строить последние, скажем 10 значений и заставить график работать?

Любая помощь оценивается, поскольку я новичок в этом, используя Python.

+0

Попробуйте подавать X как эпоху. – sam

+0

Почему вы нажимаете Data to Dashing из Python? Цель Dashing заключается в том, что вытягивает данные в бэкэнде Ruby. API больше подходит для приложений «только для push», например для ввода пользователем. – tylermauthe

ответ

0

спасибо за ввод, и вы правы, я должен использовать Ruby, чтобы тянуть, а не толкать Python. Я просто боролся с синтаксисом Ruby.

У меня был кто-то, кто хорошо знает Руби, посмотрите на код, и нам удалось это исправить. Ниже описано, как это было сделано, если кто-то столкнется с этим в будущем.

# jobs/CB_Ops_job.rb 
require './lib/dashing_ec2' 
require "aws-sdk" 
require "active_support/all" 

cw = Aws::CloudWatch::Client.new({ 
    :access_key_id => "ACCESS-KEY", 
    :secret_access_key => "SECRET-ACCESS-KEY", 
    :region => 'eu-west-1' 
}) 

SCHEDULER.every '1m', :first_in => 0 do |job| 

    series = [] 
     resp = cw.get_metric_statistics(
     namespace: '<Your NameSpace>', 
     metric_name: '<YourMetric>', 
    dimensions: [ 
     {name: "InstanceId", value: "i-XXXXXXX"} 
    ], 
    start_time: 15.minute.ago, 
    end_time: Time.now, 
    period: 60, 
    statistics: ["Average"] 
    ) 

    puts resp.label 

    value = 0.0 
    resp.datapoints.sort do |x, y| 
    x.timestamp <=> y.timestamp 
    end.each_with_index do |x, index| 
    series.push({x: index, y: x.average}) 
    puts x.timestamp 
    value = x.average 
    end 

    data = { points: series, max: 2000, status: 'ok' } 
    data[:status] = 'warning' if value > 3000 
    data[:status] = 'danger' if value > 1000 && value < 3000 

    puts data 

    send_event "CB_Ops", data 
end