As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Use a API de fonte de dados para criar, atualizar, excluir e trabalhar com fontes de dados no espaço de trabalho do Amazon Managed Grafana.
nota
Para usar uma API do Grafana com o espaço de trabalho do Amazon Managed Grafana, você deve ter um token válido da API do Grafana. Você inclui isso no campo Authorization
na solicitação da API. Para obter informações sobre como criar um token para autenticar as chamadas de API, consulte Autenticação com tokens.
Obter todas as fontes de dados
GET /api/datasources
Exemplo de solicitação
GET /api/datasources HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Exemplo de resposta
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
}
]
Obter uma única fonte de dados por ID
GET /api/datasources/:datasourceId
Exemplo de solicitação
GET /api/datasources/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Exemplo de resposta
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
}
Obter uma única fonte de dados por UID
GET /api/datasources/uid/:uid
Exemplo de solicitação
GET /api/datasources/uid/kLtEtcRGk HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Exemplo de resposta
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
}
Obter uma única fonte de dados por nome
GET /api/datasources/name/:name
Exemplo de solicitação
GET /api/datasources/name/test_datasource HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Exemplo de resposta
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
}
Obter ID da fonte de dados por nome
GET /api/datasources/id/:name
Exemplo de solicitação
GET /api/datasources/id/test_datasource HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Exemplo de resposta
HTTP/1.1 200
Content-Type: application/json
{
"id":1
}
Criar uma fonte de dados
POST /api/datasources
Exemplo de solicitação do 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
}
Exemplo de resposta do 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 você define password
e basicAuthPassword
em secureJsonData
, o Amazon Managed Grafana os criptografa com segurança como um blob criptografado no banco de dados. A resposta então lista os campos criptografados em secureJsonFields
.
Exemplo de solicitação do Graphite com a autenticação básica ativada
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"
}
}
Exemplo de resposta com a autenticação básica ativada
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"
}
Exemplo de CloudWatch solicitação
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"
}
}
Atualizar uma fonte de dados existente
PUT /api/datasources/:datasourceId
Exemplo de solicitação
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
}
Exemplo de resposta
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
Recomendamos que você defina password
e basicAuthPassword
em secureJsonData
para que sejam armazenados com segurança como um blob criptografado no banco de dados. A resposta então lista os campos criptografados em secureJsonFields
.
Excluir uma fonte de dados pelo ID
DELETE /api/datasources/:datasourceId
Exemplo de solicitação
DELETE /api/datasources/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Exemplo de resposta
HTTP/1.1 200
Content-Type: application/json
{"message":"Data source deleted"}
Excluir uma fonte de dados pelo UID
DELETE /api/datasources/uid/:uid
Exemplo de solicitação
DELETE /api/datasources/uid/kLtEtcRGk HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Exemplo de resposta
HTTP/1.1 200
Content-Type: application/json
{"message":"Data source deleted"}
Excluir uma fonte de dados pelo nome
DELETE /api/datasources/name/:datasourceName
Exemplo de solicitação
DELETE /api/datasources/name/test_datasource HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
Exemplo de resposta
HTTP/1.1 200
Content-Type: application/json
{
"message":"Data source deleted",
"id": 1
}
Chamadas de proxy da fonte de dados
GET /api/datasources/proxy/:datasourceId/*
Faz o proxy de todas as chamadas para a fonte de dados real.
Consultar fontes de dados
POST /api/ds/query
Consulta uma fonte de dados com uma implementação de back-end. A maioria das fontes de dados integradas tem implementação de backend.
Exemplo de solicitação
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"
}
Esquema do corpo JSON:
de/até — Especifica o intervalo de tempo para as consultas. A hora pode ser uma data e hora da época em milissegundos ou relativa usando unidades de tempo da Grafana. Por exemplo,
now-5m
.consultas — Especifica uma ou mais consultas. Deve conter pelo menos 1.
queries.datasource.uid — Especifica o UID da fonte de dados a ser consultada. Cada consulta na solicitação deve ter um único
datasource
.Queries.refid — Especifica um identificador da consulta. O padrão é “A”.
queries.format — Especifica o formato em que os dados devem ser retornados. As opções válidas são
time_series
outable
dependem da fonte de dados.consultas. maxDataPoints— Especifique a quantidade máxima de pontos de dados que um painel de controle pode renderizar. O padrão é 100.
queries.intervalms — Especifica o intervalo temporal da série temporal em milissegundos. O padrão é 1000.
Além disso, propriedades específicas de cada fonte de dados devem ser adicionadas em uma solicitação (por exemplo, Queries.stringInput, conforme mostrado na solicitação acima). Para entender melhor como formar uma consulta para uma determinada fonte de dados, use as Ferramentas do desenvolvedor no navegador de sua escolha e inspecione as solicitações HTTP que estão sendo feitas. /api/ds/query
Exemplo de resposta de consulta de série temporal de fonte de dados de teste
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]
]
}
}
]
}
}
}
Consultar fonte de dados por ID
POST /api/tsdb/query
Importante
A partir da versão 9, não /api/tsdb/query
há suporte. Use Consultar fontes de dados.
Consulta uma fonte de dados com implementação de backend. A maioria das fontes de dados integradas tem implementação de backend.
Exemplo de solicitação
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
As propriedades from
, to
e queries
são obrigatórias.
Esquema do corpo JSON:
-
de/até: deve ser absoluto em carimbos de data e hora epoch em milissegundos ou relativo usando unidades de tempo do Grafana. Por exemplo,
now-1h
. -
queries.refId: (opcional) especifica um identificador para a consulta. O padrão é
A
. -
queries.datasourceId: especifica a fonte de dados a ser consultada. Cada consulta na solicitação deve ter um único
datasourceId
. -
consultas. maxDataPoints— (Opcional) Especifica a quantidade máxima de pontos de dados que um painel de controle pode renderizar. O padrão é 100.
-
queries.interval IMs — (Opcional) Especifica o intervalo de tempo em milissegundos da série temporal. O padrão é 1.000
Exemplo de solicitação da fonte de dados 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"
}
]
}
Exemplo de resposta da solicitação da fonte de dados 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
]
]
}
]
}
}
}