InfluxDB: Primeiros passos

Como começar com o InfluxDB

👋 Bem-vindo à documentação da Stackhero!

A Stackhero oferece uma solução InfluxDB cloud pronta a usar que proporciona uma série de benefícios, incluindo:

  • Escritas, consultas, dashboards, tarefas e buckets ilimitados.
  • Tempo de retenção de dados ilimitado.
  • Transferências de rede e disco ilimitadas.
  • Atualizações sem esforço com apenas um clique.
  • Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.

Poupe tempo e simplifique a sua vida: são necessários apenas 5 minutos para experimentar a solução InfluxDB cloud hosting da Stackhero!

O InfluxDB não fornece uma forma de criar e gerir utilizadores diretamente através da sua interface web. Felizmente, pode usar a CLI do InfluxDB para estas tarefas.

Pode aceder à CLI do InfluxDB via Docker. Por exemplo, execute o seguinte comando:

docker run -it -u 0 bitnami/influxdb:2.7.11 /bin/bash

Não se esqueça de substituir 2.7.11 pela sua versão do InfluxDB.

Assim que o contentor iniciar, crie uma configuração. Lembre-se de substituir <XXXXXX>.stackhero-network.com pelo seu domínio real do InfluxDB:

influx config create \
  --config-name adminConfig \
  --active \
  --username-password admin \
  --org admin \
  --host-url https://<XXXXXX>.stackhero-network.com

Após este passo, poderá usar a CLI do InfluxDB. Por exemplo, para criar um novo utilizador, execute:

influx user create --name <user> --password <password>

O InfluxDB é concebido como uma base de dados de séries temporais e frequentemente gere um grande número de métricas. Como estas bases de dados tipicamente não eliminam dados automaticamente, a sua base de dados pode crescer indefinidamente e usar todo o espaço disponível em disco.

Para evitar a saturação do espaço em disco, o InfluxDB oferece duas soluções:

  1. Políticas de retenção: Eliminar dados mais antigos do que uma data definida. Por exemplo, pode decidir remover dados com mais de 365 dias.
  2. Redução de dados: Reduzir a resolução dos dados ao longo do tempo. Por exemplo, se registar uma temperatura a cada segundo, pode querer:
    1. Manter dados de temperatura com resolução de 1 segundo para os últimos 5 minutos.
    2. Manter temperaturas máximas, mínimas e médias com resolução de 1 minuto para as últimas 24 horas.
    3. Armazenar temperaturas máximas, mínimas e médias com resolução de 1 hora para dados mais antigos.

Usar políticas de retenção permite armazenar dados históricos por longos períodos sem necessitar de terabytes de espaço de armazenamento. Encontrará mais informações sobre a redução de dados na documentação oficial.

Por padrão, o InfluxDB armazena dados indefinidamente. Embora este comportamento seja típico para bases de dados tradicionais, não é ideal para bases de dados de séries temporais, que devem remover dados obsoletos para evitar um crescimento descontrolado.

Por exemplo, se estiver a armazenar dados de voltagem de bateria, podem ser relevantes apenas por alguns dias em vez de anos. Para evitar encher o seu disco, é crucial definir um período de retenção para cada um dos seus buckets.

Para configurar a retenção de dados:

  1. Abra a sua interface web do InfluxDB.
  2. Clique em "Data", depois "Buckets".
  3. Clique em "Settings" ao lado do bucket que deseja configurar.
  4. Selecione "Delete data older than" e escolha o seu período de retenção desejado.

Não se esqueça de que os dados mais antigos do que o período de retenção selecionado serão permanentemente eliminados!

Tenha em mente que os dados no InfluxDB estão organizados em shards. Shards que contêm apenas dados obsoletos são eliminados automaticamente, mas se um shard contiver uma mistura de dados obsoletos e atuais, não será removido. Por padrão, sem uma política de retenção definida, os shards contêm 7 dias de dados. Isto significa que quando define uma política de retenção, quase 7 dias de dados obsoletos podem ainda ser preservados juntamente com os seus dados atuais. Encontrará mais informações sobre shards na documentação oficial.

Encontrará exemplos sobre como enviar dados de Node.js para um serviço InfluxDB neste repositório: https://github.com/stackhero-io/influxdbGettingStarted