Instalar y configurar InfluxDB v1 (Base de datos de series temporales)

Fecha publicación
#
21
Dificultad
Básico
3 more properties
Publicado
tags
i40sys, industry 4.0, industry40.systems, industrial, remote access, acceso remoto, plc, siemens, omron, ubuntu, linux, iot gateway, gateway, iot, internet of things, docker, container, ubuntu, node-red, programming, influxdb, database, bases de datos, series temporales, bbdd, db, query, influxql


Descripción

InfluxDB es una BBDD de series temporales, en este vídeo explicaremos como instalar la versión 1.8 del mismo que aunque algo antigua es la que tiene más documentación, usuarios y ayuda disponible en Internet. Esto es importante por qué nos permitirá montar sistemas de monitorización de sistemas de forma sencilla con la herramienta Telegraf. Esto lo veremos en los siguientes vídeos.

Directorios

Bash
mkdir -p /docker-data/influx1/etc
mkdir -p /docker-data/influx1/backup

mkdir /data/influx1

Configuración

/docker-data/influx1/etc/influxdb.conf

file content
Bash
reporting-disabled = false
bind-address = "127.0.0.1:8088"

[meta]
  dir = "/var/lib/influxdb/meta"
  retention-autocreate = true
  logging-enabled = true

[data]
  dir = "/var/lib/influxdb/data"
  index-version = "inmem"
  wal-dir = "/var/lib/influxdb/wal"
  wal-fsync-delay = "0s"
  query-log-enabled = true
  cache-max-memory-size = 1073741824
  cache-snapshot-memory-size = 26214400
  cache-snapshot-write-cold-duration = "10m0s"
  compact-full-write-cold-duration = "4h0m0s"
  max-series-per-database = 1000000
  max-values-per-tag = 100000
  max-concurrent-compactions = 0
  trace-logging-enabled = false

[coordinator]
  write-timeout = "10s"
  max-concurrent-queries = 0
  query-timeout = "0s"
  log-queries-after = "0s"
  max-select-point = 0
  max-select-series = 0
  max-select-buckets = 0

[retention]
  enabled = true
  check-interval = "30m0s"

[shard-precreation]
  enabled = true
  check-interval = "10m0s"
  advance-period = "30m0s"

[monitor]
  store-enabled = true
  store-database = "_internal"
  store-interval = "10s"

[subscriber]
  enabled = true
  http-timeout = "30s"
  insecure-skip-verify = false
  ca-certs = ""
  write-concurrency = 40
  write-buffer-size = 1000

[http]
  enabled = true
  bind-address = ":8086"
  auth-enabled = false
  log-enabled = true
  write-tracing = false
  pprof-enabled = true
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"
  https-private-key = ""
  max-row-limit = 0
  max-connection-limit = 0
  shared-secret = ""
  realm = "InfluxDB"
  unix-socket-enabled = false
  bind-socket = "/var/run/influxdb.sock"

[[graphite]]
  enabled = false
  bind-address = ":2003"
  database = "graphite"
  retention-policy = ""
  protocol = "tcp"
  batch-size = 5000
  batch-pending = 10
  batch-timeout = "1s"
  consistency-level = "one"
  separator = "."
  udp-read-buffer = 0

[[collectd]]
  enabled = false
  bind-address = ":25826"
  database = "collectd"
  retention-policy = ""
  batch-size = 5000
  batch-pending = 10
  batch-timeout = "10s"
  read-buffer = 0
  typesdb = "/usr/share/collectd/types.db"
  security-level = "none"
  auth-file = "/etc/collectd/auth_file"

[[opentsdb]]
  enabled = false
  bind-address = ":4242"
  database = "opentsdb"
  retention-policy = ""
  consistency-level = "one"
  tls-enabled = false
  certificate = "/etc/ssl/influxdb.pem"
  batch-size = 1000
  batch-pending = 5
  batch-timeout = "1s"
  log-point-errors = true

[[udp]]
  enabled = false
  bind-address = ":8089"
  database = "udp"
  retention-policy = ""
  batch-size = 5000
  batch-pending = 10
  read-buffer = 0
  batch-timeout = "1s"
  precision = ""

[continuous_queries]
  log-enabled = true
  enabled = true
  run-interval = "1s"

Red privada para los contenedores Docker

Bash
# comprobamos si existe la red i40sys
docker network ls
# si no existe, la creamos
docker network create i40sys

Lanzar contenedor Docker

/docker-data/influx1/docker-compose.yml

YAML
version: '3.8'
services:
  influx1:
    container_name: influx1
    image: influxdb:1.8
    restart: unless-stopped
    environment: 
      - TZ="Europe/Madrid"
    volumes:
      - /data/influx1:/var/lib/influxdb
      - ./etc/influxdb.conf:/etc/influxdb/influxdb.conf:ro
      - ./backup:/backup
      - /etc/localtime:/etc/localtime:ro
    command: -config /etc/influxdb/influxdb.conf
    networks:
      - i40sys
networks:
  i40sys:
    external:
      name: i40sys

Definir password Admin

Bash
# CLI and regular commands:

docker exec -ti influx1 /usr/bin/influx

# set admin user
# user name "admin" is mandatory for default administrator
create user "admin" with password 'fxvJYEQ%J&Te_GgEmjVDm)U6' with all privileges;
modificar el fichero de configuración /docker-data/influx1/etc/influxdb.conf
Bash
# localizar esta parte del fichero
...
[http]
  enabled = true
  bind-address = ":8086"
  auth-enabled = false
...
# cambiar esta lina para que quede así:
  auth-enabled = true
resetear contenedor
Bash
docker restart influx1

Creación de BBDD y usuarios

Bash

# CLI and regular commands:

docker exec -ti influx1 /usr/bin/influx

# authenciate session with:auth 

auth <user> <password>

# creem bbdd telegraf, monitoring sistema
# CREEM BBDD AMB RETENCIÓ 1 MES PER TREBALLAR AMB TELEGRAF
CREATE DATABASE "telegraf" WITH DURATION 4w1d REPLICATION 1 NAME "one_month"
show databases
use telegraf
SHOW RETENTION POLICIES

create user "telegraf_r" with password '#s,9q:.~gM/yEub4';
create user "telegraf_w" with password '%AfqgnSb5Ye?p!qd';
grant read on "telegraf" to "telegraf_r";
grant write on "telegraf" to "telegraf_w";

show users

Backup y restore

Bash
# backup
docker exec -it influx1 influxd backup -portable /backup

# restore
docker exec -it influx1 influxd restore -portable /backup