objetivos
- Configurar Grafana para permitir el acceso anónimo
- Registre el tablero a través de la interfaz de descanso
- Obtener la URL del tablero para la visualización
configuración de instalación de mac
- instalación
brew update
brew install grafana
- Configure el acceso anónimo: /usr/local/etc/grafana/grafana.ini
[auth]
# 要删掉前边的分号
disable_login_form = true
[auth.anonymous]
enabled = true
org_name = Main Org.
org_role = Viewer
- Iniciar y detener
// 启动
brew services start grafana
// 关闭
brew services stop grafana
// 重启
brew services restart grafana
Registrarse en el panel
https://github.com/grafana/grafana/blob/master/docs/sources/http_api/dashboard.md
-
Publicar URL de solicitud: / api / dashboards / db
-
Primero debe crear una clave Api, cree una en Configuración -> Claves API, obtendrá una cadena, que se agrega al encabezado de la solicitud de publicación.
https://blog.csdn.net/u012062455/article/details/79214927
-
Se explican los siguientes elementos importantes
- target.target: serie de tiempo de consulta
- id: la identificación del panel en una única instancia de Grafana
- uid: el uidid del panel en varias instancias de Grafana, simplemente haga que los dos sean iguales
- title: nombre del tablero
- refrescar: frecuencia de refresco
- tiempo: período de tiempo de consulta, como los últimos cinco minutos
- panel: un tablero de series de tiempo, los paneles en este ejemplo son gráficos de líneas
- fuente de datos: fuente de datos, debe crearse de antemano
- gridPos: La posición del tablero, xey son la posición inicial, h es la altura y w es el ancho. Varios paneles deben componerse por sí mismos.
- título: nombre del panel
-
Después del registro, puede ver el panel a través de http: // ip: 3000 / d / uid / title.
-
Crea el cuerpo de la solicitud de publicación del panel
{
"dashboard": {
"id": "imei",
"uid": "imei",
"title": "userName",
"timezone": "browser",
"refresh": "5s",
"schemaVersion": 16,
"time": {
"from": "now-5m",
"to": "now"
},
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "IoTDB-Raspberry",
"fill": 1,
"gridPos": {
"h": 6,
"w": 24,
"x": 0,
"y": 0
},
"id": 2,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "raspberry.pi1.distance",
"type": "timeserie"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "超声波测距(米)",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"version": 0
},
"folderId": 0,
"overwrite": true
}
Java construye una solicitud de publicación para enviar
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
URL url = new URL(getGrafanaUrl);
URLConnection connection = url.openConnection();
connection.setRequestProperty("accept", "application/json");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// apiKey 是上边生成的那个
connection.setRequestProperty("Authorization", "Bearer " + apiKey);
connection.setDoInput(true);
connection.setDoOutput(true);
// request 是上边那个json
try (PrintWriter out = new PrintWriter(connection.getOutputStream())){
out.print(request.toString());
out.flush();
}
try (BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()))) {
StringBuilder result = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
result.append(line);
}
logger.info("Received response: {}", result);
}
URL del panel
La URL del panel de Grafana tiene el mismo estilo http: // localhost: 3000 / d / good / goodgood? Refresh = 5s & orgId = 1
Solo reemplaza los buenos con los tuyos