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.

# 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
# 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
# Distribuire lo stack Coroot
curl -fsS https://raw.githubusercontent.com/coroot/coroot/main/deploy/docker-swarm-stack.yaml | \
  docker stack deploy -c - coroot
# 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 -
# 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 -
# 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
# 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 -
# L'agente node è distribuito automaticamente dall'operatore Coroot
# Nessuna installazione separata necessaria quando si utilizza Helm
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
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
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
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
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
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
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
# 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
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
ChannelConfiguration
SlackURL Webhook
PagerDutyChiave di integrazione
OpsgenieChiave API
EmailImpostazioni SMTP
WebhookEndpoint HTTP personalizzato
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
  • 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