Saltar al contenido principal

Monitor

Introducción​

Con tantos servidores y servicios, es necesario tener algo a mano para comprobar el estado de todos ellos.

Prometheus y Grafana son el conjunto ideal, uno para almacenar datos de otros lugares y hacer búsquedas sobre ellos, otro para mostrar los datos de forma más sencilla y enviar alertas si algo no está como se espera.

Además de estos, se utilizan exportadores para que Prometheus pueda recuperar las métricas.

Descarga​

El fichero de despliegue se encuentra en Git.

git clone https://gitlab.com/ReiIzumi/swarm-project.git
cd swarm-project/05-Monitor

Preparación​

Tanto Prometheus como Grafana requieren almacenar datos y configuración, así que se creará una carpeta compartida con GlusterFS en /mnt/monitor.

Ambos tienen permisos especiales:

mkdir /mnt/monitor/prometheus
mkdir /mnt/monitor/grafana
chown -R nobody:nogroup /mnt/monitor/
chown 472:0 /mnt/monitor/grafana

Node exporter​

Cada servidor deberá tener instalado el node-exporter, aunque es posible ejecutarlo como contenedor, estos suelen tener limitaciones a la hora de leer el disco u otros, además necesitamos tenerlo en todos los servidores, incluido el de base de datos.

  1. Revisamos la última versión y la añadimos al enlace de descarga.
wget https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*.*-amd64.tar.gz -O node_exporter.tar.gz
  1. Descomprimimos en el lugar de destino.
sudo tar -xvf node_exporter.tar.gz -C /usr/local/sbin/ --strip-components=1
  1. Creamos el servicio.
sudo vim /etc/systemd/system/nodeexporter.service
[Unit]
Description=NodeExporter
[Service]
TimeoutStartSec=0
ExecStart=/usr/local/sbin/node_exporter
[Install]
WantedBy=multi-user.target
  1. Iniciamos el servicio.
sudo systemctl daemon-reload
sudo systemctl enable nodeexporter
sudo systemctl start nodeexporter
  1. Accedemos a la URL para confirmar que funcione: http://swarm1.domain.intranet:9100/metrics

Despliegue​

  1. Necesitamos los secrets de Grafana y también los de un usuario administrador en PostgreSQL para exportar las métricas.
  • grafana-admin-user
  • grafana-admin-password
  • postgres-admin-user
  • postgres-admin-password
  1. Creamos un config para la configuración de Prometheus, hay que actualizarlo según la URL de todos los node agents.
  • monitor-prometheus-config_v1 contiene prometheus-config.yml
  1. Actualizamos los dominios de Prometheus y Grafana:
  • traefik.http.routers.monitor-prometheus.rule
  • traefik.http.routers.monitor-grafana.rule
  1. Actualizar la contraseña de Prometheus: traefik.http.middlewares.monitor-prometheus.basicauth.users.
  2. Actualizar la URI de acceso a PostgreSQL: DATA_SOURCE_URI.
  3. Actualizar las variables para envío de e-mail en Grafana:
  • GF_SMTP_FROM_ADDRESS
  • GF_SMTP_FROM_NAME
  1. Desplegar en Portainer.
  2. Acceder a Grafana, configurar el acceso a Prometheus:
  1. Importar dashboards en Grafana, estos son unos ejemplos: