Grafana + TDengine realiza la visualización de datos recopilados por Internet de las cosas

Primero vienen dos documentos oficiales:
https://www.taosdata.com/cn/documentation/connections-with-other-tools/#Grafana
https://grafana.com/docs/grafana/latest/

instalación grafana

Hay muchas formas de instalar, aquí hay una forma más conveniente, si desea probar otras formas, consulte el sitio web oficial

  1. descargar
wget https://dl.grafana.com/oss/release/grafana-7.3.5.linux-amd64.tar.gz
  1. Abrir la cremallera
tar -xzvf grafana-7.3.5.linux-amd64.tar.gz
  1. correr
cd grafana-7.3.5/
cd bin
./grafana-server 

Hasta ahora he ejecutado con éxito un grafana, abro el navegador y visito el puerto http 3000, http://192.168.137.164:3000. El
nombre de usuario predeterminado: admin, y la contraseña también es: admin.
Inserte la descripción de la imagen aquí
Bueno, la interfaz todavía se siente frio.

Instalación de TDengine

  1. Descarga
    https://www.taosdata.com/download/download.php?key=$2y 10 101 0 lTACLBcR68nBkt5.Ki90nuWS9/e3HAHJ0MlpU6XVp0RCN2Tc9G3Hi&[email protected]&pkg=tdengine_tar&pkgIndex=-
    2. 解压
tar -zxvf TDengine-server-2.0.9.0-Linux-x64.tar.gz

3. Instalación

Ejecute el script install.sh en el directorio descomprimido

sudo ./install.sh

Por cierto, al desinstalar, ejecuta: rmtaos este comando servirá

Hasta ahora se ha instalado TDengine, podemos usar el comando taos para ingresar a la base de datos para su operación (el cliente se instala por defecto cuando se instala el servidor)

Instalar el complemento TDengine en grafana

  1. Copie todo el directorio del complemento grafana en el directorio del paquete de instalación de TDengine al directorio del complemento grafana
cd /opt/grafana/grafana-7.3.5/data/plugins
cp -r /opt/taos/TDengine-server-2.0.9.0/connector/grafanaplugin/ ./TDengine

Los siguientes se renombran aquí para facilitar la instalación de otros complementos en el futuro, a fin de distinguir dónde
se copian los complementos específicos, que se puede especificar en el archivo de configuración (predeterminado: conf / default.ini).
O especificado en los parámetros de inicio, por ejemplo:
./grafana-server --homepath = / usr / share / grafana --config = / etc / grafana / grafana.ini --packaging = docker cfg: default.log.mode = console cfg: default.paths.data = / var / lib / grafana Esto especifica que el directorio de datos es / var / lib / grafana, luego el complemento debe copiarse al directorio / var / lib / grafana / plugins

  1. Reinicie el servicio grafana
    Ctrl + c para detener (o elimine el proceso grafana) y luego use el comando ./grafana-server para iniciar

  2. Configurar la fuente de datos de grafana como TDengine

Inserte la descripción de la imagen aquí
Haga clic en el botón Configuración en la interfaz web de grafana para seleccionar Fuentes de datos

Inserte la descripción de la imagen aquí
Haga clic en Agregar fuente de datos para agregar una fuente de datos

Inserte la descripción de la imagen aquí
Busque TDengine, haga clic en seleccionar

Inserte la descripción de la imagen aquí
Ingrese host: http: // localhost: 6041, aquí debe prestar atención: el puerto es 6041 en lugar del 6030 que usa el cliente para conectarse. El
usuario y la contraseña predeterminados están bien.
Haga clic en Guardar y probar para guardar.

Hasta ahora, la fuente de datos grafana TDengine está configurada

Cree una tabla en TDengine y escriba algunos datos

  1. Conéctese a TDengine con el cliente
  2. Crear base de datos
CREATE DATABASE power KEEP 365 DAYS 10 BLOCKS 4 UPDATE 1;

Cree una biblioteca llamada power, los datos en esta biblioteca se conservarán durante 365 días (se eliminarán automáticamente si son más de 365 días), un archivo de datos cada 10 días, el número de bloques de memoria es 4, lo que permite actualizar los datos

  1. Cambiar a la biblioteca que acaba de crear
USE power;  
  1. Crear super mesa
CREATE TABLE sensor (ts timestamp, temp float, humi float) TAGS (location binary(64), groupdId int);

La primera columna debe ser una marca de tiempo (ts en el ejemplo), las otras columnas son las cantidades físicas recopiladas (temp, humi en el ejemplo) y el tipo de datos puede ser entero, punto flotante, cadena, etc.
La super tabla define un tipo de cantidad física recolectada por el terminal, donde recolectamos temperatura temperatura y humedad humi

  1. Crear mesa
CREATE TABLE d1001 USING sensor TAGS ("Beijing.Chaoyang", 2);

Entre ellos, d1001 es el nombre de la tabla, sensor es el nombre de la tabla de la super tabla, seguido del valor de etiqueta específico "Beijing.Chaoyang" de la ubicación de la etiqueta y el valor de etiqueta específico de la etiqueta groupId 2.
Una tabla corresponde a un terminal, una tabla almacena los datos recopilados por un terminal y usa etiquetas para identificar diferentes terminales

  1. Inserta algunos datos
insert into d1001 values (now,12.01,34);

Muy simple, básicamente consistente con SQL comúnmente usado

Crea un tablero en grafana para mostrar datos

Inserte la descripción de la imagen aquí
Haga clic en el signo más y crear

Inserte la descripción de la imagen aquí
Haga clic en Agregar nuevo panel

Inserte la descripción de la imagen aquí
Seleccione la fuente de datos, aquí seleccione la fuente de datos TDengine que acaba de agregar

Inserte la descripción de la imagen aquí
Introduzca
select ts,temp from power.d1001 where ts >= $from and ts < $to
aquí la declaración de consulta de datos Tenga en cuenta que aquí debe estar el tiempo de consulta y la cantidad física que se mostrará (es decir, ts, temp), que es la temperatura de visualización.
from, to e interval son variables integradas del complemento TDengine, que representan el rango de consulta y el intervalo de tiempo obtenido del panel del complemento Grafana

Inserte la descripción de la imagen aquí
Establezca aquí el nombre y la unidad de la visualización de la cantidad física

Inserte la descripción de la imagen aquí
Aquí configure el rango de tiempo de los datos mostrados, actualice los datos y configure el intervalo de tiempo para la actualización automática

Hasta ahora, hemos mostrado los datos almacenados en TDengine con grafana.

Recolección y almacenamiento de datos

TDengine proporciona una variedad de SDK. Podemos usar estos SDK para almacenar los datos recopilados por el terminal en la tabla de datos correspondiente de TDengine. Aquí usamos el conector RESTful para almacenar los datos en TDengine.
Documento oficial: https://www.taosdata.com/cn/documentation/connector/#RESTful-Connector
primero mira el código:

func InsertToDtEngine(temp interface{
    
    }, humi float32) (string, error) {
    
    
	//http://192.168.137.164:6041/rest/sql
	//insert into power.d1001 values (now,12.4,0);

	sqltr:="insert into power.d1001 values (now,"+fmt.Sprint(temp)+","+fmt.Sprint(humi)+");"

	logrus.Debug(sqltr)
	req, err := http.NewRequest("POST", "http://192.168.137.164:6041/rest/sql", bytes.NewBuffer([]byte(sqltr)))
	if err != nil {
    
    
		logrus.Error(err)
		return "", err
	}
	req.SetBasicAuth("root","taosdata")
	req.Close = true
	cli := createCli()
	resp, er := cli.Do(req)
	if er != nil {
    
    
		logrus.Error(er)
		return "", er
	}
	if resp.StatusCode < 200 || resp.StatusCode >=300  {
    
    
		logrus.Error(fmt.Sprintf("statusCode:%v",resp.StatusCode))
		return "",errors.New(fmt.Sprintf("statusCode:%v",resp.StatusCode))
	}
	defer resp.Body.Close()
	respBytes, errr := ioutil.ReadAll(resp.Body)
	if errr != nil {
    
    
		logrus.Error(errr)
		return "", errr
	}
	str := string(respBytes)
	logrus.Debugf(fmt.Sprintf("Post url[%v] -> req[%v] -> rsp[%v]","http://192.168.137.164:6041/rest/sql", sqltr, str))
	return str, nil

}

Este método utiliza las herramientas relevantes en el paquete http de go para llamar a la interfaz de descanso de TDengine.
sqltr: = "insertar en power.d1001 valores (ahora," + fmt.Sprint (temp) + "," + fmt.Sprint (humi) + ");" Este es el sql para insertar datos, necesita preste atención al nombre de la tabla Agregue el nombre de la base de datos
req.SetBasicAuth ("root", "taosdata") Esto significa usar autenticación básica
http://192.168.137.164:6041/rest/sql Esta es la interfaz tranquila para enviar declaraciones SQL

Finalmente, simulemos los datos recopilados en tiempo real:

r := rand.New(rand.NewSource(time.Now().UnixNano()))
	for {
    
    
		enthandler.InsertToDtEngine(r.Intn(100),4.5)//测试
		time.Sleep(1 * time.Second)
	}

Bueno, en este punto, podemos ver una visualización de la cantidad física del dispositivo recopilada en tiempo real en la página web de grafana.

para resumir

1. El complemento grafana proporcionado por TDengine debe copiarse en el directorio grafana correcto.
2. Al agregar un tablero, debe prestar atención a los resultados de la consulta al escribir sql, es decir, el tiempo y la cantidad física a mostrar.
3. Aquí es solo una demostración simple, es necesario explorar más funciones.

Supongo que te gusta

Origin blog.csdn.net/m0_46455711/article/details/111159429
Recomendado
Clasificación