-
1
Installazione kube-prometheus-stack
{"step":1,"title":"Installazione kube-prometheus-stack","description":"Installa stack completo: helm repo add prometheus-community e helm install monitoring prometheus-community\/kube-prometheus-stack --namespace monitoring --create-namespace con versione specificata. Stack include Prometheus Operator, Prometheus, Alertmanager, Grafana, kube-state-metrics, node-exporter. Verifica circa 15 pod Running in namespace monitoring. Port-forward Grafana porta 3000 e accedi."}
-
2
Esplorazione metric K8s e PromQL
{"step":2,"title":"Esplorazione metric K8s e PromQL","description":"Esplora dashboard auto-provisioned: Kubernetes Compute Resources Cluster per overview completo, Node Exporter Nodes per host metrics. Familiarizza con PromQL via Grafana Explore: rate() per request rate, histogram_quantile() per percentili latency. Identifica top consumer risorse con sum by namespace. Salva query utili come custom dashboard con variabili template."}
-
3
Custom application metrics e ServiceMonitor
{"step":3,"title":"Custom application metrics e ServiceMonitor","description":"Deploy applicazione di esempio instrumented con Prometheus client library (Go, Python, Node). App espone \/metrics su porta dedicata. Crea ServiceMonitor CRD: selector matcha label del Service, endpoints definisce port e path. Verifica in Prometheus UI Targets stato UP. Crea dashboard Grafana custom con request rate, error rate, latency p50\/p95\/p99 per la tua applicazione."}
-
4
Alerting rules e Alertmanager configuration
{"step":4,"title":"Alerting rules e Alertmanager configuration","description":"Crea PrometheusRule CRD con alert HighErrorRate: se ratio di 5xx supera 5% per 10 minuti continui, alert firing. Aggiungi annotations contestuali con summary e description. Configura Alertmanager: route critical a Slack channel incidents, warning a monitoring-alerts. Testa con applicazione che genera errori intenzionali e verifica alert in Prometheus UI e notifica Slack."}
-
5
Long-term storage con Thanos sidecar
{"step":5,"title":"Long-term storage con Thanos sidecar","description":"Configura Thanos sidecar nel Prometheus CRD con objectStorageConfig per bucket S3. Sidecar uploaded blocchi ogni 2 ore automaticamente. Installa Thanos Compactor per downsampling e retention, Store Gateway per query da S3, Querier per federation. Configura Grafana con datasource Thanos Querier. Verifica query su 90 giorni di dati storici."}
-
6
SLO implementation con Sloth
{"step":6,"title":"SLO implementation con Sloth","description":"Installa Sloth per automazione SLO. Definisci PrometheusServiceLevel CRD: SLO 99.9% availability, SLO 99% latency sotto 500ms. Sloth genera PrometheusRule con multi-window multi-burn-rate alert: fast burn (2% budget in 1 ora) per critical, slow burn (10% in 6 ore) per warning. Dashboard Grafana SLO mostra error budget rimanente e proiezione a 30 giorni."}
-
7
Installazione Loki per log aggregation
{"step":7,"title":"Installazione Loki per log aggregation","description":"Deploy Loki via Helm con persistence abilitata e 100Gi storage. Per scale configura repliche multiple e S3 backend. Installa Promtail DaemonSet che raccoglie \/var\/log\/containers, parsa metadati K8s, e shippa a Loki. Aggiungi datasource Loki in Grafana. Prova query LogQL: filtra per namespace, app label, e testo ERROR per trovare log di errore in tempo reale."}
-
8
Elasticsearch e Fluent Bit per full-text search
{"step":8,"title":"Elasticsearch e Fluent Bit per full-text search","description":"Deploy ECK Operator per Elasticsearch. Crea cluster con 3 master node e 5 data node per alta disponibilita. Crea Kibana collegata. Installa Fluent Bit DaemonSet che parsa log, arricchisce con metadati K8s, e shippa a Elasticsearch su indice datato. Configura ILM policy: hot 7 giorni SSD, warm 30 giorni HDD, delete dopo 90 giorni per controllo costi."}
-
9
OpenTelemetry Collector setup centralizzato
{"step":9,"title":"OpenTelemetry Collector setup centralizzato","description":"Installa OpenTelemetry Collector via Helm. Configura receiver OTLP su porte gRPC 4317 e HTTP 4318, processor batch e memory_limiter, exporter verso Jaeger e Prometheus remote write. Collector arricchisce automaticamente con resource detection aggiungendo cluster, region, instance metadata. Application invia traces a otel-collector.monitoring.svc.cluster.local senza conoscere i backend."}
-
10
Installazione Jaeger e distributed tracing
{"step":10,"title":"Installazione Jaeger e distributed tracing","description":"Installa Jaeger Operator nel namespace observability. Crea Jaeger CR production con Elasticsearch storage e sampling probabilistico all 1%. Configura applicazione di esempio con OpenTelemetry SDK auto-instrumentation. Genera traffico verso applicazione. Analizza traces in Jaeger UI: service map interattiva, trace timeline con timing per ogni span, flame graph per identificare bottleneck."}
-
11
Auto-instrumentation con OpenTelemetry Operator
{"step":11,"title":"Auto-instrumentation con OpenTelemetry Operator","description":"Installa OpenTelemetry Operator dal release ufficiale. Crea Instrumentation CR con sezioni java, python, nodejs configurate con endpoint OTLP del Collector. Annota pod target con instrumentation.opentelemetry.io\/inject-java=true. Operator inietta init container con agent e variabili d ambiente. Applicazione Spring Boot viene instrumentata automaticamente senza modifiche al codice sorgente."}
-
12
Tail-based sampling per ottimizzare storage traces
{"step":12,"title":"Tail-based sampling per ottimizzare storage traces","description":"Configura tail-based sampling nel Collector con processor tail_sampling. Policy: sample 100% se trace contiene error, sample 100% se latency supera 1 secondo, sample 10% per baseline normale. Riduce drasticamente storage mantenendo visibility completa su outlier ed errori. Testa con mix di richieste normali ed errori e verifica che tutti gli errori siano campionati."}
-
13
Correlazione metric log trace in Grafana
{"step":13,"title":"Correlazione metric log trace in Grafana","description":"In datasource Loki configura derived field con regex per estrarre trace_id dal log e linkare a Jaeger UI. In datasource Prometheus abilita exemplars: application emette histogram con trace_id allegato. In dashboard latency i punti exemplar sono cliccabili e saltano al trace Jaeger corrispondente. Pratica workflow completo di debugging end-to-end."}
-
14
Capacity planning e cost optimization
{"step":14,"title":"Capacity planning e cost optimization","description":"Analizza resource consumption con kubectl top pod -n monitoring. Identifica cardinality issue in Prometheus con query su prometheus_tsdb_symbol_table_size_bytes. Rimuovi label ad alta cardinalita (user_id, request_id) via metric_relabel_configs. Monitora trend disk usage Loki ed Elasticsearch. Calcola costo S3 vs SSD locale per long-term storage. Documenta baseline e crescita mensile."}
-
15
Multi-cluster observability platform
{"step":15,"title":"Multi-cluster observability platform","description":"Configura cluster observability centrale separato. Configura remote_write da cluster spoke verso Thanos Receive o Mimir centrale. Loki multi-tenant: tenant separato per cluster con query unified. Single pane of glass in Grafana con tutti i datasource. Testa failover: cluster spoke offline, verifica dati storici ancora queryabili da S3 e alert di cluster down arriva correttamente."}