Ir al contenido

Coroot Observability

Herramienta de observabilidad y APM basada en eBPF de código abierto con métricas de cero instrumento, logs, trazas y perfilado continuo para entornos Kubernetes y Docker.

Instalación

Docker Compose (Más rápido)

# Implementación de un solo comando con ClickHouse y Prometheus
curl -fsS https://raw.githubusercontent.com/coroot/coroot/main/deploy/docker-compose.yaml | \
  docker compose -f - up -d

# Acceder a la UI en http://localhost:8080

Kubernetes (Helm)

# Agregar repositorio Helm de Coroot
helm repo add coroot https://coroot.github.io/helm-charts
helm repo update coroot

# Instalar el operador Coroot
helm install -n coroot --create-namespace coroot-operator coroot/coroot-operator

# Implementar Community Edition
helm install -n coroot coroot coroot/coroot-ce

# Implementar con replicación de ClickHouse
helm install -n coroot coroot coroot/coroot-ce \
  --set "clickhouse.shards=2,clickhouse.replicas=2"

# Port forward para acceder a la UI
kubectl port-forward -n coroot service/coroot-coroot 8080:8080

# Acceder a la UI en http://localhost:8080

Docker Swarm

# Implementar stack de Coroot
curl -fsS https://raw.githubusercontent.com/coroot/coroot/main/deploy/docker-swarm-stack.yaml | \
  docker stack deploy -c - coroot

Ubuntu/Debian

# Instalar servidor Coroot
curl -sfL https://raw.githubusercontent.com/coroot/coroot/main/deploy/install.sh | \
  BOOTSTRAP_PROMETHEUS_URL="http://PROMETHEUS_IP:9090" \
  BOOTSTRAP_REFRESH_INTERVAL=15s \
  BOOTSTRAP_CLICKHOUSE_ADDRESS=CLICKHOUSE_IP:9000 \
  sh -

RHEL/CentOS

# El mismo instalador funciona para distribuciones basadas en RHEL
curl -sfL https://raw.githubusercontent.com/coroot/coroot/main/deploy/install.sh | \
  BOOTSTRAP_PROMETHEUS_URL="http://PROMETHEUS_IP:9090" \
  BOOTSTRAP_REFRESH_INTERVAL=15s \
  BOOTSTRAP_CLICKHOUSE_ADDRESS=CLICKHOUSE_IP:9000 \
  sh -

Instalación del agente de nodo

Docker

# Ejecutar agente de nodo como contenedor privilegiado
docker run --detach --name coroot-node-agent \
  --pull=always --privileged --pid host \
  -v /sys/kernel/tracing:/sys/kernel/tracing:rw \
  -v /sys/kernel/debug:/sys/kernel/debug:rw \
  -v /sys/fs/cgroup:/host/sys/fs/cgroup:ro \
  ghcr.io/coroot/coroot-node-agent \
  --cgroupfs-root=/host/sys/fs/cgroup \
  --collector-endpoint=http://COROOT_IP:8080

Linux (systemd)

# Instalar agente de nodo en bare-metal o VMs
curl -sfL https://raw.githubusercontent.com/coroot/coroot-node-agent/main/install.sh | \
  COLLECTOR_ENDPOINT=http://COROOT_IP:8080 \
  SCRAPE_INTERVAL=15s \
  sh -

Kubernetes (mediante operador Helm)

# El agente de nodo se implementa automáticamente por el operador Coroot
# No se necesita instalación separada cuando se usa Helm

Comandos básicos

ComandoDescripción
docker compose up -dIniciar Coroot con Docker Compose
docker compose downDetener todos los servicios de Coroot
docker compose logs -fSeguir logs de Coroot
helm install coroot coroot/coroot-ceInstalar Coroot en Kubernetes
helm upgrade coroot coroot/coroot-ceActualizar Coroot
helm uninstall coroot -n corootRemover Coroot del cluster
kubectl port-forward svc/coroot-coroot 8080:8080 -n corootAcceder a la UI de Coroot

Parámetros de configuración

Configuración del servidor

VariableDescripciónPor defecto
BOOTSTRAP_PROMETHEUS_URLEndpoint del servidor PrometheusRequerido
BOOTSTRAP_REFRESH_INTERVALIntervalo de recolección de métricas15s
BOOTSTRAP_CLICKHOUSE_ADDRESSDirección del servidor ClickHouseRequerido
LISTEN_ADDRESSDirección de escucha HTTP:8080
DATA_DIRRuta del directorio de datos/var/lib/coroot

Configuración del agente de nodo

FlagDescripciónPor defecto
--collector-endpointEndpoint del servidor CorootRequerido
--cgroupfs-rootRuta raíz del sistema de archivos cgroup/sys/fs/cgroup
--scrape-intervalIntervalo de escaneo de métricas15s
--log-levelVerbosidad de logginginfo

Componentes de arquitectura

ComponenteRol
Servidor CorootDashboard central, motor de análisis, alertas
Agente de nodoRecolección de métricas/logs basada en eBPF en cada nodo
Agente de clusterMonitoreo de base de datos (MySQL, PostgreSQL, Redis)
ClickHouseAlmacenamiento de métricas, logs, trazas y perfiles
PrometheusEscaneo de métricas y escritura remota

Características clave

Observabilidad de cero instrumento

CaracterísticaDescripción
Descubrimiento automáticoServicios auto-descubiertos vía eBPF — sin cambios de código necesarios
Mapa de serviciosMapa de topología en vivo mostrando todas las dependencias de servicio
Trazado distribuidoTrazado de solicitudes entre microservicios sin SDK
Recolección de logsRecolección automática de logs y clustering de patrones
Perfilado continuoPerfilado de CPU/memoria con activación de un clic

Capacidades de monitoreo

CapacidadDescripción
Seguimiento de SLODefinir y monitorear objetivos de nivel de servicio
Detección de problemasIdentificación automática de 80%+ de problemas
Seguimiento de implementaciónSeguimiento de implementaciones de Kubernetes y rollbacks
Monitoreo de costosAnálisis de costos de recursos en AWS, GCP, Azure
Análisis de redMétricas de conexión TCP, latencia DNS, retransmisiones

Protocolos soportados (eBPF)

ProtocoloMétricas recolectadas
HTTP/HTTPSLatencia, tasa de error, rendimiento
gRPCLatencia a nivel de método y errores
PostgreSQLLatencia de consulta, conexiones, errores
MySQLRendimiento de consultas, consultas lentas
RedisLatencia de comando, proporción hit/miss
MongoDBLatencia de operación, conexiones
KafkaLag de productor/consumidor, rendimiento
DNSLatencia de resolución, tasa de fallo

Valores del gráfico Helm

Sobreescrituras comunes

# Dimensionamiento personalizado de ClickHouse
helm install coroot coroot/coroot-ce \
  --set clickhouse.shards=3 \
  --set clickhouse.replicas=2 \
  --set clickhouse.storage=100Gi

# Configuración personalizada de Prometheus
helm install coroot coroot/coroot-ce \
  --set prometheus.storage=50Gi \
  --set prometheus.retention=30d

# Habilitar ingress
helm install coroot coroot/coroot-ce \
  --set ingress.enabled=true \
  --set ingress.host=coroot.example.com

Configuración de alertas

Tipo de alertaDescripción
Incumplimiento de SLOSe activa cuando el objetivo de SLO está en riesgo
Pico de latenciaLa latencia p99 excede el umbral
Tasa de errorEl porcentaje de error excede el umbral
RecursoAnomalía de uso de CPU, memoria o disco
ImplementaciónImplementación fallida o degradada detectada

Canales de notificación

CanalConfiguración
SlackURL de webhook
PagerDutyClave de integración
OpsgenieClave de API
EmailConfiguración SMTP
WebhookEndpoint HTTP personalizado

Solución de problemas

ProblemaSolución
Sin datos apareciendoVerificar que el endpoint --collector-endpoint del agente de nodo apunta al servidor Coroot
Servicios faltantesVerificar que el agente de nodo se ejecuta con --privileged y --pid host
eBPF no cargandoAsegurar versión de kernel 4.16+ con soporte BTF
Uso alto de memoriaReducir --scrape-interval o limitar namespaces monitoreados
Conexión de ClickHouseVerificar que ClickHouse está corriendo y accesible en puerto 9000

Mejores prácticas

  • Implementar agentes de nodo en cada nodo del cluster para visibilidad completa
  • Usar replicación de ClickHouse para implementaciones de producción (mínimo 2 réplicas)
  • Establecer objetivos de SLO significativos antes de confiar en alertas automáticas
  • Comenzar con Docker Compose para evaluación, migrar a Helm para producción
  • Configurar escritura remota de Prometheus para persistir métricas más allá de reinicios de pods
  • Usar el profiler integrado para identificar hotspots de CPU/memoria antes de escalar
  • Habilitar seguimiento de implementación para correlacionar cambios de rendimiento con lanzamientos