InfluxDB 2.0 e Telegraf 2.0 e Prometheus 2.x

Atenção: Até o momento em que este tutorial foi elaborado (14 de maio de 2020) o InfluxDB 2.0 está na versão beta e ainda não é recomendado para ser utilizado em produção e o Prometheus 2.x ainda não é completamente compatível com a API do InfluxDB 2.0. Para uso em produção é recomendado o InfluxDB 1.8.x que pode visto nesse tutorial.

Issues:

https://github.com/prometheus/prometheus/issues/5657

https://github.com/influxdata/influxdb/issues/14127

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://v2.docs.influxdata.com/v2.0/get-started

Instale o InfluxDB 2.0 com Docker.

Apenas com HTTP:

sudo mkdir -p /docker/influxdb2/
VERSION=2.0.0-beta

docker run -d --name influxdb -p 9999:9999 -v /docker/influxdb2/:/root/.influxdbv2 quay.io/influxdb/influxdb:$VERSION

Apenas com HTTPS:

sudo mkdir -p /docker/influxdb2/certs
sudo openssl req -x509 -nodes -newkey rsa:2048 \
-keyout /docker/influxdb2/certs/influxdb-selfsigned.key \
-out /docker/influxdb2/certs/influxdb-selfsigned.crt \
-days 10800
docker run -d --name influxdb -p 9999:9999 \
-v /docker/influxdb2/certs/influxdb-selfsigned.key:/etc/ssl/influxdb-selfsigned.key \
-v /docker/influxdb2/certs/influxdb-selfsigned.crt:/etc/ssl/influxdb-selfsigned.crt \
-v /docker/influxdb2:/root/.influxdbv2 quay.io/influxdb/influxdb:$VERSION influxd \
--tls-cert "/etc/ssl/influxdb-selfsigned.crt" \
--tls-key "/etc/ssl/influxdb-selfsigned.key"

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://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


Telegraf

É o coletor de métricas do InfluxDB. Ele tem suporte a mais de 100 plugins para coleta de dados. Os dados coletados devem estar no formato do Prometheus.

Instale o Telegraf usando o Docker.

Exportando o arquivo de configuração padrão.

Apenas com HTTP:

sudo mkdir -p /docker/telegraf2

sudo docker run --rm telegraf telegraf config > /docker/telegraf/telegraf.conf

Apenas com HTTPS:

Com base nos procedimentos deste tutorial: https://dzone.com/articles/getting-started-with-influxdb-20, as informações relevantes a ser definidas na configuração do Telegraf para enviar dados do sistema GNU/Linux que executa o conteiner do InfluxDB, sem utilizar TLS e autenticação na API, são as seguintes:

Arquivo: /docker/telegraf2/telegraf.conf

Configurações adicionais (altere os valores em negrito de acordo com o seu ambiente e configurações definidas no InfluxDB):

Se o InfluxDB 2 estiver acessível apenas com HTTP:

# Configuration for sending metrics to InfluxDB
[[outputs.influxdb_v2]]

# The URLs of the InfluxDB cluster nodes.
# Multiple URLs can be specified for a single cluster, only ONE of the
# urls will be written to each interval.
urls = ["http://172.17.0.1:9999"]

# Token for authentication.
token = "5OhOi3km8ia9xCij56_fB4mxbzSNDkRkkkrzDs5k0P9t9TKuRphbzO_TLI76oSaZLBknuUJqzv0WV6D4-tj9Kg=="

# Organization is the name of the organization you wish to write to; must exist.
organization = "InfluxData"

# Destination bucket to write into.
bucket = "influx_metrics"

Se o InfluxDB 2 estiver acessível apenas com HTTPS:

# Configuration for sending metrics to InfluxDB
[[outputs.influxdb_v2]]

# The URLs of the InfluxDB cluster nodes.
# Multiple URLs can be specified for a single cluster, only ONE of the
# urls will be written to each interval.
urls = ["https://172.17.0.1:9999"]

# Token for authentication.
token = "5OhOi3km8ia9xCij56_fB4mxbzSNDkRkkkrzDs5k0P9t9TKuRphbzO_TLI76oSaZLBknuUJqzv0WV6D4-tj9Kg=="

# Organization is the name of the organization you wish to write to; must exist.
organization = "InfluxData"

# Destination bucket to write into.
bucket = "influx_metrics"
insecure_skip_verify = true

O arquivo de configuração devidamente preenchido também pode ser obtido a partir da interface web do InfluxDB 2, acessando o menu Data > Telegraf. Em seguinda, selecione o bucket e clique no botão Create Configuration. Selecione o tipo de instalação do Telegraf para Docker. Informe o nome da organização e clique em Create configuration. Depois clique no nome da organização recém criada e copie o conteúdo ou faça o download do arquivo de configuração gerado.

Executando o Telegraf.

docker run -d --name=telegraf -v /docker/telegraf2/telegraf.conf:/etc/telegraf/telegraf.conf:ro telegraf

No InfluxDB, acesse o menu Boards e localize o dashboard automaticamente criado pelo Telegraf para exibir as métricas do host que executa o conteiner do InfluxDB.

Mais informações sobre o Telegraf podem ser encontradas nos links a seguir:

https://v2.docs.influxdata.com/v2.0/write-data/use-telegraf/manual-config/

https://hub.docker.com/_/telegraf

https://v2.docs.influxdata.com/v2.0/reference/telegraf-plugins


Prometheus

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

Acesso apenas com HTTP:

Abaixo está o arquivo de configuração do Prometheus para se conectar ao InfluxDB 2 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 em negrito de acordo com o seu ambiente e configurações
de acesso definidas no InfluxDB (HTTP/HTTPS, 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:9999/api/v2/prom/write?org=InfluxData&bucket=prometheus&token=rcRExVE1naRfEnjdfO-brpBr-md3_oscEjV5b35LPQB7WojDNqfyG8MB_j270smlVp1RDpsSNnKjLExWXkIEvA=="
  - url: "https://172.17.0.1:9999/api/v1/prom/write?db=prometheus&bearer_token=rcRExVE1naRfEnjdfO-brpBr-md3_oscEjV5b35LPQB7WojDNqfyG8MB_j270smlVp1RDpsSNnKjLExWXkIEvA=="
    name: send_to_influxdb
    tls_config:
      insecure_skip_verify: true

Iniciando o Prometheus.

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

Deixe uma resposta

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