Monitorización
Para la monitorización de nuestros sistemas vamos a usar el tandem prometheus y grafana
Prometheus
Nos servira para recuperar datos de unos sensores que pondremos en nuestros sistemas y crear alertas por si algo sucede, para empezar vamos a descargamos prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.36.1/prometheus-2.36.1.darwin-amd64.tar.gzDescomprimimos
tar xfz prometheus-*.tar.gzCreamos el usuarios para prometehus
useradd --no-create-home --shell /usr/sbin/nologin prometheusCreamos las carpetas
mkdir /etc/prometheus
mkdir /var/lib/prometheusLes asignamos el usuario creado anteriormente
chown prometheus:prometheus /etc/prometheus
chown prometheus:prometheus /var/lib/prometheusEntramos en la carpeta de prometheus y copiamos los binarios
cd prometheus-2.36.0.linux-amd64
cp ./prometheus /usr/local/bin/
cp ./promtool /usr/local/bin/asignamos usuario prometheus
Copiamos la consola y las librerías
Damos permisos
Ahora que lo tenemos instalado lo vamos a configurar, para ello creamos el siguiente fichero
Con esto definimos cada cuanto tiene que scrapear los datos de los diferentes nodos que configuraremos más adelante
Asignamos el usuario a la configuración
Primer arranque de prometehus para ver que esta todo en orden, donde le decimos que configuración tiene que cargar, donde va a guardar los datos (podríamos montarlo en un glusterfs para tener una replica fuera) y la configuración de la versión web.
Para tenerlo en el arranque de manera automática lo vamos a configurar en systemd, para ello creamos el siguiente fichero.
Recargamos el demonio de systemd y ya lo tendremos disponible.
Lo agregamos al arranque y lo arrancamos
Nginx + SSL + Autenticación
Una opción para ayudar a proteger nuestro servidor Prometheus es colocarlo detrás de un proxy inverso para que luego podamos agregar SSL y una capa de autenticación sobre la interfaz web predeterminada sin restricciones de Prometheus.
Instalamos nginx
Vamos a crear un sitio nuevo
Agregamos el siguiente contenido
comprobamos que las configuraciones sean correcta
Reiniciamos nginx y comprobamos su estado
Ahora ya podemos acceder a http://tu-dominio.com
Si accedemos por la ip veremos la web por defecto de nginx si no queremos que esto suceda podemos eliminar el siguiente fichero
Ahora vamos a ponerle certificado gracias a Let’s Encrypt para ello instalamos el certbot, agregamos el repositorio.
ahora solo tenemos que ejecutar e ir respondiendo las preguntas que nos hace
Podemos ver los cambios que realizo certbot en el fichero de nuestro dominio
Como no queremos que todo el mundo tenga acceso a nuestros datos vamos a poner una autentificación y a cerrar el puerto 9090 y 9100 para que no puedan acceder a la información de manera externa y sin autorización
Instalamos apache2-utils
Creamos un fichero de contraseñas con el usuario admin y ponemos la contraseña que queramos
editamos el fichero de configuración de nuestro prometheus
Y agregamos lo siguiente para que use el fichero de contraseñas
comprobamos que las configuraciones sean correcta
Reiniciamos nginx y comprobamos su estado
Los puertos 9000 y 9100 siguen abiertos por lo que vamos a cerrarlos con iptables
Como las iptables si se reinicia el equipo se pierden y no queremos estar agregándolas manualmente vamos a instalar el paquete iptables-persistent
Las configuraciones se guardan en estos dos ficheros
Si hacemos algún cambio a las iptables nos tenemos que acordar de guardarlas
Node exporter
Este exporter nos servira para recopilar la información de uso general de los sistemas como su CPU, memoria, procesos...
Para ello descargamos
descomprimimos
Creamos usuarios
Entramos a la carpeta de node_exporter y copiamos el binario
Asignamos permisos
Igual que con prometheus vamos a añadirlo en el systemd para poderlo arrancar en el arranque del sistema de manera fácil.
recargamos systemd
Arrancamos el node_exporter
Comprobamos que funciona
Lo activamos para arranque de maquina
Vamos a comunicar el node_exporter con Prometheus para ello vamos a editar la configuración de Prometheus
Y añadimos lo siguiente en la zona de scrape_configs
Reiniciamos prometheus
Ahora repetimos el proceso con el resto de los nodos y servidores de nuestro HA y ya podemos consultar la información de los diferentes nodos

HAProxy Exporter
Este exporter nos servira para recopilar la información de nuestros HAProxys y saber sus conexiónes, que va a cada nodo...
Para ello descargamos
descomprimimos
Creamos usuarios
Entramos a la carpeta de haproxy_exporter y copiamos el binario
Igual que con prometheus vamos a añadirlo en el systemd para poderlo arrancar en el arranque del sistema de manera facil.
recargamos systemd
Arrancamos el haproxy_exporter
Comprobamos que funciona
Lo activamos para arranque de maquina
Configuramos el HAProxy para poder recopilar la Información con nuestro haproxy_exporter para ello añadimos el siguiente bloque
Vamos a comunicar el haproxy_exporter con Prometheus para ello vamos a editar la configuración de Prometheus
Y añadimos lo siguiente en la zona de scrape_configs
Reiniciamos prometheus
Apache exporter
Para monitorizar apache tenemos que tener el modulo de mod_status activado y la locacilizacion /server-status activada en este caso ubuntu lo trate configurado por defecto, por lo que no tendriamos que tocar nada.
Para poder usar el exporter lo primero que tenemos que hacer es instalar Go, lo podemos hacer desde los binarios o desde el repositorio como no vamos a programar en este caso lo instalaremos desde los repositorios.
Vamos a crear un usuario para el exporter como en los otros casos
Ahora vamos a bajar el codigo de la ultima version y vamos a compilarlo, nos clonamos el repositorio
Instalamos las dependencias de Go y compilamos
Copiamos el fichero generado
Le damos permisos
Lo agregamos a systemd
Generamos la configuración, donde escuchamos y donde publicamos la Información para prometheus
Recargarmos systemd
Agregamos a prometheus el exporter
Mysql Exporter
Vamos a monitorizar nuestro cluster de galera, para ello lo primera que hacemos en uno de los nodos crear un usuario
Descargamos el mysql exporter en todos los nodos
descomprimimos
Creamos usuarios
Entramos a la carpeta de mysql_exporter y copiamos el binario
Los datos de conexión los ponemos dentro del systemd dado que usando el parametro config.my-cnf nos falla la conexión
recargamos systemd
Arrancamos el mysql_exporter
Comprobamos que funciona
Lo activamos para arranque de maquina
Vamos a comunicar el mysql_exporter con Prometheus para ello vamos a editar la configuración de Prometheus
Y añadimos lo siguiente en la zona de scrape_configs
Reiniciamos prometheus
Ahora repetimos el proceso con el resto de los nodos de galera pero sin tener que crear el usuario porque ya se replico automáticamente.
Agrupando exporters
Hasta ahora hemos ido agregando los exporter de manera independiente por tipo y servidor lo que lo hace poco mantenible a lo largo del tiempo
Lo que vamos a hacer ahora es agruparlos por tipos de exporters para que nos sea mas facil de mantener.
Alertmanager
Ahora que tenemos la monitorizacion montada tendremos que configurar las alertas para que nos sea util, para ello vamos a usar alertmanager
Descomprimimos
Entramos en la carpeta y copiamos los binarios
Creamos la carpeta para la configuracion
Creamos el usuario
Asignamos permisos
Creamos la configuracion para recibir las alertas por email
Lo agregamos a systemd
Recargamos el demonio de systemd y ya lo tendremos disponible.
Lo agregamos al arranque y lo arrancamos
Para crear las alertas vamos a creamos el siguiente fichero, con reglas para saber si los nodos estan levantados, se saturan de memoria o los discos estan llenos.
Ahora vamos a agregar las reglas creadas a prometheus
Reiniciamos prometheus
Grafana
Vamos a instalar ahora Grafana para poder ver de manera sencilla los datos que tiene prometheus, para ello vamos a agregar los repositorios oficiales para tener siempre la ultima version
Acutalizamos los repositorios e instalamos
Arrancamos el servico y cargamos en el arranque
Ahora vamos aprovechar el certificado que hemos solicitado para el dominio de prometheus, dado que vamos a usar el mismo nombre de dominio pero por el puerto 3000 que es el por defecto de grafana.
Vamos a crear un pequeño script para el deploy de los certificados para grafana.
creamos ahora en el crontab la renovacion diciendole que deploy-hook tiene que usar
Ahora solo nos queda configurar grafana para que lo use.
ahora ingresamos en nuestro grafana y ponemos el usuario y contraseña por defecto que es admin:admin nada mas introducirlo nos pedira cambiarlo por la que nosotros queramos.

Una vez dentro vamos a configurar algunos dashboard para ver los datos de prometheus, hay muchos creados que son los que vamos a usar o podriamos crear los nuestros propios.
Antes de empezar a graficar cosas necesitamos decirle a grafana de donde va a sacar los datos para ello vamos Configuration -> Data Sources y agregamos la fuente que queramos en este caso prometheus

Rellenamos nuestra configuracion hay que acordarse de poner la Basic auth para que podamos recoger los datos.

Una vez que tenemos el DataSource configurado buscamos el dashboard que nos interesa y nos copiamos su identificador

Ahora nos dirigimos a Dashbard -> import y pegamos el id del dashboard

Lo cargamos y le decimos que Data Source usuara.


Ahora ya solo nos queda agregar los Dashboard que nosotros queramos.
Última actualización