InfluxDB 1.x, Prometheus 2.x e Grafana 6.x

InfluxDB

InfluxDB é um banco de dados para armazenamento de séries temporais. Ele possui o código fonte aberto e disponível em: https://github.com/influxdata/influxdb

O InfluxDB inclui APIs para armazenar e consultar dados, processando-os em segundo plano para fins de monitoramento, geração de alertas, exibição de dashboards, exploração dos dados e muito mais. Ele também possui outros componentes, tais como: Kapacitor (processamento de dados em segundo plano) e Chronograf (a interface web). Tudo isso está disponível em um único binário, desenvolvido utilizando a linguagem Go (https://golang.org).

A documentação oficial do InfluxDB está disponível em:
https://docs.influxdata.com
https://docs.influxdata.com/influxdb/v1.7/introduction/getting-started

Instalação do InfluxDB 1.x com Docker:

Apenas com HTTP:

sudo mkdir -p /docker/influxdb1/

Iniciando o InfluxDB com HTTP:

VERSION=1.8

docker run -d --name influxdb -p 8086:8086 \
--restart=always \
--log-opt max-size=5m --log-opt max-file=2 \
-e INFLUXDB_DATA_INDEX_VERSION="tsi1" \
-v /docker/influxdb1/data:/var/lib/influxdb influxdb:$VERSION

Acessando o conteiner do InfluxDB para gerenciamento na linha de comando.

docker exec -it influxdb bash

Acessando o prompt de comandos do InfluxDB dentro do conteiner.

influx

Apenas com HTTPS:

sudo mkdir -p /docker/influxdb1/certs
sudo mkdir -p /docker/influxdb1/conf/

Criando um certificado auto-assinado com validade para 30 anos:

sudo openssl req -x509 -nodes -newkey rsa:2048 \
-keyout /docker/influxdb1/certs/influxdb-selfsigned.key \
-out /docker/influxdb1/certs/influxdb-selfsigned.crt \
-days 10800

Obtendo o arquivo de configuração padrão do InfluxDB:

sudo docker run --rm influxdb influxd config > /docker/influxdb1/conf/influxdb.conf

Altere os seguintes parâmetros de configuração

https-enabled = true
https-certificate = "/etc/ssl/influxdb-selfsigned.crt"
https-private-key = "/etc/ssl/influxdb-selfsigned.key"

Iniciando o InfluxDB com HTTPS:

docker run -d --name influxdb -p 8086:8086 \
--restart=always \
--log-opt max-size=5m --log-opt max-file=2 \
-e INFLUXDB_DATA_INDEX_VERSION="tsi1" \
-v /docker/influxdb1/conf/influxdb.conf:/etc/influxdb/influxdb.conf \
-v /docker/influxdb1/certs/influxdb-selfsigned.key:/etc/ssl/influxdb-selfsigned.key \
-v /docker/influxdb1/certs/influxdb-selfsigned.crt:/etc/ssl/influxdb-selfsigned.crt \
-v /docker/influxdb1/data:/var/lib/influxdb influxdb:$VERSION

Acessando o conteiner do InfluxDB para gerenciamento na linha de comando.

docker exec -it influxdb bash

Acessando o prompt de comandos do InfluxDB dentro do conteiner.

influx --ssl --unsafeSsl

Comandos para gerenciar o InfluxDB.

Criando o usuário admin.

CREATE USER admin WITH PASSWORD 'adminadmin' WITH ALL PRIVILEGES

Criando o usuário prometheus.

CREATE USER prometheus WITH PASSWORD 'prometheus123' WITH ALL PRIVILEGES
SHOW USERS

Criando o banco de dados do prometheus e influxdb_metrics

CREATE DATABASE prometheus
CREATE DATABASE influxdb_metrics
SHOW DATABASES
QUIT

Fonte: https://hub.docker.com/_/influxdb

Opcionalmente, altere a seguintes linhas no arquivo /docker/influxdb1/conf/influxdb.conf

# Habilitando a autenticação na API do InfluxDB
auth-enabled = true

# Desabilitando o limite de séries na base de dados
max-series-per-database = 0

# Aumentando o cache do InfluxDB para 10 GB de memória (veja se o hardware tem essa quantidade de memória)
cache-max-memory-size = 100073741824

# Desabilitando o log de acesso a API do InfluxDB
log-enabled = false

# Habilitando o registro de log de apenas error e não info (padrão)
level = "error"

# Alterando a forma de armazenamento das métricas
# Essa alteração proporciona uma melhora significativa no uso da memória. Veja este link:
# https://thenewstack.io/how-to-overcome-memory-usage-challenges-with-the-time-series-index/
index-version = "tsi1"

Mais informações sobre o InfluxDB podem ser encontradas nos links a seguir.

Slides: https://www.percona.com/live/e17/sessions/using-prometheus-with-influxdb-for-metrics-storage

https://docs.influxdata.com/influxdb/v1.7/introduction/getting-started

https://dzone.com/articles/getting-started-with-influxdb-20

https://dzone.com/articles/how-to-query-influxdb

https://www.influxdata.com/blog/getting-started-with-influxdb-2-0-scraping-metrics-running-telegraf-querying-data-and-writing-data/

https://thenewstack.io/getting-started-demo-monitoring-with-a-time-series-database-on-influxdb-cloud-2-0/

https://github.com/influxdata/telegraf/blob/master/plugins/inputs/prometheus/README.md

https://docs.influxdata.com/influxdb/v1.7/supported_protocols/prometheus/

https://docs.openstack.org/developer/performance-docs/methodologies/monitoring/influxha.html

https://www.slant.co/versus/1489/6000/~prometheus_vs_influxdb

https://v2.docs.influxdata.com/v2.0/security/enable-tls/

https://docs.influxdata.com/influxdb/v1.7/administration/https_setup/

https://monitoring-portal.org/t/ssl-with-influxdb-on-grafana/5005/7

https://dev.to/influxdata/spinning-up-influxdb-2-0-alpha-with-docker-14k8


Prometheus

Informações sobre o Prometheus e instruções de instalação via Docker podem ser encontradas nos links a seguir.

Apenas com HTTP:

Abaixo está o arquivo de configuração do Prometheus para se conectar ao InfluxDB para armazenamento das métricas.

Apenas com HTTPS entre o Prometheus e o InfluxDB.

sudo mkdir -p /docker/prometheus/

Conteúdo do arquivo /docker/prometheus/prometheus.yml. Altere as informações de acordo com o seu ambiente e configurações
de acesso definidas no InfluxDb (token e bucket).

global:
  # Intervalo de raspagem de métricas. O padrão é a cada 60s
  scrape_interval: 10s
  # Intervalo para avaliação de regras. O padrão é a cada 60s
  evaluation_interval: 10s
  # scrape_timeout é definido como o padrão global (10s).

alerting:
  alertmanagers:
    static_configs: 
    - targets:
    # - alertmanager:9093

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  - job_name: 'prometheus'
  # metrics_path defaults to '/metrics'
  #    scheme defaults to 'http'. 
    static_configs:
    - targets: ['172.17.0.1:9090']

#Output metrics for InfluxDB 2.0
remote_write:
  - url: "https://172.17.0.1:8086/api/v1/prom/read?db=prometheus&u=prometheus&p=prometheus123"
  # name: send_to_influxdb
    tls_config:
      insecure_skip_verify: true

Iniciando o Prometheus:

VERSION_PROMETHEUS=v2.17.1

docker run -d -p 9090:9090 \
--name prometheus \
-v /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus:$VERSION_PROMETHEUS

Grafana

Informações sobre o Grafana e instruções de instalação via Docker podem ser encontradas nos links a seguir.

http://blog.aeciopires.com/instalando-o-grafana-via-docker/

http://blog.aeciopires.com/configurando-o-grafana-para-funcionar-sobre-https/

1 comentário em “InfluxDB 1.x, Prometheus 2.x e Grafana 6.x

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *