Salta ai contenuti

Coroot Observability

Strumento di osservabilità e APM open-source basato su eBPF con metriche senza strumentazione, log, tracce e continuous profiling per ambienti Kubernetes e Docker.

Installation

Docker Compose (Quickest)

# Distribuzione con un singolo comando con ClickHouse e Prometheus
curl -fsS https://raw.githubusercontent.com/coroot/coroot/main/deploy/docker-compose.yaml | \
  docker compose -f - up -d

# Accedere all'interfaccia utente su http://localhost:8080

Kubernetes (Helm)

# Aggiungere il repository Helm di Coroot
helm repo add coroot https://coroot.github.io/helm-charts
helm repo update coroot

# Installare l'operatore Coroot
helm install -n coroot --create-namespace coroot-operator coroot/coroot-operator

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

# Distribuire con replica ClickHouse
helm install -n coroot coroot coroot/coroot-ce \
  --set "clickhouse.shards=2,clickhouse.replicas=2"

# Port forward per accedere all'interfaccia utente
kubectl port-forward -n coroot service/coroot-coroot 8080:8080

# Accedere all'interfaccia utente su http://localhost:8080

Docker Swarm

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

Ubuntu/Debian

# Installare il server 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

# Lo stesso installatore funziona per le distribuzioni basate su 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 -

Node Agent Installation

Docker

# Eseguire l'agente node come container privilegiato
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)

# Installare l'agente node su bare-metal o VM
curl -sfL https://raw.githubusercontent.com/coroot/coroot-node-agent/main/install.sh | \
  COLLECTOR_ENDPOINT=http://COROOT_IP:8080 \
  SCRAPE_INTERVAL=15s \
  sh -

Kubernetes (via Helm operator)

# L'agente node è distribuito automaticamente dall'operatore Coroot
# Nessuna installazione separata necessaria quando si utilizza Helm

Basic Commands

CommandDescription
docker compose up -dAvviare Coroot con Docker Compose
docker compose downInterrompere tutti i servizi Coroot
docker compose logs -fSeguire i log di Coroot
helm install coroot coroot/coroot-ceInstallare Coroot su Kubernetes
helm upgrade coroot coroot/coroot-ceAggiornare Coroot
helm uninstall coroot -n corootRimuovere Coroot dal cluster
kubectl port-forward svc/coroot-coroot 8080:8080 -n corootAccedere all’interfaccia utente di Coroot

Configuration Parameters

Server Configuration

VariableDescriptionDefault
BOOTSTRAP_PROMETHEUS_URLEndpoint del server PrometheusRequired
BOOTSTRAP_REFRESH_INTERVALIntervallo di raccolta delle metriche15s
BOOTSTRAP_CLICKHOUSE_ADDRESSIndirizzo del server ClickHouseRequired
LISTEN_ADDRESSIndirizzo di ascolto HTTP:8080
DATA_DIRPercorso della directory dei dati/var/lib/coroot

Node Agent Configuration

FlagDescriptionDefault
--collector-endpointEndpoint del server CorootRequired
--cgroupfs-rootPercorso radice del filesystem Cgroup/sys/fs/cgroup
--scrape-intervalIntervallo di scraping delle metriche15s
--log-levelVerbosità della registrazioneinfo

Architecture Components

ComponentRole
Coroot ServerDashboard centrale, motore di analisi, avvisi
Node AgentRaccolta di metriche e log basata su eBPF su ogni nodo
Cluster AgentMonitoraggio del database (MySQL, PostgreSQL, Redis)
ClickHouseArchiviazione di metriche, log, tracce e profili
PrometheusScraping delle metriche e remote write

Key Features

Zero-Instrumentation Observability

FeatureDescription
Automatic DiscoveryServizi auto-scoperti tramite eBPF — nessuna modifica al codice necessaria
Service MapMappa della topologia in tempo reale mostrante tutte le dipendenze dei servizi
Distributed TracingTracciamento delle richieste tra microservizi senza SDK
Log CollectionRaccolta automatica dei log e clustering dei pattern
Continuous ProfilingProfiling di CPU/memoria con attivazione con un clic

Monitoring Capabilities

CapabilityDescription
SLO TrackingDefinire e monitorare gli obiettivi a livello di servizio
Issue DetectionIdentificazione automatica di oltre l’80% dei problemi
Deployment TrackingTracciamento dei deployment Kubernetes e rollback
Cost MonitoringAnalisi dei costi delle risorse AWS, GCP, Azure
Network AnalysisMetriche di connessione TCP, latenza DNS, ritrasmissioni

Supported Protocols (eBPF)

ProtocolMetrics Collected
HTTP/HTTPSLatenza, tasso di errore, throughput
gRPCLatenza a livello di metodo e errori
PostgreSQLLatenza delle query, connessioni, errori
MySQLPrestazioni delle query, query lente
RedisLatenza dei comandi, rapporto hit/miss
MongoDBLatenza delle operazioni, connessioni
KafkaLag dei produttori/consumatori, throughput
DNSLatenza di risoluzione, tasso di errore

Helm Chart Values

Common Overrides

# Dimensionamento personalizzato di ClickHouse
helm install coroot coroot/coroot-ce \
  --set clickhouse.shards=3 \
  --set clickhouse.replicas=2 \
  --set clickhouse.storage=100Gi

# Impostazioni Prometheus personalizzate
helm install coroot coroot/coroot-ce \
  --set prometheus.storage=50Gi \
  --set prometheus.retention=30d

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

Alerting Configuration

Alert TypeDescription
SLO BreachAttivato quando l’obiettivo SLO è a rischio
Latency SpikeLa latenza p99 supera la soglia
Error RateLa percentuale di errore supera la soglia
ResourceAnomalia nell’utilizzo di CPU, memoria o disco
DeploymentDeployment non riuscito o degradato rilevato

Notification Channels

ChannelConfiguration
SlackURL Webhook
PagerDutyChiave di integrazione
OpsgenieChiave API
EmailImpostazioni SMTP
WebhookEndpoint HTTP personalizzato

Troubleshooting

IssueSolution
Nessun dato visualizzatoVerificare che l’agente node --collector-endpoint punti al server Coroot
Servizi mancantiVerificare che l’agente node sia in esecuzione con --privileged e --pid host
eBPF non caricatoAssicurarsi che la versione del kernel sia 4.16+ con supporto BTF
Utilizzo di memoria elevatoRidurre --scrape-interval o limitare gli spazi dei nomi monitorati
Connessione ClickHouseVerificare che ClickHouse sia in esecuzione e accessibile sulla porta 9000

Best Practices

  • Distribuire agenti node su ogni nodo nel cluster per visibilità completa
  • Utilizzare la replica ClickHouse per i deployment di produzione (minimo 2 repliche)
  • Impostare obiettivi SLO significativi prima di affidarsi agli avvisi automatici
  • Iniziare con Docker Compose per la valutazione, migrare a Helm per la produzione
  • Configurare il remote write di Prometheus per persistere le metriche oltre i riavvii del pod
  • Utilizzare il profiler integrato per identificare i hotspot di CPU/memoria prima del ridimensionamento
  • Abilitare il tracciamento dei deployment per correlare i cambiamenti di prestazioni con i rilasci