Por qué es importante la monitorización de servidores dedicados
Los servidores dedicados de Valebyte ofrecen un rendimiento, seguridad y personalización inigualables. Sin embargo, con un gran poder viene la necesidad de una gestión proactiva. Sin una monitorización robusta, estás operando a ciegas, vulnerable a interrupciones inesperadas, cuellos de botella en el rendimiento y agotamiento de recursos. Las perspectivas en tiempo real sobre tu CPU, memoria, E/S de disco, tráfico de red y métricas de aplicaciones son cruciales para:
- Prevenir el tiempo de inactividad: Identifica y aborda los problemas antes de que se conviertan en interrupciones del servicio.
- Optimizar el rendimiento: Identifica los consumidores de recursos y los cuellos de botella para asegurar que tus aplicaciones funcionen con la máxima eficiencia.
- Planificación de capacidad: Comprende las tendencias de los recursos para tomar decisiones informadas sobre el escalado de tu infraestructura.
- Resolución de problemas: Diagnostica rápidamente la causa raíz de los problemas con datos históricos y métricas detalladas.
- Seguridad: Monitoriza actividades inusuales o picos de recursos que podrían indicar una brecha de seguridad.
Ya sea que estés ejecutando aplicaciones web de alto tráfico, un servidor de juegos exigente, bases de datos complejas, servicios de streaming o pipelines de CI/CD, una solución de monitorización bien implementada es tu primera línea de defensa y una clave para la excelencia operativa.
Comprendiendo Prometheus y Grafana
Prometheus y Grafana forman un potente stack de monitorización de código abierto que se ha convertido en un estándar de la industria. Se complementan perfectamente, con Prometheus manejando la recopilación y almacenamiento de datos, y Grafana proporcionando la capa de visualización.
Prometheus: El recolector de métricas
Prometheus es un kit de herramientas de monitorización y alerta de sistemas de código abierto, originalmente construido en SoundCloud. Está diseñado para la fiabilidad y la escalabilidad, lo que lo hace ideal para entornos bare metal. Sus características clave incluyen:
- Modelo de datos multidimensional: Los datos de series temporales se identifican por el nombre de la métrica y pares clave/valor.
- Lenguaje de consulta flexible (PromQL): Permite una consulta potente y precisa de las métricas recopiladas.
- Modelo de extracción (Pull Model): Prometheus extrae activamente métricas de los objetivos configurados a intervalos específicos.
- Descubrimiento de servicios: Se integra con varios mecanismos para descubrir automáticamente nuevos objetivos.
- Alertas: Se integra con Alertmanager para manejar alertas basadas en expresiones PromQL.
Para la monitorización bare metal, Prometheus típicamente extrae métricas de 'exporters'. El exporter más común para métricas a nivel de host es el Node Exporter.
Grafana: La potencia de la visualización
Grafana es una aplicación web de análisis y visualización interactiva de código abierto. Se conecta a varias fuentes de datos, incluyendo Prometheus, para crear paneles de control hermosos e informativos. Con Grafana, puedes:
- Crear paneles dinámicos: Construye paneles altamente personalizables con varios tipos de paneles (gráficos, estadísticas individuales, tablas, mapas de calor, etc.).
- Explorar datos: Profundiza en las métricas con potentes constructores de consultas.
- Configurar alertas: Configura alertas directamente desde tus paneles de control basándose en umbrales de métricas.
- Colaborar: Comparte paneles de control y permite a los miembros del equipo ver o editar.
Requisitos previos para la monitorización bare metal
Antes de sumergirte en la instalación, asegúrate de tener lo siguiente:
- Un servidor dedicado de Valebyte: Con privilegios de root o sudo. Esta guía asume un servidor Ubuntu 22.04 LTS, pero los pasos son en gran medida similares para otras distribuciones basadas en Debian.
- Conocimientos básicos de la línea de comandos de Linux: Familiaridad con comandos como
cd,mkdir,cp,wget,tar,systemctl. - Conectividad a Internet: Para descargar los paquetes y binarios necesarios.
- Configuración del firewall: Necesitarás abrir puertos específicos. Usaremos UFW (Uncomplicated Firewall) como ejemplo.
- Puertos requeridos:
- Prometheus: Puerto predeterminado
9090(para la interfaz de usuario web) - Node Exporter: Puerto predeterminado
9100(para métricas) - Grafana: Puerto predeterminado
3000(para la interfaz de usuario web)
- Prometheus: Puerto predeterminado
Primero, actualiza la lista de paquetes de tu sistema:
sudo apt update
sudo apt upgrade -y
Instala curl y wget si no están presentes, ya que son útiles para descargar archivos:
sudo apt install -y curl wget
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Guía de instalación paso a paso
Instalaremos Prometheus, Node Exporter y Grafana en el mismo servidor dedicado para simplificar. Para despliegues más grandes, podrías ejecutar Node Exporter en múltiples servidores y Prometheus/Grafana en un servidor de monitorización dedicado.
1. Configuración de Prometheus
Crear un usuario y directorios para Prometheus
Para las mejores prácticas de seguridad, ejecuta Prometheus bajo una cuenta de usuario dedicada.
sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
Descargar e instalar Prometheus
Visita la página de descarga de Prometheus para obtener la última versión estable. Al momento de escribir, usaremos una versión de marcador de posición.
# Verifica la última versión en la página de descarga de Prometheus
PROMETHEUS_VERSION="2.48.0" # Reemplaza con la última versión estable
wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
tar xvf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
cd prometheus-${PROMETHEUS_VERSION}.linux-amd64
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo cp -r consoles /etc/prometheus
sudo cp -r console_libraries /etc/prometheus
Configurar Prometheus
Crea el archivo de configuración de Prometheus /etc/prometheus/prometheus.yml. Por ahora, comenzaremos con una configuración básica.
sudo nano /etc/prometheus/prometheus.yml
Añade el siguiente contenido:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
Establece la propiedad adecuada para el archivo de configuración:
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
Crear un servicio Systemd para Prometheus
Esto permite que Prometheus se ejecute como un servicio en segundo plano y se inicie automáticamente al arrancar.
sudo nano /etc/systemd/system/prometheus.service
Añade el siguiente contenido:
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target
Recarga systemd, inicia Prometheus y habilítalo para que se inicie al arrancar:
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
Verificar el estado de Prometheus
sudo systemctl status prometheus
Deberías ver un estado 'active (running)'. También puedes revisar los registros:
sudo journalctl -u prometheus -f
2. Configuración de Node Exporter
Node Exporter expone una amplia gama de métricas de hardware y SO (CPU, memoria, E/S de disco, estadísticas de red, etc.) del servidor en el que se ejecuta.
Crear un usuario y directorios para Node Exporter
sudo useradd --no-create-home --shell /bin/false node_exporter
Descargar e instalar Node Exporter
Visita la página de descarga de Prometheus para la última versión de Node Exporter.
# Verifica la última versión en la página de descarga de Prometheus
NODE_EXPORTER_VERSION="1.7.0" # Reemplaza con la última versión estable
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
tar xvf node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
cd node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64
sudo mv node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Crear un servicio Systemd para Node Exporter
sudo nano /etc/systemd/system/node_exporter.service
Añade el siguiente contenido:
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Recarga systemd, inicia Node Exporter y habilítalo para que se inicie al arrancar:
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
Verificar el estado de Node Exporter
sudo systemctl status node_exporter
Deberías ver un estado 'active (running)'. También puedes revisar las métricas directamente desde tu servidor:
curl http://localhost:9100/metrics
Esto mostrará una gran cantidad de métricas en texto plano.
3. Configuración de Grafana
Instalar Grafana
Grafana proporciona repositorios APT oficiales para una fácil instalación.
sudo apt install -y apt-transport-https software-properties-common wget
wget -q -O - https://apt.grafana.com/gpg.key | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/trusted.gpg.d/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana -y
Iniciar y habilitar Grafana
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Verificar el estado de Grafana
sudo systemctl status grafana-server
Deberías ver un estado 'active (running)'.
4. Configurar el Firewall (UFW)
Para acceder a las interfaces de usuario web de Prometheus y Grafana, necesitas abrir sus puertos respectivos en tu firewall. Asumiendo que UFW está habilitado:
sudo ufw allow 9090/tcp comment 'Permitir interfaz web de Prometheus'
sudo ufw allow 9100/tcp comment 'Permitir métricas de Node Exporter'
sudo ufw allow 3000/tcp comment 'Permitir interfaz web de Grafana'
sudo ufw reload
Si tienes SSH habilitado (lo cual deberías), asegúrate de que el puerto 22 también esté abierto: sudo ufw allow 22/tcp.
Configuración de Prometheus para extraer datos de Node Exporter
Ahora que Node Exporter está funcionando y exponiendo métricas, necesitamos decirle a Prometheus que las extraiga. Edita el archivo de configuración de Prometheus:
sudo nano /etc/prometheus/prometheus.yml
Añade un nuevo job_name bajo scrape_configs para Node Exporter. Dado que Node Exporter está en el mismo servidor, usaremos localhost:9100.
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100'] # O reemplaza localhost con la IP de tu servidor objetivo
Guarda y sal del archivo. Luego, reinicia Prometheus para aplicar los cambios:
sudo systemctl restart prometheus
Configuración de la fuente de datos y el panel de control de Grafana
1. Acceder a la interfaz de usuario web de Grafana
Abre tu navegador web y navega a http://TU_IP_DEL_SERVIDOR:3000. Deberías ver la página de inicio de sesión de Grafana.
Las credenciales de inicio de sesión predeterminadas son:
- Nombre de usuario:
admin - Contraseña:
admin
Se te pedirá que cambies la contraseña predeterminada inmediatamente. Elige una contraseña fuerte y segura.
2. Añadir Prometheus como fuente de datos
- En el menú de la izquierda, pasa el ratón sobre el icono de engranaje (Configuración) y haz clic en Fuentes de datos.
- Haz clic en Añadir fuente de datos.
- Busca y selecciona Prometheus.
- En la sección 'HTTP', establece la 'URL' en
http://localhost:9090(ya que Prometheus está en el mismo servidor). - Desplázate hacia abajo y haz clic en Guardar y probar. Deberías ver un mensaje confirmando que "La fuente de datos está funcionando".
3. Importar un panel de control de Node Exporter
La fuerza de Grafana reside en su vasta biblioteca de paneles de control aportados por la comunidad. Un panel de control popular para las métricas de Node Exporter es Node Exporter Full (ID 1860).
- En el menú de la izquierda, pasa el ratón sobre el icono '+' (Crear) y haz clic en Importar.
- En el campo 'Importar a través de grafana.com', introduce
1860y haz clic en Cargar. - En la siguiente pantalla, selecciona tu fuente de datos de Prometheus del menú desplegable.
- Haz clic en Importar.
¡Ahora deberías ver un panel de control completo que muestra varias métricas de tu servidor dedicado, incluyendo el uso de CPU, memoria, E/S de disco, tráfico de red y mucho más!
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Probando tu configuración de monitorización
Para asegurarte de que todo funciona como se espera:
- Interfaz de usuario de Prometheus: Ve a
http://TU_IP_DEL_SERVIDOR:9090. Haz clic en 'Estado' -> 'Objetivos'. Deberías ver los objetivos 'prometheus' y 'node_exporter' listados con un estado 'UP'. Si no, revisa los registros y la configuración de Prometheus. - Métricas de Node Exporter: Abre
http://TU_IP_DEL_SERVIDOR:9100/metricsen tu navegador. Deberías ver una página llena de métricas en bruto. - Panel de control de Grafana: Interactúa con el panel de control Node Exporter Full. Cambia los rangos de tiempo, observa los datos en tiempo real y asegúrate de que todos los paneles muestren los datos correctamente.
Consideraciones avanzadas de monitorización
Alertas con Alertmanager
Aunque esta guía se centra en la configuración básica, una solución de monitorización completa incluye alertas. Alertmanager de Prometheus maneja las alertas enviadas por las aplicaciones cliente, agrupándolas, deduplicándolas y dirigiéndolas a canales de notificación como correo electrónico, Slack, PagerDuty, etc.
Monitorización de múltiples servidores
Para monitorizar múltiples servidores dedicados de Valebyte, simplemente instala Node Exporter en cada servidor que desees monitorizar. Luego, en el archivo prometheus.yml de tu servidor Prometheus central, añade la dirección IP de cada servidor y el puerto de Node Exporter (por ejemplo, 192.168.1.10:9100) a la lista de objetivos del trabajo node_exporter. Recuerda abrir el puerto 9100 en el firewall de cada servidor monitorizado.
Mejores prácticas de seguridad para la monitorización
- Firewall: Expón los puertos de monitorización (9090, 9100, 3000) solo a redes o IPs de confianza. Para Grafana, considera colocarlo detrás de un proxy inverso (como Nginx o Apache) con HTTPS para un acceso seguro.
- Autenticación: Cambia siempre las contraseñas predeterminadas de Grafana. Considera integrar Grafana con un proveedor de autenticación externo (LDAP, OAuth) para entornos de producción.
- Usuarios dedicados: Ejecutar Prometheus y Node Exporter bajo usuarios sin privilegios (como se hace en esta guía) limita el daño potencial si un servicio se ve comprometido.
Solución de problemas comunes
Incluso con pasos cuidadosos, podrías encontrar problemas. Aquí te explicamos cómo diagnosticarlos:
1. El servicio no se inicia (Prometheus, Node Exporter, Grafana)
- Verificar el estado del servicio:
Busca 'active (running)' o mensajes de error específicos.sudo systemctl status prometheus sudo systemctl status node_exporter sudo systemctl status grafana-server - Examinar los registros:
Los registros son tu mejor amigo para entender por qué un servicio no se inició. Busca errores de permisos, problemas con archivos de configuración o conflictos de puertos.sudo journalctl -u prometheus -f sudo journalctl -u node_exporter -f sudo journalctl -u grafana-server -f - Sintaxis del archivo de configuración: Para Prometheus, puedes verificar tu
prometheus.ymlen busca de errores de sintaxis:
Esto te dirá si hay algún error de análisis./usr/local/bin/promtool check config /etc/prometheus/prometheus.yml
2. Prometheus no extrae objetivos (faltan métricas de Node Exporter)
- Verificar objetivos de la interfaz de usuario de Prometheus: Navega a
http://TU_IP_DEL_SERVIDOR:9090/targets. Si Node Exporter aparece pero está 'DOWN', revisa la columna 'Error' en busca de pistas. - Firewall en el servidor monitorizado: Asegúrate de que el puerto 9100 (Node Exporter) esté abierto en el servidor que ejecuta Node Exporter. Si Prometheus está en un servidor diferente, asegúrate de que su IP esté permitida por el firewall del servidor de Node Exporter.
- Node Exporter en ejecución: Verifica que Node Exporter esté activo y accesible localmente en el servidor monitorizado:
Sisudo systemctl status node_exporter curl http://localhost:9100/metricscurlfalla, Node Exporter no se está ejecutando o no está escuchando en el puerto/interfaz esperado. - Configuración de Prometheus: Vuelve a verificar la entrada
targetsen/etc/prometheus/prometheus.ymlen busca de errores tipográficos (por ejemplo,localhost:9100o la dirección IP correcta). Recuerda reiniciar Prometheus después de cualquier cambio de configuración.
3. Grafana no muestra datos o "Error de fuente de datos"
- Conectividad de la fuente de datos de Prometheus: En Grafana, ve a 'Configuración' -> 'Fuentes de datos', haz clic en tu fuente de datos de Prometheus y haz clic en 'Guardar y probar'. Si falla, verifica la IP y el puerto del servidor Prometheus en la configuración de la fuente de datos de Grafana.
- Firewall en el servidor Prometheus: Asegúrate de que el puerto 9090 (Prometheus) esté abierto en el servidor que ejecuta Prometheus, permitiendo que Grafana se conecte.
- Prometheus en ejecución y extrayendo datos: Verifica que Prometheus esté ejecutándose y extrayendo activamente las métricas de Node Exporter (según el paso 2 de solución de problemas). Si Prometheus no está recopilando datos, Grafana no tendrá nada que mostrar.
- Configuración del panel de control: Si algunos paneles están vacíos, asegúrate de que las consultas dentro de esos paneles sean correctas y hagan referencia a las métricas adecuadas. A veces, los paneles de control de la comunidad pueden necesitar pequeños ajustes para versiones específicas de Prometheus o nombres de métricas.
4. Problemas de permisos
Si los servicios no se inician o no escriben datos, verifica los permisos de archivos y directorios. Asegúrate de que los usuarios dedicados (prometheus, node_exporter) sean propietarios de sus respectivos directorios y archivos, tal como se configuró en los archivos de servicio de systemd.
ls -la /usr/local/bin/prometheus
ls -la /etc/prometheus/prometheus.yml
ls -la /var/lib/prometheus
Al revisar sistemáticamente estos puntos, podrás resolver la mayoría de los problemas comunes encontrados durante la configuración de tu stack de monitorización Prometheus y Grafana en un servidor dedicado de Valebyte.