2015-07-01 11 views
5

Próbuję tworzyć kokpity grafana z szablonu z api z grafana. Używam w tej chwili grafana v2.0.2.Tworzenie kokpitów graficznych z api

Mam klucz API i jestem w stanie uzyskać panele z curl, ale nie mogę tworzyć pulpitów.

Kiedy wykonuję następującą prośbę: curl -i -H "Authorization: Bearer eyJrIobfuscatedlkIjoxfQ==" http://localhost:3000/api/dashboards/db/webserver2 następnie otrzymuję jsona z powrotem do deski rozdzielczej.

Kiedy próbuję stworzyć najprostszy pulpit znalazłem w przykładach api nie działa: curl -i -H "Authorization: Bearer eyJrIobfuscatedlkIjoxfQ==" -d /tmp/simpledash http://localhost:3000/api/dashboards/db gdzie /tmp/simpledash zawiera:

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

uzyskać następujące odpowiedzi:

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"}] 

Próbowałam niektóre odmiany jsona, ale zawsze otrzymuję taką odpowiedź iw Internecie nie mogłem znaleźć działającego przykładu. Czy ktoś ma działający przykład dla mnie? Lubię to działa, więc mogę stworzyć deskę rozdzielczą z ansibla.

Dzięki!

+0

znalazłem mam JS błędy, jeśli tablica "rows" ma pusty obiekt '[{}]' wewnątrz niego, wysyłanie '[]' samo w sobie to poprawiło. Wygląda na to, że JS widzi obiekt i próbuje wyodrębnić z niego wartości. – Rebs

Odpowiedz

7

Powodem tego niepowodzenia jest to, że API musi wiedzieć, że ładunek jest json.

z cURL

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

z ansibl

- 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 }}" 

i plików Vars zawierających pulpitów,

"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

wyobraziłem to ostatniej nocy, przykład na stronie brakuje przecinka przed „schemaVersion”

poprawne json powinno być:

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

jeśli skopiować json w tym json walidator będzie to pokazać dokładnie, gdzie jest problem:

http://jsonlint.com/

3

aby użyć curl do wysłania danych z pliku, położyć @ przed nazwą pliku, tak:

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

Userful ONE-liner importować pulpitów JSON z komputera

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 

Dokonaj zmiany GRAFANA_USERNAME, GRAFANA_PASSWORD i GRAFANA_HOST z powyższego polecenia.

0

I rozwiązać problem tak:

1- najpierw utworzyć źródło danych jak to (w moim przypadku użyłem kombinacji collectd Prometeusz i 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-dodawania dostosowany panel json, edycja grafana.ini i włączyć Dashboard sekcji pliku json jak poniżej:

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

3- skopiuj plik json desce rozdzielczej do/var/lib/grafana/deski rozdzielcze (trzeba ponownie uruchomić usługę)

Powiązane problemy