¿Por qué elegir Prometheus y Grafana para la monitorización de servidores bare metal?
La monitorización es fundamental para cualquier infraestructura de servidor, especialmente para servidores dedicados o bare metal donde el rendimiento y el tiempo de actividad son primordiales. Prometheus es un sistema de monitorización de código abierto que recopila métricas de objetivos configurados a intervalos dados, evalúa expresiones de reglas, muestra los resultados y puede activar alertas si se observa que alguna condición es verdadera. Grafana, por otro lado, es una aplicación web de análisis y visualización interactiva de código abierto que se conecta a varias fuentes de datos, incluido Prometheus, para crear paneles de control potentes y personalizables.
Elegir un servidor bare metal de Valebyte para su pila de monitorización ofrece claras ventajas:
- Recursos Dedicados: Sin contención de recursos, asegurando que su sistema de monitorización siempre tenga la CPU, RAM y E/S que necesita, incluso bajo carga pesada.
- Rendimiento: E/S de disco superior (especialmente con SSD NVMe) para almacenar y consultar grandes volúmenes de datos de series temporales de manera eficiente.
- Aislamiento: Control completo sobre el entorno, mejorando la seguridad y estabilidad para una infraestructura de monitorización crítica.
- Escalabilidad: Más fácil de actualizar los componentes de hardware directamente a medida que crecen sus necesidades de monitorización.
Para implementaciones más pequeñas, como la monitorización de una sola aplicación o unos pocos servicios personales, un VPS de Valebyte de alto rendimiento puede servir como una plataforma excelente y rentable para Prometheus y Grafana. Sin embargo, para monitorizar múltiples servidores de producción, almacenar datos históricos extensos o manejar una alta tasa de scrape, un servidor dedicado de Valebyte es la opción recomendada debido a su rendimiento superior y consistente.
Requisitos previos y requisitos mínimos del servidor
Antes de comenzar, asegúrese de tener:
- Un servidor bare metal o un VPS robusto con Ubuntu 22.04 LTS (este tutorial usa Ubuntu).
- Privilegios de root o sudo en el servidor.
- Familiaridad básica con la línea de comandos de Linux.
- Una conexión a internet para descargar paquetes.
Especificaciones mínimas de hardware para el servidor de monitorización:
- CPU: 2 vCPUs / 2 núcleos (por ejemplo, Intel Xeon E3-12xx equivalente o mejor)
- RAM: 4 GB
- Disco: 50 GB NVMe SSD (para un rendimiento óptimo y retención de datos)
- Ancho de banda: 100 Mbps (ilimitado o con una alta asignación mensual)
Tutorial paso a paso: Configuración de Prometheus y Grafana
Siga estos pasos para implementar Prometheus y Grafana en su servidor Valebyte.
1. Prepare su servidor
Actualice la lista de paquetes de su sistema y actualice los paquetes existentes. Instale las utilidades necesarias como wget y curl si aún no están presentes.
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl libfontconfig1
Cree usuarios de sistema dedicados para Prometheus y Node Exporter por seguridad.
sudo useradd --no-create-home --shell /bin/false prometheus
sudo useradd --no-create-home --shell /bin/false node_exporter
2. Instale Prometheus
Descargue la última versión estable de Prometheus. Consulte la página de descarga de Prometheus para la versión más actual. Al momento de escribir esto, la versión 2.49.1 es estable.
wget https://github.com/prometheus/prometheus/releases/download/v2.49.1/prometheus-2.49.1.linux-amd64.tar.gz
tar -xvf prometheus-2.49.1.linux-amd64.tar.gz
sudo mv prometheus-2.49.1.linux-amd64 /usr/local/prometheus
Cree directorios para la configuración y los datos de Prometheus, y establezca los permisos adecuados.
sudo mkdir /etc/prometheus
sudo mv /usr/local/prometheus/prometheus.yml /etc/prometheus/
sudo mv /usr/local/prometheus/promtool /usr/local/bin/
sudo mv /usr/local/prometheus/prometheus /usr/local/bin/
sudo chown -R prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /usr/local/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
Edite el archivo de configuración de Prometheus /etc/prometheus/prometheus.yml. Para una configuración básica, la configuración predeterminada suele ser suficiente, pero más adelante agregaremos un objetivo de scrape para Node Exporter. Por ahora, asegúrese de que se vea similar a esto:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
Cree un archivo de servicio systemd para que Prometheus gestione su ciclo de vida.
sudo nano /etc/systemd/system/prometheus.service
Pegue 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 \
--web.listen-address=0.0.0.0:9090
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
Recargue systemd, habilite e inicie Prometheus.
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus
Verifique que Prometheus se esté ejecutando navegando a http://YOUR_SERVER_IP:9090 en su navegador web. Debería ver la interfaz de usuario de Prometheus.
3. Instale Node Exporter
Node Exporter es un exportador de Prometheus para métricas de hardware y sistema operativo. Descargue la última versión estable. Consulte la página de descarga de Prometheus para la versión más actual. Al momento de escribir esto, la versión 1.7.0 es estable.
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar -xvf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64 /usr/local/node_exporter
Mueva el ejecutable y establezca los permisos.
sudo mv /usr/local/node_exporter/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Cree un archivo de servicio systemd para Node Exporter.
sudo nano /etc/systemd/system/node_exporter.service
Pegue 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
Restart=on-failure
[Install]
WantedBy=multi-user.target
Recargue systemd, habilite e inicie Node Exporter.
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporter
Verifique que Node Exporter se esté ejecutando navegando a http://YOUR_SERVER_IP:9100/metrics. Debería ver una página con varias métricas del sistema.
4. Configure Prometheus para hacer scrape de Node Exporter
Edite el archivo de configuración de Prometheus /etc/prometheus/prometheus.yml para agregar Node Exporter como objetivo.
sudo nano /etc/prometheus/prometheus.yml
Agregue la siguiente configuración de scrape debajo de la sección scrape_configs::
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
Su archivo prometheus.yml ahora debería verse así:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
Recargue Prometheus para aplicar la nueva configuración.
sudo systemctl reload prometheus
Vaya a la interfaz de usuario de Prometheus (http://YOUR_SERVER_IP:9090), navegue a 'Status' -> 'Targets'. Debería ver los objetivos 'prometheus' y 'node_exporter' listados como 'UP'.
5. Instale Grafana
Agregue la clave GPG y el repositorio de Grafana a su sistema.
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
Actualice su lista de paquetes e instale Grafana.
sudo apt update
sudo apt install -y grafana
Habilite e inicie Grafana.
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
sudo systemctl status grafana-server
Verifique que Grafana se esté ejecutando navegando a http://YOUR_SERVER_IP:3000. El inicio de sesión predeterminado es admin / admin. Se le pedirá que cambie la contraseña inmediatamente.
6. Configure el Firewall (UFW)
Si está utilizando UFW (Uncomplicated Firewall), permita el acceso a los puertos de Prometheus y Grafana.
sudo ufw allow 9090/tcp comment 'Allow Prometheus'
sudo ufw allow 9999/tcp comment 'Allow Prometheus Alertmanager' # Si planea usar Alertmanager
sudo ufw allow 9100/tcp comment 'Allow Node Exporter'
sudo ufw allow 3000/tcp comment 'Allow Grafana'
sudo ufw enable
sudo ufw status
7. Agregue Prometheus como fuente de datos en Grafana
Inicie sesión en Grafana (http://YOUR_SERVER_IP:3000, admin/admin por defecto, cambie la contraseña). Haga clic en el icono de engranaje (Configuration) -> 'Data Sources' -> 'Add data source'. Seleccione 'Prometheus'.
- Nombre:
Prometheus(o cualquier nombre descriptivo) - URL:
http://localhost:9090 - Haga clic en 'Save & test'. Debería ver 'Data source is working'.
8. Importe un panel de control de Grafana
Para visualizar las métricas de su servidor, importe un panel de control preconstruido. Una opción popular para Node Exporter es 'Node Exporter Full' (ID del panel: 1860).
- En Grafana, haga clic en el icono '+' -> 'Import'.
- Ingrese
1860en el campo 'Import via grafana.com dashboard' y haga clic en 'Load'. - Seleccione su fuente de datos 'Prometheus' del menú desplegable.
- Haga clic en 'Import'.
Ahora debería ver un panel de control completo que muestra las métricas de su Node Exporter.
Escalando su infraestructura de monitorización
A medida que su infraestructura crezca, también lo harán las demandas sobre su servidor de monitorización. La siguiente tabla proporciona orientación sobre las especificaciones de hardware para diferentes escalas de monitorización.
Elegir un servidor bare metal de Valebyte proporciona la flexibilidad para igualar estas especificaciones con precisión, asegurando que su pila de monitorización funcione de manera óptima sin cuellos de botella de recursos.
| Servidores/Endpoints Monitorizados | vCPU / Núcleos | RAM | Disco (Tipo + GB) | Ancho de Banda Mensual |
|---|---|---|---|---|
| 1-5 (Pequeño - VPS/Dedicado) | 2 vCPU / 2 núcleos | 4 GB | 50 GB NVMe SSD | 100 Mbps (5 TB) |
| 5-20 (Mediano - Dedicado) | 4 núcleos | 8-16 GB | 250 GB NVMe SSD | 250 Mbps (10 TB) | 20-50+ (Grande - Dedicado) | 8+ núcleos | 32-64 GB | 500 GB+ NVMe SSD | 500 Mbps - 1 Gbps (Ilimitado) |
Solución de problemas comunes
- El servicio no se inicia: Verifique los registros con
sudo journalctl -u prometheus.serviceosudo journalctl -u grafana-server.serviceen busca de errores. - Prometheus no hace scrape de los objetivos: Verifique la sintaxis de
prometheus.yml(usepromtool check config /etc/prometheus/prometheus.yml) y asegúrese de que los servicios objetivo (como Node Exporter) estén ejecutándose y sean accesibles en el puerto especificado. Verifique 'Status -> Targets' en la interfaz de usuario de Prometheus. - Grafana no muestra datos: Asegúrese de que la URL de la fuente de datos de Prometheus sea correcta (
http://localhost:9090desde la perspectiva de Grafana en el mismo servidor) y de que Prometheus esté ejecutándose y recopilando datos. Verifique los registros de Grafana en busca de errores de la fuente de datos. - El firewall bloquea el acceso: Verifique nuevamente las reglas de UFW u otras configuraciones de firewall para asegurarse de que los puertos 9090 (Prometheus), 9100 (Node Exporter) y 3000 (Grafana) estén abiertos.
Casos de uso para su pila de monitorización
Una configuración adecuada de Prometheus y Grafana es invaluable para una amplia gama de aplicaciones:
- Alojamiento Web: Monitorice la carga del servidor, las tasas de solicitudes HTTP, los tiempos de respuesta y el rendimiento de la base de datos para Nginx, Apache, MySQL, PostgreSQL.
- Servidores de Juegos: Rastree el uso de la CPU, el consumo de RAM, la latencia de la red y el número de jugadores para garantizar una experiencia de juego fluida.
- Bases de Datos: Recopile métricas sobre el rendimiento de las consultas, el número de conexiones, la E/S del disco y el estado de replicación para almacenes de datos críticos.
- Servidores de Correo: Observe los tamaños de las colas, las tasas de entrega de mensajes y el uso de recursos para Postfix, Dovecot y otros servicios de correo.
- Servicios de Streaming: Observe el uso del ancho de banda, las transmisiones concurrentes y el estado del servidor para evitar interrupciones.
- Pipelines CI/CD: Rastree los tiempos de compilación, la ejecución de pruebas y el consumo de recursos de Jenkins, GitLab CI u otras herramientas de automatización.
- Aplicaciones Autoalojadas: Obtenga información sobre el rendimiento de nubes personales (Nextcloud), servidores multimedia (Plex), VPNs (OpenVPN, WireGuard) y otras herramientas autoalojadas.