Closed Seraf closed 9 years ago
/cc @Tenzer / @torkelo
Trouble appears to be https://github.com/stephenyeargin/hubot-grafana/blob/master/src/grafana.coffee#L113 that perhaps the template .text
property is not set? Not aware of an API change in that particular version.
@Seraf can you set:
HUBOT_LOG_LEVEL=debug
and see what the output looks like from around that line? I'm curious what those template objects look like from your install.
@stephenyeargin :
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG Message '@cyclobot-customer: graf db cycloid-machine' matched regex //^\s*[@]?cyclobot\-customer[:,]?\s*(?:(?:grafana|graph|graf) (?:dash|dashboard|db) ([A-Za-z0-9\-\:_]+)(.*)?)/i/
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG Executing listener callback for Message '@cyclobot-customer: graf db cycloid-machine'
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG [ '@cyclobot-customer: graf db cycloid-machine',
'cycloid-machine',
undefined,
index: 0,
input: '@cyclobot-customer: graf db cycloid-machine' ]
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG cycloid-machine
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG { from: 'now-6h', to: 'now' }
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG false
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG false
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG { meta:
{ type: 'db',
canSave: false,
canEdit: false,
canStar: true,
slug: 'cycloid-machine',
expires: '0001-01-01T00:00:00Z',
created: '0001-01-01T00:00:00Z' },
dashboard:
{ annotations: { list: [] },
editable: true,
hideControls: false,
id: 24,
links: [],
nav: [ [Object] ],
originalTitle: 'Test',
rows: [ [Object] ],
schemaVersion: 6,
sharedCrosshair: false,
style: 'dark',
tags: [],
templating: { list: [Object] },
time: { from: 'now-6h', to: 'now' },
timezone: 'browser',
title: '[CYCLOID] Machine',
version: 1 } }
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] DEBUG [ { allFormat: 'glob',
datasource: null,
includeAll: false,
multi: false,
multiFormat: 'glob',
name: 'SERVER',
options: [],
query: 'CUSTOMER-*',
refresh: true,
refresh_on_load: true,
type: 'query' },
{ allFormat: 'glob',
current: { tags: [], text: '1m', value: '1m' },
datasource: null,
includeAll: false,
multi: false,
multiFormat: 'glob',
name: 'summarize',
options:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ],
query: '1m,10m,30m,1h,6h,12h,1d,7d,14d,30d',
refresh_on_load: false,
type: 'interval' } ]
[Mon Oct 19 2015 18:56:16 GMT+0200 (CEST)] ERROR TypeError: Cannot read property 'text' of undefined
at /home/admin/hubot-customer/node_modules/hubot-grafana/src/grafana.coffee:113:11, <js>:82:65
at /home/admin/hubot-customer/node_modules/hubot-grafana/src/grafana.coffee:202:14, <js>:178:16
at IncomingMessage.<anonymous> (/home/admin/hubot-customer/node_modules/hubot/node_modules/scoped-http-client/src/index.js:95:22)
at emitNone (events.js:72:20)
at IncomingMessage.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:903:12)
at doNTCallback2 (node.js:439:9)
at process._tickCallback (node.js:353:17)
Well, that wasn't as helpful as I'd hoped it would be. :disappointed:
The JSON response is coming back missing that property, but it seems like that's the most critical piece of information for selecting a templated Dashboard (which you don't appear to be using based on your query). I'll need to dig deeper into it, or at least add more sanity checks around those lines of code to ensure the property exists before trying to use it.
@stephenyeargin if it can help, here the debug with my variable :
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG Received message: '@cyclobot-customer: graf db cycloid-machine SERVER=CUSTOMER-BASTION0-EU-WE1-PROD' in channel: testjsyx, from: cycloid_seraf
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG Message '@cyclobot-customer: graf db cycloid-machine SERVER=CUSTOMER-BASTION0-EU-WE1-PROD' matched regex //^\s*[@]?cyclobot\-customer[:,]?\s*(?:(?:grafana|graph|graf) (?:dash|dashboard|db) ([A-Za-z0-9\-\:_]+)(.*)?)/i/
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG Executing listener callback for Message '@cyclobot-customer: graf db cycloid-machine SERVER=CUSTOMER-BASTION0-EU-WE1-PROD'
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG [ '@cyclobot-customer: graf db cycloid-machine SERVER=CUSTOMER-BASTION0-EU-WE1-PROD',
'cycloid-machine',
' SERVER=CUSTOMER-BASTION0-EU-WE1-PROD',
index: 0,
input: '@cyclobot-customer: graf db cycloid-machine SERVER=CUSTOMER-BASTION0-EU-WE1-PROD' ]
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG cycloid-machine
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG { from: 'now-6h', to: 'now' }
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG &var-SERVER=CUSTOMER-BASTION0-EU-WE1-PROD
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG false
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG false
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG { meta:
{ type: 'db',
canSave: false,
canEdit: false,
canStar: true,
slug: 'cycloid-machine',
expires: '0001-01-01T00:00:00Z',
created: '0001-01-01T00:00:00Z' },
dashboard:
{ annotations: { list: [] },
editable: true,
hideControls: false,
id: 24,
links: [],
nav: [ [Object] ],
originalTitle: 'Test',
rows: [ [Object] ],
schemaVersion: 6,
sharedCrosshair: false,
style: 'dark',
tags: [],
templating: { list: [Object] },
time: { from: 'now-6h', to: 'now' },
timezone: 'browser',
title: '[CYCLOID] Machine',
version: 1 } }
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] DEBUG [ { allFormat: 'glob',
datasource: null,
includeAll: false,
multi: false,
multiFormat: 'glob',
name: 'SERVER',
options: [],
query: 'CUSTOMER-*',
refresh: true,
refresh_on_load: true,
type: 'query' },
{ allFormat: 'glob',
current: { tags: [], text: '1m', value: '1m' },
datasource: null,
includeAll: false,
multi: false,
multiFormat: 'glob',
name: 'summarize',
options:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ],
query: '1m,10m,30m,1h,6h,12h,1d,7d,14d,30d',
refresh_on_load: false,
type: 'interval' } ]
[Mon Oct 19 2015 21:02:10 GMT+0200 (CEST)] ERROR TypeError: Cannot read property 'text' of undefined
at /home/admin/hubot-customer/node_modules/hubot-grafana/src/grafana.coffee:113:11, <js>:82:65
at /home/admin/hubot-customer/node_modules/hubot-grafana/src/grafana.coffee:202:14, <js>:178:16
at IncomingMessage.<anonymous> (/home/admin/hubot-customer/node_modules/hubot/node_modules/scoped-http-client/src/index.js:95:22)
at emitNone (events.js:72:20)
at IncomingMessage.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:903:12)
at doNTCallback2 (node.js:439:9)
at process._tickCallback (node.js:353:17)
Actually, it's template.current
which is undefined ("Cannot read property 'text' of undefined"). I'm not totally sure what goes on in that part of the code (I don't use templating myself), but perhaps we just need to check if template.current
is set?
I'm not really sure what we are expecting to get from template.current.text
. If we absolutely need that to be set, I guess the best way is to simply skip the items in the array which doesn't have template.current
set?
So this is what it looks like on http://play.grafana.org/dashboard/db/issue-2534
[Sun Oct 25 2015 12:35:12 GMT-0500 (CDT)] DEBUG { allFormat: 'glob',
current:
{ tags: [],
text: 'backend_02 + backend_03',
value: [ 'backend_02', 'backend_03' ] },
datasource: null,
includeAll: false,
multi: true,
multiFormat: 'glob',
name: 'servers',
options:
[ { selected: false, text: 'backend_01', value: 'backend_01' },
{ selected: true, text: 'backend_02', value: 'backend_02' },
{ selected: true, text: 'backend_03', value: 'backend_03' },
{ text: 'backend_04', value: 'backend_04' } ],
query: 'apps.backend.*',
refresh_on_load: false,
type: 'query' }
This will probably need revisiting as more folks use it, but for the time being, I'm going to skip assigning template variables if a current
property is not set. Worst case it doesn't format the graph titles with template variables interpolated.
@Seraf Check out v1.4.1
and see if that squares it away for you.
@stephenyeargin I'm not very comfortable with nodejs, not very sure if I have correctly installed it.
I unzipped the zip release into my node_modules directory in /home/admin/hubot where I setup the app. It was missing knox, so I went into the hubot-grafana modules and did a npm install. Then the bot was able to start.
When I try the command I have a :
[Sun Oct 25 2015 20:05:43 GMT+0100 (CET)] ERROR ReferenceError: next is not defined
at /home/admin/hubot/node_modules/hubot-grafana/src/grafana.coffee:114:11, <js>:84:15
at /home/admin/hubot/node_modules/hubot-grafana/src/grafana.coffee:204:14, <js>:182:16
at IncomingMessage.<anonymous> (/home/admin/hubot/node_modules/hubot/node_modules/scoped-http-client/src/index.js:95:22)
at emitNone (events.js:72:20)
at IncomingMessage.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:903:12)
at doNTCallback2 (node.js:439:9)
at process._tickCallback (node.js:353:17)
I may have Ruby'd when I should have JavaScript'd
Try v1.4.2
... Switched out next
for continue
, which looks to be correct. Apparently my test case was not as specific as I'd thought.
@stephenyeargin thanks, the 1.4.2 fix my problem, everything works as expected now :) :+1:
Hello,
First, thanks for this project ! :+1:
Grafana version : 2.1.3
I have an error trying to get panels :
Then hubot answers nothing and in the log I get :
But test-dahboard works correctly. I thought it was the parameter $SERVER which was missing, but adding this parameter give exactly the same error
Any idea about this please ? Thanks