Grup 5 - 7 Monitorització del sistema Proxmox
Añadimos la key de InfluxDB a nuestro sistema:
wget -qO- https://repos.influxdata.com/influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null
Instalamos los repositorios:
export DISTRIB_ID=$(lsb_release -si); export DISTRIB_CODENAME=$(lsb_release -sc) echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list > /dev/null
Update y install de InfluxDB
sudo apt-get update && sudo apt-get install influxdb2
Hacemos un start del servicio:
sudo systemctl start influxdb
Lo añadimos al inicio del sistema:
sudo systemctl enable influxdb
(Opcional)Añadimos el modo grafico de InfluxDB
sudo apt install -y influxdb2-cli
Primero, en InfluxDB vamos a crear un contenedor, para ello, entramos a InfluxDB --> Data --> Buckets --> Create new bucket
Añadimos el gpg de Telegraf y lo instalamos
wget -qO- https://repos.influxdata.com/influxdb.key | sudo tee /etc/apt/trusted.gpg.d/influxdb.asc >/dev/null source /etc/os-release echo "deb https://repos.influxdata.com/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list sudo apt-get update && sudo apt-get install telegraf
Comprobamos si Telegraf se ha instalado correctamente y está funcionando:
systemctl status telegraf
Ahora tenemos que ir al archivo de configuración de Telegraf y añadir lo siguiente:
- En el apartado url: la url del servidor InfluxDB (Si se está ejecutando en el mismo host, dejar por defecto)
- En el apartado token: añadir el token del administrador de Influxdb
- En bucket: añadir el contenedor donde irán los datos
- En organization: Añadir el nombre de la organización
En nuestro caso:
# 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. ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"] urls = ["http://localhost:8086"] ## Token for authentication. token = "xxx" ## Organization is the name of the organization you wish to write to; must exist. organization = "yyy" ## Destination bucket to write into. bucket = "zzz" ## The value of this tag will be used to determine the bucket. If this ## tag is not set the 'bucket' option is used as the default. # bucket_tag = "" ## If true, the bucket tag will not be added to the metric. # exclude_bucket_tag = false ## Timeout for HTTP messages. # timeout = "5s" ## Additional HTTP headers # http_headers = {"X-Special-Header" = "Special-Value"} ## HTTP Proxy override, if unset values the standard proxy environment ## variables are consulted to determine which proxy, if any, should be used. # http_proxy = "http://corporate.proxy:3128" ## HTTP User-Agent # user_agent = "telegraf" ## Content-Encoding for write request body, can be set to "gzip" to ## compress body or "identity" to apply no encoding. # content_encoding = "gzip" ## Enable or disable uint support for writing uints influxdb 2.0. # influx_uint_support = false ## Optional TLS Config for use on HTTP connections. # tls_ca = "/etc/telegraf/ca.pem" # tls_cert = "/etc/telegraf/cert.pem" # tls_key = "/etc/telegraf/key.pem" ## Use TLS but skip chain & host verification # insecure_skip_verify = false
Si todo está configurado correctamente, en el apartado explore, veremos lo siguiente:
Instalación de la ultima versión Enterprise de Grafana:
sudo apt-get install -y apt-transport-https sudo apt-get install -y software-properties-common wget wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
Y ahora añadimos el repositorio de la versión estable
echo "deb https://packages.grafana.com/enterprise/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Tambén podemos añadir el repositorio de una versión beta pero no es recomendable
echo "deb https://packages.grafana.com/enterprise/deb beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Ahora hacemos un update para cargar los paquetes y instalamos Grafana
sudo apt-get update sudo apt-get install grafana-enterprise
Finalmente hacemos un daemon-reload y un restart y un status para comprobar que todo se ha instalado correctamente
sudo systemctl daemon-reload sudo systemctl start grafana-server sudo systemctl status grafana-server
Configuración de Grafana
Nos dirigimos a el apartado de Configuration --> Data sources --> Add data source y añadimos InfluxDB
Configuramos el data source:
Para esta parte hay que introducir el nombre de la Organización, el token del admin de influxdb y el contenedor
Si todo ha sido configurado correctamente, al acceder a Exploring y elegir el Data source, tendría que salirnos algo como esto:
Ahora para hacer que InfluxDB funcione, hay que conectar InfluxQL con InfluxDB, para ello creamos una base de datos y luego la configuramos en Grafana
influx v1 dbrp create --db xxx --rp autogen --bucket-id yyy --org zzz --token www
Donde:
xxx = Nombre base de datos
yyy = id del contenedor recientemente creado
zzz = Nombre de la organización
www = Token del administrador de influxdb
Y ahora añadimos un nuevo data source en Grafana
En este caso activaremos el Basic Auth
Aquí ponemos el nombre del administrador de Influxdb y su contraseña
Finalmente añadimos un Header
Header: Authorization
Value: Token "Tu token"
Database: Nombre para la base de datos
User: Usuario InfluxDB
Password: Password Admin InfluxDB
Method: GET
Si todo está configurado correctamente, si vamos a Explore y seleccionamos la conexión, veremos lo siguiente:
Finalmente vamos a importar una template para tener los graficos, para ello hacemos click en Create --> Import y en micaso añadí la template 10048 que sirve para Proxmox
Finalmente el ultimo paso es conectar InfluxDB con Proxmox, para ello nos dirigimos a Proxmox
Hacemos click en el Cluster --> Metric Server
Le damos a Add y seleccionamos InfluxDB
Rellenamos los datos con la información de InfluxDB y hacemos click en Create
Y finalmente si nos vamos a los dashboards de Grafana, deberíamos ver algo como esto:
Para crear una alerta, lo primero que hay que hacer es dirigirse a el apartado Alerting de Grafana y hacer click en Notification Channels --> Add Notification Channel
Si queremos crear una alerta y que envie notificación por correo, seleccionamos la opción Email, introducimos un correo y hacemos click en Test
En este caso elegimos la opción Email, pero como se puede ver, hay muchas mas opciones como Discord, Google Hangouts, Telegram, Microsoft Teams, etc
En un principio esto no va a funcionar ya que primero hay que configurar el smtp de Grafana, para ello vamos a el archivo /etc/grafana/grafana.ini y configuramos el apartado smtp de la siguiente forma:
Una vez hecho esto, le damos a Test y ya debería enviarnos una alerta de prueba al correo
Ahora vamos a crear una alerta, primero nos vamos a el dashboard y le damos a editar a uno de los graficos
De primeras, no podremos crear la alerta, ya que con las variables de la propia template no deja crear alertas, para ello tenemos que cambiar la variable y añadirle el nombre del nodo que queremos monitorizar, para ello hacemos click en el icono del lapiz
Y cambiamos la variable de host por el nombre del nodo entre comillas
Ahora tenemos que ir a el apartado de Alert
Una vez en la configuración de la alerta elegimos el nombre, y el tiempo de escaneo
Ahora elegimos la regla, en este caso si el % de uso de la CPU supera el 70% slatará, y tambíen elegimos la query, que depende de lo que el grafico esté escanenando, en este caso haremos 3 veces la regla, para las 3 querys que hay (A,B,C)
Finalmente elegimos por donde nos va a avisar en este caso Email y el mensaje que nos va a enviar
Finalmente nos llegará al correo una alerta como esta:
Alerta de aviso de uso de RAM de las diferentes maquinas virtuales de proxmox
Alerta uso de RAM del primer nodo
Alerta al no recibir datos de una maquina