Volver
Go
Docker
JavaScript
Imagen publicada en Docker Hub
go-data
Dashboard de monitoreo de servidores tipo Netdata, minimalista, en un solo binario Go
Qué es
Un solo binario en Go que expone una API JSON y sirve un dashboard web estático, sin dependencias obligatorias: sin base de datos, sin agentes externos, sin build de JS. Pensado para levantar en un VPS o homelab con un simple docker compose up -d y tener visibilidad inmediata del servidor.
Todo es opt-in: si no se monta el socket de Docker, /var/log o /proc del host, esas features simplemente no muestran datos en vez de romper la aplicación.
Highlights
- Métricas de CPU, RAM, disco, red, temperatura, contenedores Docker, intentos de login SSH y conexiones entrantes.
- Frontend estático (HTML/CSS/JS) servido directo por el binario, sin framework ni paso de build.
- Persistencia de métricas en memoria por defecto (ventana corta), con InfluxDB opcional para historial más largo.
- Basic Auth opcional para proteger el dashboard y la API.
- Configuración 100% por variables de entorno — nada que editar en archivos para prender o apagar features.
Arquitectura
- Collectors propios (sin dependencias externas) que leen /proc, /sys, logs de auth y el socket de Docker.
- Módulo de seguridad que parsea el auth log para detectar intentos de SSH y nuevas conexiones entrantes por puerto.
- Umbrales de alerta configurables para CPU, RAM, disco, iowait/steal y temperatura.
- Capa de storage intercambiable: memoria, InfluxDB, o ambas combinadas.
- Empaquetado como imagen Docker multi-stage con binario estático, más un docker-compose.yml con InfluxDB como servicio opcional.
Cómo correrlo
docker-compose.yml (con InfluxDB)
services:
app:
image: gonzxa/go-data:latest
ports:
- "19245:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/log:/var/log:ro
- /proc:/hostproc:ro
- app-data:/app/data
environment:
- USE_INFLUX=true
- INFLUX_URL=http://influx:8086
- INFLUX_TOKEN=${INFLUXDB_ADMIN_TOKEN}
- INFLUX_ORG=${INFLUXDB_ORG}
- INFLUX_BUCKET=${INFLUXDB_BUCKET}
- DOCKER_ENABLED=true
- SSH_WATCH_ENABLED=true
- CONN_WATCH_ENABLED=true
- AUTH_ENABLED=true
- AUTH_USER=${AUTH_USER}
- AUTH_PASSWORD=${AUTH_PASSWORD}
depends_on:
- influx
influx:
image: influxdb:2.7
volumes:
- influx-data:/var/lib/influxdb2
- influx-config:/etc/influxdb2
environment:
- DOCKER_INFLUXDB_INIT_MODE=setup
- DOCKER_INFLUXDB_INIT_USERNAME=${INFLUXDB_USERNAME}
- DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_PASSWORD}
- DOCKER_INFLUXDB_INIT_ORG=${INFLUXDB_ORG}
- DOCKER_INFLUXDB_INIT_BUCKET=${INFLUXDB_BUCKET}
- DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUXDB_ADMIN_TOKEN}
volumes:
app-data:
influx-data:
influx-config:Levantar el stack
docker compose up -dVariables de entorno
| Variable | Default | Uso |
|---|---|---|
| USE_INFLUX | false | Habilita persistencia de métricas en InfluxDB en vez de solo memoria. |
| DOCKER_ENABLED | false | Habilita el collector de containers Docker (requiere montar el socket). |
| SSH_WATCH_ENABLED | false | Habilita el parseo del auth log para intentos de login SSH. |
| CONN_WATCH_ENABLED | false | Habilita la detección de conexiones entrantes nuevas por puerto. |
| AUTH_ENABLED | false | Protege el dashboard y la API con Basic Auth. |