Grafana + TDengine realiza a exibição dos dados coletados pela Internet das Coisas

Primeiro, vêm dois documentos oficiais:
https://www.taosdata.com/cn/documentation/connections-with-other-tools/#Grafana
https://grafana.com/docs/grafana/latest/

instalação grafana

Existem muitas maneiras de instalar, aqui está uma maneira mais conveniente, se você quiser tentar outras maneiras, consulte o site oficial

  1. baixar
wget https://dl.grafana.com/oss/release/grafana-7.3.5.linux-amd64.tar.gz
  1. Descompactar
tar -xzvf grafana-7.3.5.linux-amd64.tar.gz
  1. corre
cd grafana-7.3.5/
cd bin
./grafana-server 

Até agora, executei com sucesso um grafana, abri o navegador e visitei http porta 3000, http://192.168.137.164:3000. O
nome de usuário padrão: admin, e a senha também é: admin.
Insira a descrição da imagem aqui
Bem, a interface ainda parece legal.

Instalação TDengine

  1. Baixe
    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. Instalação

Execute o script install.sh no diretório descompactado

sudo ./install.sh

A propósito, ao desinstalar, execute: rmtaos este comando fará

Até agora o TDengine foi instalado, podemos usar o comando taos para entrar no banco de dados para operação (o cliente é instalado por padrão quando o servidor é instalado)

Instale o plugin TDengine no grafana

  1. Copie todo o diretório do plugin grafana no diretório do pacote de instalação TDengine para o diretório do plugin grafana
cd /opt/grafana/grafana-7.3.5/data/plugins
cp -r /opt/taos/TDengine-server-2.0.9.0/connector/grafanaplugin/ ./TDengine

Os seguintes são renomeados aqui para facilitar a instalação de outros plug-ins no futuro, de modo a distinguir para onde os
plug-ins específicos são copiados, o que pode ser especificado no arquivo de configuração (padrão: conf / default.ini).
Ou especificado nos parâmetros de inicialização, por exemplo:
./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 Isso especifica que o diretório de dados é / var / lib / grafana, então o plugin deve ser copiado para o diretório / var / lib / grafana / plugins

  1. Reinicie o serviço de grafana
    Ctrl + c para parar (ou finalize o processo de grafana) e, em seguida, use o comando ./grafana-server para iniciar

  2. Configure a fonte de dados da grafana como TDengine

Insira a descrição da imagem aqui
Clique no botão Configurações na interface da web grafana para selecionar Fontes de Dados

Insira a descrição da imagem aqui
Clique em Adicionar fonte de dados para adicionar uma fonte de dados

Insira a descrição da imagem aqui
Encontre TDengine, clique em selecionar

Insira a descrição da imagem aqui
Digite host: http: // localhost: 6041, aqui você precisa prestar atenção: a porta é 6041 em vez da 6030 usada pelo cliente para se conectar. O
usuário e a senha padrão são adequados.
Clique em Salvar e testar para salvar.

Até agora, a fonte de dados grafana TDengine está configurada

Crie uma tabela no TDengine e escreva alguns dados

  1. Conecte-se ao TDengine com o cliente
  2. Criar banco de dados
CREATE DATABASE power KEEP 365 DAYS 10 BLOCKS 4 UPDATE 1;

Crie uma biblioteca chamada power, os dados nesta biblioteca serão retidos por 365 dias (serão excluídos automaticamente se mais de 365 dias), um arquivo de dados a cada 10 dias, o número de blocos de memória é 4, permitindo que os dados sejam atualizados

  1. Mudar para a biblioteca recém-criada
USE power;  
  1. Criar super mesa
CREATE TABLE sensor (ts timestamp, temp float, humi float) TAGS (location binary(64), groupdId int);

A primeira coluna deve ser um carimbo de data / hora (ts no exemplo), as outras colunas são as quantidades físicas coletadas (temp, humi no exemplo) e o tipo de dados pode ser inteiro, ponto flutuante, string, etc.
A supertabela define um tipo de quantidade física coletada pelo terminal, onde coletamos temperatura temp e umidade humi

  1. Criar a tabela
CREATE TABLE d1001 USING sensor TAGS ("Beijing.Chaoyang", 2);

Entre eles, d1001 é o nome da tabela, sensor é o nome da tabela da supertabela, seguido pelo valor específico da tag "Beijing.Chaoyang" da tag Location e o valor específico da tag groupId 2.
Uma tabela corresponde a um terminal, uma tabela armazena os dados coletados por um terminal e usa tags para identificar diferentes terminais

  1. Insira alguns dados
insert into d1001 values (now,12.01,34);

Muito simples, basicamente consistente com o SQL comumente usado

Crie um painel em grafana para exibir dados

Insira a descrição da imagem aqui
Clique no sinal de mais e crie

Insira a descrição da imagem aqui
Clique em Adicionar novo painel

Insira a descrição da imagem aqui
Selecione a fonte de dados, aqui selecione a fonte de dados TDengine que acabou de adicionar

Insira a descrição da imagem aqui
Insira a declaração de consulta de dados
select ts,temp from power.d1001 where ts >= $from and ts < $to
aqui. Observe que aqui deve haver o tempo de consulta e a quantidade física a ser exibida (isto é, ts, temp), que é a temperatura de exibição.
de, para e intervalo são variáveis ​​integradas do plug-in TDengine, que representam o intervalo de consulta e o intervalo de tempo obtido no painel do plug-in Grafana

Insira a descrição da imagem aqui
Defina o nome e a unidade da quantidade física exibida aqui

Insira a descrição da imagem aqui
Aqui, defina o intervalo de tempo dos dados exibidos, atualize os dados e defina o intervalo de tempo para atualização automática

Até agora, exibimos os dados armazenados no TDengine com grafana.

Coleta e armazenamento de dados

O TDengine fornece uma variedade de SDKs. Podemos usar esses SDKs para armazenar os dados coletados pelo terminal na tabela de dados correspondente do TDengine. Aqui, usamos o Conector RESTful para armazenar os dados no TDengine.
Documento oficial: https://www.taosdata.com/cn/documentation/connector/#RESTful-Connector,
olhe primeiro o 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 usa as ferramentas relevantes no pacote http de go para chamar a interface restful do TDengine.
sqltr: = "inserir em valores power.d1001 (agora," + fmt.Sprint (temp) + "," + fmt.Sprint (humi) + ");" Este é o sql para inserir dados, você precisa preste atenção ao nome da tabela Adicione o nome do banco de dados
req.SetBasicAuth ("root", "taosdata") Isso significa usar a autenticação Básica
http://192.168.137.164:6041/rest/sql Esta é a interface tranquila para enviar instruções SQL

Por fim, vamos simular os dados coletados em tempo real:

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

Bem, neste ponto, podemos ver uma exibição da quantidade física do dispositivo coletado em tempo real na página da grafana.

Resumindo

1. O plugin grafana fornecido pelo TDengine deve ser copiado para o diretório grafana correto.
2. Ao adicionar um painel, deve-se estar atento aos resultados da consulta ao escrever sql, ou seja, o tempo e a quantidade física a ser exibida.
3. Aqui está apenas uma demonstração simples, mais recursos precisam ser explorados.

Acho que você gosta

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