[{"data":1,"prerenderedAt":204},["ShallowReactive",2],{"seo-verification":3,"blog-monitorizacion-vps-grafana-prometheus-ma-es":6,"promo-bar-likely":203},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-monitorizacion-vps-grafana-prometheus-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":143,"ctaBody":144,"ctaButton":145,"ctaUrl":146,"relatedPosts":147},106,"monitorizacion-vps-grafana-prometheus",{"fr":12,"en":13,"ar":14,"es":10},"monitoring-vps-grafana-prometheus","vps-monitoring-with-grafana-and-prometheus","مراقبة-الخادم-الافتراضي-vps-باستخدام-grafana-و-prometheus","Monitorización de VPS con Grafana y Prometheus","Despliegue Prometheus 3.x, Grafana 13.x, Node Exporter y Alertmanager en su VPS con Docker Compose. Paneles, alertas y bastionado.",11,1,false,"2026-03-06T00:00:00+00:00","2026-10-05T14:05:27+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmonitoring-vps-grafana-prometheus-poster.svg",{"categorySlug":34,"appSlug":35},"monitorizacion-observabilidad","grafana","Cuando necesita métricas históricas, paneles a medida y alertas afinadas, el dúo Prometheus + Grafana es la referencia de código abierto. Prometheus 3.x recopila y almacena las series temporales, Grafana 13.x las visualiza. Le explicamos cómo desplegar esta stack completa — Node Exporter, cAdvisor, Alertmanager incluidos — en su propio VPS.",[38,42,54,57,85,88,91,130,134,137,140],{"type":39,"title":40,"body":41},"h2","Por qué auto-alojar Prometheus y Grafana en un VPS","A diferencia de una herramienta todo en uno, la stack Prometheus + Grafana separa con claridad la recopilación (Prometheus hace scrape de las métricas expuestas por los exporters), el almacenamiento (base de series temporales integrada) y la visualización (Grafana). Esa modularidad es precisamente lo que la convierte en un estándar: supervisa el propio VPS con Node Exporter, sus contenedores con cAdvisor, su base PostgreSQL o MySQL con el exporter correspondiente, e instrumenta sus propias aplicaciones en formato Prometheus.\n\nTodo ello en un VPS que usted controla, lo que le evita enviar métricas de infraestructura sensibles a un SaaS facturado por ingesta. Conserva el historial tanto tiempo como se lo permita el disco, construye paneles específicos para su stack y define sus propias reglas de alerta con Alertmanager.\n\nCon el lanzamiento de **Prometheus 3.x** (última versión estable: v3.15.0, septiembre de 2026), el motor de almacenamiento TSDB se ha optimizado para reducir el consumo de memoria entre un 15 y un 20%. Grafana 13.x (v13.2.3, finales de septiembre de 2026) trae un compositor de paneles renovado y un sistema de alertas unificado. Es el enfoque recomendado cuando va más allá del simple «¿responde el sitio?».",{"type":43,"title":44,"items":45},"ul","Lo que esta stack aporta a su VPS",[46,47,48,49,50,51,52,53],"Métricas de sistema detalladas (CPU, RAM, E\u002FS de disco, red) con **Node Exporter v1.12.1**, con historial a largo plazo.","Supervisión de los contenedores Docker con cAdvisor: consumo por contenedor en tiempo real.","Paneles Grafana a medida, importables desde una biblioteca comunitaria de miles de plantillas.","Alertas potentes con **Alertmanager v0.34.1**: umbrales, agrupación, silencios y enrutado multicanal (correo, Slack, PagerDuty...).","Supervisión de disponibilidad HTTP\u002FTCP con Blackbox Exporter: detección de tiempos de respuesta y caducidad de certificados TLS.","Recopilación de logs de aplicaciones con **Loki** (mismo fabricante que Grafana): correlación de logs y métricas en un solo panel.","Lenguaje de consulta PromQL para crear indicadores derivados y tasas de evolución.","Instrumentación de sus propias aplicaciones en formato Prometheus, sin coste de ingesta externo.",{"type":39,"title":55,"body":56},"Requisitos del VPS y recursos a planificar","Esta stack es más exigente que un monitor simple, porque Prometheus mantiene las series temporales en memoria antes de escribirlas en disco. Calcule un VPS de **2 vCPU y 2 a 4 GB de RAM** para supervisar de uno a varios servidores. Añada Loki y Alertmanager y apunte a 4 GB mínimo.\n\n**El almacenamiento es el punto crítico**: Prometheus genera aproximadamente 1 a 2 MB por serie temporal al día. Para 500 series en 30 días, planifique entre 15 y 30 GB. Empiece con 40 GB de SSD y ajuste `--storage.tsdb.retention.time` según sus necesidades.\n\n**Requisitos de software:** Docker 26+ y Docker Compose v2, un nombre de dominio apuntando a su VPS (para el reverse proxy HTTPS de Grafana), y `ufw` o equivalente para restringir puertos.",{"type":58,"title":59,"steps":60},"steps","Desplegar la stack con Docker Compose",[61,64,67,70,73,76,79,82],{"title":62,"body":63},"Crear la estructura de directorios del proyecto","En su VPS, cree una carpeta dedicada y la estructura de archivos:\n```bash\nmkdir -p ~\u002Fmonitoring\u002F{prometheus,alertmanager,loki}\ncd ~\u002Fmonitoring\n```\nEsta organización aísla cada configuración en su directorio, simplificando las actualizaciones.",{"title":65,"body":66},"Escribir el archivo docker-compose.yml","Defina los siguientes servicios en un archivo `docker-compose.yml`: `prometheus` (imagen `prom\u002Fprometheus:v3.15.0`), `grafana` (imagen `grafana\u002Fgrafana:13.2.3`), `node-exporter` (imagen `prom\u002Fnode-exporter:v1.12.1`), `cadvisor` (imagen `gcr.io\u002Fcadvisor\u002Fcadvisor:latest`), `alertmanager` (imagen `prom\u002Falertmanager:v0.34.1`).\n\nMonte los archivos de configuración como volúmenes bind-mount y cree volúmenes con nombre para persistir los datos: `prometheus_data`, `grafana_data`. Ejemplo de bind para `node-exporter`:\n```bash\nvolumes:\n  - \u002Fproc:\u002Fhost\u002Fproc:ro\n  - \u002Fsys:\u002Fhost\u002Fsys:ro\n  - \u002F:\u002Frootfs:ro\n```\nLuego ejecute `docker compose up -d` para arrancar la stack.",{"title":68,"body":69},"Configurar prometheus.yml con todos los jobs de scrape","En `prometheus\u002Fprometheus.yml`, declare los objetivos en la sección `scrape_configs`. Cuatro jobs esenciales:\n```bash\nscrape_configs:\n  - job_name: 'node'\n    static_configs:\n      - targets: ['node-exporter:9100']\n  - job_name: 'cadvisor'\n    static_configs:\n      - targets: ['cadvisor:8080']\n  - job_name: 'alertmanager'\n    static_configs:\n      - targets: ['alertmanager:9093']\n  - job_name: 'prometheus'\n    static_configs:\n      - targets: ['localhost:9090']\n```\nRecargue la configuración sin reiniciar: `curl -X POST http:\u002F\u002Flocalhost:9090\u002F-\u002Freload`.",{"title":71,"body":72},"Configurar Alertmanager (alertmanager.yml)","Cree `alertmanager\u002Falertmanager.yml`. Una configuración mínima que enruta las alertas a Slack:\n```bash\nroute:\n  receiver: 'slack-notifications'\n  group_wait: 30s\n  group_interval: 5m\n  repeat_interval: 4h\nreceivers:\n  - name: 'slack-notifications'\n    slack_configs:\n      - api_url: 'https:\u002F\u002Fhooks.slack.com\u002Fservices\u002FSU\u002FWEBHOOK'\n        channel: '#alertas-vps'\n        title: '{{ .CommonAnnotations.summary }}'\n```\nPara correo electrónico, sustituya `slack_configs` por `email_configs` con los campos `to`, `from`, `smarthost`, `auth_username` y `auth_password`.",{"title":74,"body":75},"Crear las reglas de alerta de Prometheus","En `prometheus\u002Frules.yml`, defina sus reglas. Tres imprescindibles para un VPS:\n```bash\ngroups:\n  - name: vps\n    rules:\n      - alert: CPUAlto\n        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100) > 85\n        for: 5m\n        annotations:\n          summary: 'CPU > 85% durante 5 min'\n      - alert: MemoriaBaja\n        expr: node_memory_MemAvailable_bytes \u002F node_memory_MemTotal_bytes \u003C 0.10\n        for: 5m\n        annotations:\n          summary: 'Memoria disponible \u003C 10%'\n      - alert: DiscoLleno\n        expr: (node_filesystem_size_bytes - node_filesystem_avail_bytes) \u002F node_filesystem_size_bytes > 0.85\n        for: 10m\n        annotations:\n          summary: 'Disco > 85%'\n```\nReferencie este archivo en `prometheus.yml` bajo `rule_files: ['rules.yml']`.",{"title":77,"body":78},"Conectar Grafana con Prometheus (y Loki)","Abra Grafana en el puerto 3000. Credenciales predeterminadas: **admin \u002F admin** — cámbielas de inmediato.\n\nAñada un origen de datos Prometheus con la URL `http:\u002F\u002Fprometheus:9090`. Pruebe la conexión: debe devolver 'Data source is working'.\n\nSi añadió Loki al Compose (imagen `grafana\u002Floki:3.3.2`), añada un segundo origen de datos Loki con la URL `http:\u002F\u002Floki:3100`. Podrá correlacionar picos de CPU en un panel Prometheus con los logs de aplicación en Loki sin cambiar de herramienta.",{"title":80,"body":81},"Exponer Grafana en HTTPS mediante un reverse proxy","Grafana no debe exponerse nunca en HTTP sin cifrar. Configure Nginx como reverse proxy:\n```bash\nserver {\n  listen 443 ssl;\n  server_name grafana.mondomaine.com;\n  ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fgrafana.mondomaine.com\u002Ffullchain.pem;\n  ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fgrafana.mondomaine.com\u002Fprivkey.pem;\n  location \u002F {\n    proxy_pass http:\u002F\u002F127.0.0.1:3000;\n    proxy_set_header Host $host;\n  }\n}\n```\nBloquee los puertos internos en el cortafuegos: `ufw deny 9090`, `ufw deny 9093`, `ufw deny 3000`. Solo el puerto 443 (Nginx) debe estar abierto al público.",{"title":83,"body":84},"Verificar que Prometheus recopila todos los objetivos","Acceda a `http:\u002F\u002Flocalhost:9090\u002Ftargets` (por SSH o mediante el reverse proxy). Todos los objetivos declarados deben mostrar el estado **UP** en verde. Un estado **DOWN** indica un problema de red Docker (nombre de servicio incorrecto), de puerto o de configuración. Corrija antes de continuar.",{"type":39,"title":86,"body":87},"Importar paneles de la comunidad Grafana","Grafana ofrece una biblioteca de paneles listos para usar en **grafana.com\u002Fgrafana\u002Fdashboards**. Dos identificadores imprescindibles para un VPS:\n\n**ID 1860 — Node Exporter Full**: el panel de referencia para métricas del sistema. Muestra en tiempo real y a largo plazo: carga de CPU por núcleo, uso de memoria (incluyendo buffers\u002Fcaché), E\u002FS de disco por dispositivo, saturación de red y cola. Filtrable por instancia, lo que permite supervisar varios VPS desde un único Grafana.\n\n**ID 893 — cAdvisor**: métricas por contenedor Docker — throttling de CPU, uso de memoria, E\u002FS y errores de red. Útil para detectar un contenedor que consume de forma anormal sin ralentizar el VPS en su conjunto.\n\nPara importar un panel: en Grafana, vaya a **Dashboards → Import**, introduzca el ID, seleccione su origen de datos Prometheus y confirme. El panel se importa en segundos, sin construir nada a mano.",{"type":39,"title":89,"body":90},"Configurar las alertas con Alertmanager","Alertmanager es el componente que recibe las alertas de Prometheus y decide qué hacer con ellas: agruparlas, silenciarlas durante el mantenimiento, enrutarlas a diferentes canales según la severidad.\n\n**Agrupación**: varias alertas disparadas al mismo tiempo se agrupan en una sola notificación, no en tres correos separados. Este es el campo `group_by: ['alertname', 'instance']` en `alertmanager.yml`.\n\n**Silencios**: antes de un mantenimiento planificado, cree un silencio en la interfaz de Alertmanager (`http:\u002F\u002Flocalhost:9093`) o mediante la API: `amtool silence add --duration=2h alertname=~'.*'`.\n\n**Enrutado multicanal**: las alertas críticas (CPU > 95%) van a PagerDuty o Slack con mención `@channel`, las advertencias (CPU > 85%) a un canal de supervisión menos urgente.\n\nTras cada modificación de `alertmanager.yml`, recargue sin reiniciar: `curl -X POST http:\u002F\u002Flocalhost:9093\u002F-\u002Freload`.",{"type":92,"title":93,"headers":94,"rows":99},"comparison","Prometheus vs InfluxDB vs Zabbix: ¿cuál elegir?",[95,96,97,98],"Criterio","Prometheus","InfluxDB","Zabbix",[100,105,110,115,120,125],[101,102,103,104],"Modelo de recopilación","Pull (scrape activo)","Push (agentes o API)","Agente + SNMP + JMX",[106,107,108,109],"Almacenamiento","TSDB integrado, eficiente en VPS","InfluxDB OSS o Cloud","PostgreSQL \u002F MySQL, pesado",[111,112,113,114],"Lenguaje de consulta","PromQL (potente, curva pronunciada)","Flux \u002F InfluxQL (similar a SQL)","Macros Zabbix (limitado)",[116,117,118,119],"Alertas","Alertmanager dedicado, flexible","Integrado (OSS limitado)","Integrado, rico pero complejo",[121,122,123,124],"Curva de aprendizaje","Moderada (PromQL)","Baja (similar a SQL)","Alta (UI densa, agentes)",[126,127,128,129],"Caso de uso ideal","Infra en contenedores, apps instrumentadas","IoT, series temporales de alta frecuencia","Redes empresariales, SNMP",{"type":131,"title":132,"body":133},"tip","Bastionado: nunca exponga Prometheus públicamente","Prometheus no tiene sistema de autenticación nativo. Su interfaz web expone la lista de todos sus objetivos, sus etiquetas de infraestructura y sus reglas de alerta — información valiosa para un atacante que mapea su infraestructura.\n\nTres reglas no negociables:\n1. Vincule Prometheus en `127.0.0.1:9090` únicamente (`--web.listen-address=127.0.0.1:9090` en el Compose).\n2. Bloquee los puertos 9090, 9093, 9100 y 8080 en el cortafuegos (`ufw deny 9090`).\n3. Proteja Grafana con una contraseña fuerte y desactive la cuenta anónima (`GF_AUTH_ANONYMOUS_ENABLED=false` como variable de entorno).\n\nSi necesita acceder a la interfaz de Prometheus desde el exterior para depuración, utilice un túnel SSH (`ssh -L 9090:localhost:9090 user@mondomaine.com`) en lugar de un reverse proxy público.",{"type":39,"title":135,"body":136},"Añadir supervisión de contenedores Docker con cAdvisor","cAdvisor (Container Advisor) expone métricas por contenedor Docker en formato Prometheus: uso de CPU como proporción de la cuota asignada, consumo de memoria con y sin caché, E\u002FS de red y disco, y reinicios.\n\nEn `docker-compose.yml`, añada el servicio:\n```bash\ncadvisor:\n  image: gcr.io\u002Fcadvisor\u002Fcadvisor:latest\n  volumes:\n    - \u002F:\u002Frootfs:ro\n    - \u002Fvar\u002Frun:\u002Fvar\u002Frun:ro\n    - \u002Fsys:\u002Fsys:ro\n    - \u002Fvar\u002Flib\u002Fdocker\u002F:\u002Fvar\u002Flib\u002Fdocker:ro\n  ports:\n    - '127.0.0.1:8080:8080'\n  restart: unless-stopped\n```\nLuego añada el job correspondiente en `prometheus.yml`. El panel Grafana ID 893 (cAdvisor) mostrará entonces una vista por contenedor, con filtro por nombre de servicio Docker.",{"type":39,"title":138,"body":139},"Resolución de problemas: los errores más frecuentes","**Target DOWN en Prometheus (`\u002Ftargets`)**: compruebe primero el nombre del servicio en `docker-compose.yml` — Prometheus resuelve los nombres por DNS interno de Docker. Si el servicio se llama `node-exporter` en el Compose, la URL de scrape debe ser `node-exporter:9100`, no `localhost:9100`.\n\n**Paneles vacíos tras la importación**: la causa más frecuente es un `job` de scrape cuya etiqueta no coincide con la que espera el panel. Node Exporter Full (ID 1860) espera un job llamado `node` — si lo nombró `node_exporter` en `prometheus.yml`, filtre manualmente en las variables del panel o renombre el job.\n\n**Alertmanager no recibe las alertas**: verifique que Prometheus puede alcanzar Alertmanager. En `prometheus.yml`, la sección `alerting` debe apuntar a `alertmanager:9093` (nombre de servicio Docker). Pruebe con: `docker compose exec prometheus curl http:\u002F\u002Falertmanager:9093\u002F-\u002Fhealthy`.\n\n**Error 'context deadline exceeded' al recargar**: Prometheus tarda más de 30 s en recargar si las reglas son numerosas o un objetivo es lento. Aumente el timeout de scrape en `prometheus.yml`: `scrape_timeout: 20s` bajo `global`.",{"type":39,"title":141,"body":142},"Para ir más lejos","Esta stack cubre los fundamentos de la monitorización de un VPS. Para necesidades más avanzadas:\n\n**Retención a largo plazo**: Prometheus almacena datos localmente, ideal para 30 a 90 días. Para un historial de 1 a 2 años sin saturar el disco, conecte **Thanos** (almacén de objetos compatible con S3) o **VictoriaMetrics** como reemplazo directo del almacenamiento. VictoriaMetrics es especialmente adecuado para VPS modestos: consume entre 5 y 10 veces menos memoria que Prometheus para el mismo volumen de series.\n\n**Supervisión de endpoints HTTP**: añada **Blackbox Exporter** al Compose para probar la disponibilidad de sus URLs, el código HTTP devuelto, la latencia y la fecha de caducidad del certificado TLS.\n\n**Logs con Loki**: si desea correlacionar métricas con logs de aplicación, añada Loki + Promtail al Compose. Grafana muestra métricas y logs en el mismo panel, reduciendo el tiempo de diagnóstico.\n\nPara todas las opciones de configuración avanzadas, consulte la \u003Ca href=\"https:\u002F\u002Fgrafana.com\u002Fdocs\">documentación oficial de Grafana\u003C\u002Fa> y la \u003Ca href=\"https:\u002F\u002Fprometheus.io\u002Fdocs\">documentación de Prometheus\u003C\u002Fa>. ServOrbit ofrece una plantilla Docker preconfigurada para lanzar esta stack en un clic en un \u003Ca href=\"\u002Fvps-cloud\">VPS Cloud\u003C\u002Fa>.","Despliegue su stack de observabilidad","El VPS Cloud ServOrbit ofrece la CPU, la RAM y el SSD necesarios para ejecutar Prometheus, Grafana y sus exporters sin cuellos de botella, con una plantilla Docker lista para configurar.","Configurar mi VPS Cloud","\u002Fvps-cloud",[148,166,184],{"id":149,"slug":150,"slugs":151,"title":155,"excerpt":156,"readTime":23,"views":157,"isPinned":19,"noindex":19,"publishedAt":158,"updatedAt":159,"category":160,"categories":161,"featuredImage":30,"bgImage":31,"posterImage":163,"relatedSolution":164},105,"supervisar-vps-con-uptime-kuma",{"fr":152,"en":153,"ar":154,"es":150},"superviser-vps-uptime-kuma","monitoring-your-vps-with-uptime-kuma","مراقبة-خادمك-الافتراضي-vps-باستخدام-uptime-kuma","Supervisar su VPS con Uptime Kuma","Despliegue Uptime Kuma en su VPS para supervisar sus sitios y servicios en self-hosted, con alertas y página de estado pública.",0,"2026-03-07T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[162],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsuperviser-vps-uptime-kuma-poster.svg",{"categorySlug":34,"appSlug":165},"uptime-kuma",{"id":167,"slug":168,"slugs":169,"title":173,"excerpt":174,"readTime":175,"views":18,"isPinned":19,"noindex":19,"publishedAt":176,"updatedAt":177,"category":178,"categories":179,"featuredImage":30,"bgImage":31,"posterImage":181,"relatedSolution":182},107,"monitorizar-vps-en-tiempo-real-con-netdata",{"fr":170,"en":171,"ar":172,"es":168},"monitorer-vps-netdata","monitor-your-vps-in-real-time-with-netdata","راقب-خادمك-الافتراضي-vps-في-الوقت-الفعلي-باستخدام-netdata","Monitorizar su VPS en tiempo real con Netdata","Instale Netdata en su VPS para una monitorización en tiempo real por segundo: miles de métricas, cero configuración y alertas incluidas.",3,"2026-03-05T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[180],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fmonitorer-vps-netdata-poster.svg",{"categorySlug":34,"appSlug":183},"netdata",{"id":185,"slug":186,"slugs":187,"title":191,"excerpt":192,"readTime":193,"views":194,"isPinned":19,"noindex":19,"publishedAt":195,"updatedAt":177,"category":196,"categories":197,"featuredImage":30,"bgImage":31,"posterImage":199,"relatedSolution":200},108,"proteger-vps-con-crowdsec",{"fr":188,"en":189,"ar":190,"es":186},"securiser-vps-crowdsec","securing-your-vps-with-crowdsec","تأمين-خادمك-الافتراضي-vps-باستخدام-crowdsec","Proteger su VPS con CrowdSec","Despliegue CrowdSec en su VPS para bloquear los ataques gracias a una detección de comportamiento y a una blocklist comunitaria compartida.",4,2,"2026-03-04T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[198],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsecuriser-vps-crowdsec-poster.svg",{"categorySlug":201,"appSlug":202},"ciberseguridad-bastion","crowdsec",true,1794270630015]