2015-07-01 8 views
5

Ich versuche, Grafana Dashboards aus einer Vorlage mit der API von Grafana zu erstellen. Ich benutze im Moment grafana v2.0.2.Erstellen Sie Grafana Dashboards mit API

Ich habe einen API-Schlüssel und ich bin in der Lage, die Dashboards mit Curl zu bekommen, aber ich kann keine Dashboards erstellen.

Wenn ich die folgende Anfrage: curl -i -H "Authorization: Bearer eyJrIobfuscatedlkIjoxfQ==" http://localhost:3000/api/dashboards/db/webserver2 dann bekomme ich die JSON zurück für dasboard.

Wenn ich versuche, die einfachste Armaturenbrett ich in den api Beispiele gefunden zu schaffen es nicht funktioniert: curl -i -H "Authorization: Bearer eyJrIobfuscatedlkIjoxfQ==" -d /tmp/simpledash http://localhost:3000/api/dashboards/db wo /tmp/simpledash enthält:

{ 
    "dashboard": { 
    "id": null, 
    "title": "Production Overview", 
    "tags": [ "templated" ], 
    "timezone": "browser", 
    "rows": [ 
     { 
     } 
    ] 
    "schemaVersion": 6, 
    "version": 0 
    }, 
    "overwrite": false 
} 

ich die folgende Antwort:

HTTP/1.1 422 status code 422 
Content-Type: application/json; charset=utf-8 
Date: Wed, 01 Jul 2015 16:16:48 GMT 
Content-Length: 84 

[{"fieldNames": ["Dashboard"],"classification":"RequiredError","message":"Required"}] 

Ich habe versucht, einige Variationen der JSON, aber ich bekomme immer diese Antwort und im Internet konnte ich kein funktionierendes Beispiel finden. Hat jemand ein funktionierendes Beispiel für mich? Ich mag es zu arbeiten, damit ich Dashboard von Ansible erstellen kann.

Danke!

+0

Ich fand ich JS bekam Fehler, wenn das "rows" -Array ein leeres Objekt '[{}]' darin hat, scheint das Senden von '[]' allein dies korrigiert zu haben. Es scheint, dass JS das Objekt sieht und versucht, Werte daraus zu extrahieren. – Rebs

Antwort

7

Der Grund, warum es Fehler ist, dass die API, dass die Nutzlast json zu wissen braucht.

mit cURL

curl -XPOST -i http://localhost:3000/api/dashboards/db --data-binary @./test.json -H "Content-Type: application/json" 

mit ansible

- name: postinstall::dashsetups 
    uri: 
    url: http://{{grafana.ip}}:{{grafana.bind}}/api/dashboards/db 
    method: POST 
    user: "{{ admin_usr }}" 
    password: "{{ admin_pwd }}" 
    body: "{{ lookup('template', item.file) }}" 
    status_code: 200 
    body_format: raw 
    force_basic_auth: yes 
    HEADER_Content-Type: "application/json" 
    with_items: "{{ grafana.dashboards }}" 

und Vars-Datei mit Dashboards,

"grafana":{"dashboards": [ 
      { 
      "name": "t1", 
      "file": "./dashboards/filename.json.j2", 
      "dash_name": "Test 1" 
      }, 
      { 
      "name": "t2", 
      "file": "./dashboards/filename2.json.j2", 
      "dash_name": "Test 2" 
      }, 
      { 
      "name": "t3", 
      "file": "./dashboards/template3.json.j2", 
      "dash_name": "Test 3" 
      } 
     ] 
} 
4

Ich dachte, diese letzte Nacht, wird das Beispiel auf der Website ein Komma kurz vor „schemaversion“ missing

sollte korrekt json sein:

{ 
    "dashboard": { 
    "id": null, 
    "title": "Production Overview", 
    "tags": [ "templated" ], 
    "timezone": "browser", 
    "rows": [ 
     { 
     } 
    ], 
    "schemaVersion": 6, 
    "version": 0 
    }, 
    "overwrite": false 
} 

, wenn Sie Ihre json in diesem json Validator kopieren es Ihnen genau zeigen werden, wo das Problem ist:

http://jsonlint.com/

3

curl zu verwenden, um Daten aus einer Datei zu schreiben, stellt einen @ Vor dem Dateinamen, wie folgt aus:

curl -i -H "Authorization: Bearer eyJrIobfuscatedlkIjoxfQ==" -d @/tmp/simpledash http://localhost:3000/api/dashboards/db 
0

Userful Einzeiler JSON Dashboards von Ihrem Computer zu importieren

for i in `ls *.json` ;do curl -i -u GRAFANA_USERNAME:GRAFANA_PASSWORD -H "Content-Type: application/json" -X POST http://GRAFANA_HOST/api/dashboards/db -d @$i ; done 

Ändern Sie GRAFANA_USERNAME, GRAFANA_PASSWORD und GRAFANA_HOST mit dem obigen Befehl.

0

löste ich das Problem wie folgt aus:

1- zuerst die Datenquelle wie folgt erstellen (In meinem Fall habe ich die Kombination von collectd, prometheus und grafana)

curl --user admin:admin 'http://IPADDR:3000/api/datasources' -X POST -H 'Content-Type: application/json;charset=UTF-8' --data-binary '{"name":"test","type":"prometheus","url":"http://localhost:9090","access":"proxy","basicAuth":false}' 

2-Für die Zugabe kundengebundenes json Armaturenbrett, redigieren grafana.INI-Datei und aktivieren Sie wie unter Dashboard-JSON-Datei Abschnitt:

;##################### Dashboard JSON files ##################### 
[dashboards.json] 
enabled = true 
path = /var/lib/grafana/dashboards 

3- kopieren Armaturenbrett JSON-Datei/var/lib/grafana/Dashboards (Sie müssen den Dienst neu zu starten)