Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Origine dati API
Usa l'API Data Source per creare, aggiornare, eliminare e lavorare con sorgenti di dati nell'area di lavoro Amazon Managed Grafana.
Nota
Per utilizzare un'API Grafana con il tuo spazio di lavoro Amazon Managed Grafana, devi disporre di un token API Grafana valido. Lo includi nel Authorization
campo della richiesta API. Per informazioni su come creare un token per autenticare le tue chiamate API, consultaAutenticazione con i token.
Ottieni tutte le origini dati
GET /api/datasources
Richiesta di esempio
GET /api/datasources HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Example response
HTTP/1.1 200 Content-Type: application/json [ { "id": 1, "orgId": 1, "uid": "H8joYFVGz" "name": "datasource_elastic", "type": "elasticsearch", "typeLogoUrl": "public/app/plugins/datasource/elasticsearch/img/elasticsearch.svg", "access": "proxy", "url": "http://mydatasource.com", "password": "", "user": "", "database": "grafana-dash", "basicAuth": false, "isDefault": false, "jsonData": { "esVersion": 5, "logLevelField": "", "logMessageField": "", "maxConcurrentShardRequests": 256, "timeField": "@timestamp" }, "readOnly": false } ]
Ottieni un'unica origine dati per ID
GET /api/datasources/:datasourceId
Richiesta di esempio
GET /api/datasources/1 HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Example response
HTTP/1.1 200 Content-Type: application/json { "id": 1, "uid": "kLtEtcRGk", "orgId": 1, "name": "test_datasource", "type": "graphite", "typeLogoUrl": "", "access": "proxy", "url": "http://mydatasource.com", "password": "", "user": "", "database": "", "basicAuth": false, "basicAuthUser": "", "basicAuthPassword": "", "withCredentials": false, "isDefault": false, "jsonData": { "graphiteType": "default", "graphiteVersion": "1.1" }, "secureJsonFields": {}, "version": 1, "readOnly": false }
Ottieni un'unica origine dati tramite UID
GET /api/datasources/uid/:uid
Richiesta di esempio
GET /api/datasources/uid/kLtEtcRGk HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Example response
HTTP/1.1 200 Content-Type: application/json { "id": 1, "uid": "kLtEtcRGk", "orgId": 1, "name": "test_datasource", "type": "graphite", "typeLogoUrl": "", "access": "proxy", "url": "http://mydatasource.com", "password": "", "user": "", "database": "", "basicAuth": false, "basicAuthUser": "", "basicAuthPassword": "", "withCredentials": false, "isDefault": false, "jsonData": { "graphiteType": "default", "graphiteVersion": "1.1" }, "secureJsonFields": {}, "version": 1, "readOnly": false }
Ottieni un'unica origine dati per nome
GET /api/datasources/name/:name
Richiesta di esempio
GET /api/datasources/name/test_datasource HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Example response
HTTP/1.1 200 Content-Type: application/json { "id": 1, "uid": "kLtEtcRGk", "orgId": 1, "name": "test_datasource", "type": "graphite", "typeLogoUrl": "", "access": "proxy", "url": "http://mydatasource.com", "password": "", "user": "", "database": "", "basicAuth": false, "basicAuthUser": "", "basicAuthPassword": "", "withCredentials": false, "isDefault": false, "jsonData": { "graphiteType": "default", "graphiteVersion": "1.1" }, "secureJsonFields": {}, "version": 1, "readOnly": false }
Ottieni l'ID della fonte di dati per nome
GET /api/datasources/id/:name
Richiesta di esempio
GET /api/datasources/id/test_datasource HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Example response
HTTP/1.1 200 Content-Type: application/json { "id":1 }
Creazione di un'origine dati
POST /api/datasources
Esempio di richiesta Graphite
POST /api/datasources HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk { "name":"test_datasource", "type":"graphite", "url":"http://mydatasource.com", "access":"proxy", "basicAuth":false }
Esempio di risposta Graphite
HTTP/1.1 200 Content-Type: application/json { "datasource": { "id": 1, "orgId": 1, "name": "test_datasource", "type": "graphite", "typeLogoUrl": "", "access": "proxy", "url": "http://mydatasource.com", "password": "", "user": "", "database": "", "basicAuth": false, "basicAuthUser": "", "basicAuthPassword": "", "withCredentials": false, "isDefault": false, "jsonData": {}, "secureJsonFields": {}, "version": 1, "readOnly": false }, "id": 1, "message": "Datasource added", "name": "test_datasource" }
Nota
Quando li definisci password
e basicAuthPassword
all'internosecureJsonData
, Amazon Managed Grafana li crittografa in modo sicuro come blob crittografati nel database. La risposta elenca quindi i campi crittografati in. secureJsonFields
Esempio di richiesta Graphite con autenticazione di base abilitata
POST /api/datasources HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk { "name": "test_datasource", "type": "graphite", "url": "http://mydatasource.com", "access": "proxy", "basicAuth": true, "basicAuthUser": "basicuser", "secureJsonData": { "basicAuthPassword": "basicpassword" } }
Esempio di risposta con autenticazione di base abilitata
HTTP/1.1 200 Content-Type: application/json { "datasource": { "id": 1, "orgId": 1, "name": "test_datasource", "type": "graphite", "typeLogoUrl": "", "access": "proxy", "url": "http://mydatasource.com", "password": "", "user": "", "database": "", "basicAuth": true, "basicAuthUser": "basicuser", "basicAuthPassword": "", "withCredentials": false, "isDefault": false, "jsonData": {}, "secureJsonFields": { "basicAuthPassword": true }, "version": 1, "readOnly": false }, "id": 102, "message": "Datasource added", "name": "test_datasource" }
Richiesta di esempio CloudWatch
POST /api/datasources HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk { "name": "test_datasource", "type": "cloudwatch", "url": "http://monitoring.us-west-1.amazonaws.com", "access": "proxy", "jsonData": { "authType": "keys", "defaultRegion": "us-west-1" }, "secureJsonData": { "accessKey": "Ol4pIDpeKSA6XikgOl4p", "secretKey": "dGVzdCBrZXkgYmxlYXNlIGRvbid0IHN0ZWFs" } }
Aggiornare un'origine dati esistente
PUT /api/datasources/:datasourceId
Richiesta di esempio
PUT /api/datasources/1 HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk { "id":1, "orgId":1, "name":"test_datasource", "type":"graphite", "access":"proxy", "url":"http://mydatasource.com", "password":"", "user":"", "database":"", "basicAuth":true, "basicAuthUser":"basicuser", "secureJsonData": { "basicAuthPassword": "basicpassword" }, "isDefault":false, "jsonData":null }
Example response
HTTP/1.1 200 Content-Type: application/json { "datasource": { "id": 1, "orgId": 1, "name": "test_datasource", "type": "graphite", "typeLogoUrl": "", "access": "proxy", "url": "http://mydatasource.com", "password": "", "user": "", "database": "", "basicAuth": true, "basicAuthUser": "basicuser", "basicAuthPassword": "", "withCredentials": false, "isDefault": false, "jsonData": {}, "secureJsonFields": { "basicAuthPassword": true }, "version": 1, "readOnly": false }, "id": 102, "message": "Datasource updated", "name": "test_datasource" }
Nota
Si consiglia di definirli password
e inserirli basicAuthPassword
all'interno secureJsonData
in modo che vengano archiviati in modo sicuro come blob crittografati nel database. La risposta elenca quindi i campi crittografati in. secureJsonFields
Elimina la fonte di dati per ID
DELETE /api/datasources/:datasourceId
Richiesta di esempio
DELETE /api/datasources/1 HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Example response
HTTP/1.1 200 Content-Type: application/json {"message":"Data source deleted"}
Elimina l'origine dati tramite UID
DELETE /api/datasources/uid/:uid
Richiesta di esempio
DELETE /api/datasources/uid/kLtEtcRGk HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Example response
HTTP/1.1 200 Content-Type: application/json {"message":"Data source deleted"}
Elimina l'origine dati per nome
DELETE /api/datasources/name/:datasourceName
Richiesta di esempio
DELETE /api/datasources/name/test_datasource HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Example response
HTTP/1.1 200 Content-Type: application/json { "message":"Data source deleted", "id": 1 }
Esecuzione di chiamate proxy all'origine dati
GET /api/datasources/proxy/:datasourceId/*
Invia tramite proxy tutte le chiamate alla fonte di dati effettiva.
Esecuzione di query all'esterno
POST /api/ds/query
Interroga una fonte di dati con un'implementazione di backend. La maggior parte delle origini dati integrate dispone di un'implementazione di backend.
Richiesta di esempio
POST /api/ds/query HTTP/1.1 Accept: application/json Content-Type: application/json { "queries":[ { "refId":"A", "scenarioId":"csv_metric_values", "datasource":{ "uid":"PD8C576611E62080A" }, "format": "table", "maxDataPoints":1848, "intervalMs":200, "stringInput":"1,20,90,30,5,0" } ], "from":"now-5m", "to":"now" }
Schema del corpo JSON:
from/to: specifica l'intervallo di tempo per le query. L'ora può essere sia temporale in millisecondi che relativa utilizzando le unità di tempo Grafana. Ad esempio,
now-5m
.interrogazioni: specifica una o più interrogazioni. Deve contenere almeno 1.
queries.datasource.uid: specifica l'UID dell'origine dati da interrogare. Ogni query nella richiesta deve
datasource
avere un nome univoco.Queries.REFID: specifica un identificatore della query. Il valore predefinito è «A».
queries.format: specifica il formato in cui devono essere restituiti i dati. Le opzioni valide sono
time_series
otable
dipendono dall'origine dati.interrogazioni. maxDataPoints— Specificate la quantità massima di punti dati che un pannello del dashboard può renderizzare. Il valore predefinito è 100.
Queries.intervalMS: specifica l'intervallo temporale della serie temporale in millisecondi. Il valore predefinito è 1000.
Inoltre, è necessario aggiungere proprietà specifiche di ciascuna fonte di dati in una richiesta (ad esempio Queries.StringInput, come mostrato nella richiesta precedente). Per comprendere meglio come creare una query per una determinata fonte di dati, utilizza gli Strumenti per sviluppatori nel browser che preferisci e controlla le richieste HTTP a cui vengono inviate. /api/ds/query
Esempio di risposta a una query con serie temporali sull'origine dei dati di test
HTTP/1.1 200 Content-Type: application/json { "results": { "A": { "frames": [ { "schema": { "refId": "A", "fields": [ { "name": "time", "type": "time", "typeInfo": { "frame": "time.Time" } }, { "name": "A-series", "type": "number", "typeInfo": { "frame": "int64", "nullable": true } } ] }, "data": { "values": [ [1644488152084, 1644488212084, 1644488272084, 1644488332084, 1644488392084, 1644488452084], [1, 20, 90, 30, 5, 0] ] } } ] } } }
Interroga l'origine dei dati per ID
POST /api/tsdb/query
Importante
A partire dalla versione 9, non /api/tsdb/query
è supportata. Utilizza Esecuzione di query all'esterno.
Interroga una fonte di dati con implementazione di backend. La maggior parte delle origini dati integrate dispone di un'implementazione di backend.
Richiesta di esempio
POST /api/tsdb/query HTTP/1.1 Accept: application/json Content-Type: application/json { "from": "1420066800000", "to": "1575845999999", "queries": [ { "refId": "A", "intervalMs": 86400000, "maxDataPoints": 1092, "datasourceId": 86, "rawSql": "SELECT 1 as valueOne, 2 as valueTwo", "format": "table" } ] }
Nota
Le queries
proprietà from
to
, e sono obbligatorie.
Schema del corpo JSON:
-
from/to — Deve essere assoluto nei timestamp dell'epoca in millisecondi o relativo utilizzando le unità di tempo Grafana. Ad esempio,
now-1h
. -
queries.refid — (Facoltativo) Specificate un identificatore per la query. Il valore predefinito è
A
. -
Queries.DataSourceID: specifica l'origine dati da interrogare. Ogni query nella richiesta deve avere un nome univoco.
datasourceId
-
interrogazioni. maxDataPoints— (Facoltativo) Specificate la quantità massima di punti dati che un pannello del dashboard può renderizzare. Il valore di default è 100.
-
queries.interval IMs — (Facoltativo) Specifica l'intervallo di tempo in millisecondi di serie temporali. Il valore predefinito è 1000
Esempio di richiesta per l'origine dati MySQL:
POST /api/tsdb/query HTTP/1.1 Accept: application/json Content-Type: application/json { "from": "1420066800000", "to": "1575845999999", "queries": [ { "refId": "A", "intervalMs": 86400000, "maxDataPoints": 1092, "datasourceId": 86, "rawSql": "SELECT\n time,\n sum(opened) AS \"Opened\",\n sum(closed) AS \"Closed\"\nFROM\n issues_activity\nWHERE\n $__unixEpochFilter(time) AND\n period = 'm' AND\n repo IN('grafana/grafana') AND\n opened_by IN('Contributor','Grafana Labs')\nGROUP BY 1\nORDER BY 1\n", "format": "time_series" } ] }
Esempio di risposta per la richiesta di origine dati MySQL:
HTTP/1.1 200 Content-Type: application/json { "results": { "A": { "refId": "A", "meta": { "rowCount": 0, "sql": "SELECT\n time,\n sum(opened) AS \"Opened\",\n sum(closed) AS \"Closed\"\nFROM\n issues_activity\nWHERE\n time <= 1420066800 AND time >= 1575845999 AND\n period = 'm' AND\n repo IN('grafana/grafana') AND\n opened_by IN('Contributor','Grafana Labs')\nGROUP BY 1\nORDER BY 1\n" }, "series": [ { "name": "Opened", "points": [ [ 109, 1420070400000 ], [ 122, 1422748800000 ] ] }, { "name": "Closed", "points": [ [ 89, 1420070400000 ] ] } ] } } }