miércoles, 13 de diciembre de 2023

Telegraf para capturar Netflow + InfluxDB + Grafana Dashboards

 

En entradas anteriores habíamos visto como instalar Nagios, Pnp4nagios, mrtg y Nagvis. En estos días probando Grafana una potente herramienta para elaborar tableros que soporta varias fuente de datos, elaboré unos dashboard desde PNP4nagios, sin embargo, se me presentó un inconveniente al intentar leer los datos desde MRTG, por lo que revisando conocí de  esta herramienta Telegraf que al integrarla con una base de datos que soporta grafana como InfluxDB, por lo que me puse manos a la obra e instalar estas dos potentes herramientas para monitorear los dispositivos de red, como sabrán mi preferencia con Centos por lo que empecemos:

1.      Primero saber que mi sistema operativo está actualizado:

sudo yum -y update

2.      Agregar repositorio RPM Influxdata

sudo tee /etc/yum.repos.d/influxdb.repo<<EOF

[influxdb]

name = InfluxDB Repository - RHEL

baseurl = https://repos.influxdata.com/rhel/8/x86_64/stable/

enabled = 1

gpgcheck = 0

gpgkey = https://repos.influxdata.com/influxdb.keyProcedemos a instalar Telegraf

EOF

sudo yum -y install telegraf

 

3.      Configuraremos Telegraf

sudo nano /etc/telegraf/telegraf.conf

4.      Agregamos las líneas para enviar las métricas a InfluxDB o puedes quitarle el comentario

[[outputs.influxdb]]

urls = ["http://127.0.0.1:8086"]

database = "telegraf"

## HTTP Basic Auth

username = "telegraf"

password = "telegraf"

5.      Ahora indicamos para que el servicio inicie automáticamente

sudo systemctl enable  telegraf

6.      Ahora iniciamos el servicio

Systemctl start telegraf

7.      Instalamos InfluxDB

sudo yum -y install influxdb

8.      Iniciamos y habilitamos InfluxDB

sudo systemctl enable influxdb

sudo systemctl start influxdb

9.      Configuramos Influxdb

influx

> create database telegraf

> show databases

> create user telegraf with password 'telegraf'

> exit

10.   Configurar HTTPS en Influxdb

11.   Instalamos los paquetes necesarios

Yum install gnutls-utils

12.   Vamos a crear los certificados para ellos creamos ingresamos al directorio /etc/ssl

cd /etc/ssl

sudo mkdir influxdb && cd influxdb

sudo certtool --generate-privkey --outfile server-key.pem --bits 2048

13.   Creamos la clave pública para nuestro servidor influxdb

sudo certtool --generate-self-signed --load-privkey server-key.pem --outfile server-cert.pem

14.   Ahora habilitaremos HTTPS en nuestro servidor influxdb

Nos dirigimos al directorio /etc/influxdb/influxdb.conf y modificamos las siguientes líneas:

# Determines whether HTTPS is enabled.

  https-enabled = true

# The SSL certificate to use when HTTPS is enabled.

https-certificate = "/etc/ssl/influxdb/server-cert.pem"

# Use a separate private key location.

https-private-key = "/etc/ssl/influxdb/server-key.pem"

15.   Reiniciamos el servicio de Influxdb y asegúrese que no de error

Systemctl restart influxdb

16.   Configurar Telegarf para que se conecte por https

Editamos el archivo conf que se encuentra en el siguiente directorio /etc/telegraf/telegraf.conf

# Configuration for sending metrics to InfluxDB

[[outputs.influxdb]]

 

# https, not http!

urls = ["https://127.0.0.1:8086"]

## Use TLS but skip chain & host verification

insecure_skip_verify = true

17.   Reiniciamos Telegraf

systemctl restart telegraf

18.   Explorando tus métricas en InfluxDB

influx -ssl -unsafeSsl -username 'telegraf' -password 'telegraf'

Connected to http://localhost:8086 version 1.7.7

InfluxDB shell version: 1.7.7

> USE telegraf

> SELECT * FROM cpu WHERE time > now() - 30s

19.   Configurar la fuente de datos de Grafana

Abra su navegador web y escriba la dirección IP del servidor con el puerto 3000.

http://direccion_ip:3000/

Inicie sesión con el usuario predeterminado ‘admin’ y la contraseña ‘admin’.

Haga clic en el botón ‘Agregar fuente de datos’ para agregar la fuente de datos influxdb.

Nombre: influxdb

Tipo: influxdb o Query Languaje: InfluxQl

URL: http://direccion_ip:8086/


20.   Configurar el panel de Grafana

Grafana proporciona el repositorio de complementos y paneles de Grafana.

Para importar el tablero de grafana, haga clic en el menú ‘+’ en el panel izquierdo y haga clic en ‘Importar’.

Ahora abra el panel de Grafana de muestra desde la URL https://grafana.com/dashboards/5955 y haga clic en el botón Copiar ID al portapapeles.

Pegue la identificación del tablero.

Y será redirigido automáticamente a la configuración del tablero.

En la sección de opciones, haga clic en InfluxDB y elija su servidor influxdb, luego haga clic en el botón Importar.

Debería ver una captura de pantalla del tablero importado, similar a esta:

Grafana dashboards 5955


 

21.   Listo ahora en nuestro equipo con Telegraf instalado vamos a configurarlo para que pueda monitorear a nuestros switches por SNMP. Para separar y no modificar el archivo telegraf.conf vamos a crear uno nuevo para nuestros switches cisco, para ello creamos un archivo dentro del directorio telegraf.d

nano /etc/telegraf/telegraf.d/telegraf01.conf

22.   Ahora copiamos el siguiente texto, esta claro de que debemos ajustarlo a nuestra necesidad:

[[inputs.snmp]]

  agents = [ "172.16.11.1:161","172.16.12.1:161" ]

  version = 2

  community = "public"

  interval = "60s"

  timeout = "10s"

  retries = 3

 

  [[inputs.snmp.field]]

    name = "hostname"

    oid = "RFC1213-MIB::sysName.0"

    is_tag = true

 

  [[inputs.snmp.field]]

    name = "uptime"

    oid = "DISMAN-EXPRESSION-MIB::sysUpTimeInstance"

 

 [[inputs.snmp.field]]

    name = "CPUBusy"

    oid = ".1.3.6.1.4.1.9.2.1.57.0"

 

  [[inputs.snmp.field]]

    name = "ciscoEnvMonFanState"

    oid = ".1.3.6.1.4.1.9.9.13.1.4.1.3"

 

  [[inputs.snmp.field]]

    name = "ciscoEnvMonVoltageStatusValue"

    oid = ".1.3.6.1.4.1.9.9.13.1.2.1.3"

 

  [[inputs.snmp.field]]

    name = "ciscoEnvMonTemperatureStatusValue"

    oid = ".1.3.6.1.4.1.9.9.13.1.3.1.3"

 

  [[inputs.snmp.field]]

    name = "cpmCPUTotal5min"

    oid = ".1.3.6.1.4.1.9.9.109.1.1.1.1.5"

 

  [[inputs.snmp.field]]

    name = "ciscoMemoryPoolFree"

    oid = ".1.3.6.1.4.1.9.2.1.8.0"

 

  [[inputs.snmp.field]]

    name = "ciscoMemoryPoolTotal"

    oid = "1.3.6.1.4.1.9.3.6.6.0"

 

  [[inputs.snmp.field]]

    name = "ciscoMemoryPoolUsed"

    oid = ".1.3.6.1.4.1.9.9.48.1.1.1.5"

 

  [[inputs.snmp.table]]

    name = "interface"

    inherit_tags = [ "hostname" ]

    oid = "IF-MIB::ifTable"

 

    [[inputs.snmp.table.field]]

      name = "ifDescr"

      oid = "IF-MIB::ifDescr"

      is_tag = true

 

  [[inputs.snmp.table]]

    name = "interface"

    inherit_tags = [ "hostname" ]

    oid = "IF-MIB::ifXTable"

 

    [[inputs.snmp.table.field]]

      name = "ifDescr"

      oid = "IF-MIB::ifDescr"

      is_tag = true

 

  [[inputs.snmp.table]]

    name = "interface"

    inherit_tags = [ "hostname" ]

    oid = "EtherLike-MIB::dot3StatsTable"

 

    [[inputs.snmp.table.field]]

      name = "ifDescr"

      oid = "IF-MIB::ifDescr"

      is_tag = true

 

23.   Reiniciamos Telegraf

Systemctl restart telegraf

24.    

 

Instalar plugin geoip

sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment


Hasta aquí llegamos, nos vemos en la próxima!

No hay comentarios.:

Publicar un comentario