GH GambleHub

Osservabilità: fogli, metriche, tracciabili

Osservabilità: fogli, metriche, tracciabili

1) Perché è necessario

Osservabilità è la capacità del sistema di rispondere a domande non pianificate sul proprio stato. Si basa su tre segnali principali:
  • Le metriche sono unità compatte per SLI/SLO e alerting per sintomi.
  • Traccia - Catene causali di query (end-to-end).
  • I loghi sono eventi dettagliati per indagini e verifiche.

Obiettivo: RCA rapido, alert preventivi e affidabilità controllata all'interno di error budget.

2) Principi di architettura

Unico contesto: «trace _ id», «span _ id», «tenant _ id», «sollest _ id», «user _ agente», «client _ ip _ hash».
Standard: OpenTelemetry (OTel) per SDK/Agenti, formato JSON (canonico, con schema).
Sintomi> cause: alertim per sintomi personalizzati (latitanza/errore) anziché per CPU.
Collegamento dei segnali: dalla metrica di → in spans (exemplars) → in loghi specifici per «trace _ id».
Sicurezza e privacy: occultamento di PII nei logi, crittografia in transit/at rested, registri di controllo immutabili.
Multiforme: separa gli spazi dei nomi/chiavi/regole.

3) Tassonomia dei segnali e schemi

3. 1 Metriche

RED (Rate, Errors, Duration) per i servizi e USE (Utilization, Saturation, Errors) per l'infrastruttura.
Типы: counter, gauge, histogram/summary. Per la latitanza - istogram con bucket'ami fissi.
Excplars: riferimento à trace _ id "nei bin hot dell'istogramma.

Mini-schema metrico (logic. modello):

name: http_server_duration_seconds labels: {service, route, method, code, tenant}
type: histogram buckets: [0. 01, 0. 025, 0. 05, 0. 1, 0. 25, 0. 5, 1, 2, 5]
exemplar: trace_id

3. 2 Tracciati

Span = operazione con «name», «start/end», «attribute», «events», «status».
W3C Trace Text per la portabilità.
Samplace: base (head) + dinamica (tail) + regole «importanza» (errori, p95).

3. 3 Loghi

Solo JSON strutturato; livelli: DEBUG/INFO/WARN/ERRORE.
I campi obbligatori sono «ts _ utc», «level», «messaggistica», «trace _ id», «span _ id», «tenant _ id», «env», «service», «region», «host», «labels {}».
Proibito: segreti, token, PAN, password. PII - Solo tornizzato/mascherato.

Esempio riga (JSON):
json
{"ts":"2025-10-31T12:05:42. 123Z","level":"ERROR","service":"checkout","env":"prod",
"trace_id":"c03c...","span_id":"9ab1...","tenant_id":"t-42","route":"/pay",
"code":502,"msg":"payment gateway timeout","retry":true}

4) Raccolta e trasporto

Agenti/esportatori (daemonset/sidecar) il buffer sul nodo

Requisiti: back-pressure, retrai, deduplicazione, limitazione della radicalità (labels!), protezione contro «log storms».

Metriche: pull (Prometheus-compatibile) o push tramite OTLP.
Tracciabili: OTLP/HTTP (gRPC), sampler tail sul raccoglitore.
Loghi: raccolta locale (journald/docker/stdout) → Parser → Normalizzatore.

5) Conservazione e retenza (tiered)

Metriche: TSDB hot 7-30 giorni (con downsample), unità più lunghe (90-365 giorni).
Tracciati: 1-7 giorni pieni, poi agregati/span servizi «importanti»; memorizzare gli indici in «servizio», «status», «errore».
Logi: indice caldo 7-14 giorni, caldo 3-6 mes, archivio fino a 1-7 anni (compilation). Controllo - WORM.

Ottimizzazione dei costi: downsampling, filtraggio DEBUG in vendita, quote discografiche, sampling per le piste.

6) SLI/SLO, alerting e servizio

SLI: disponibilità (% delle richieste di successo), latitanza (p95/p99), quota 5xx, freschezza dei dati, percentuale di successo delle ecc.
SLO: obiettivo SLI (ad esempio 99. 9% di successo di 400 ms).
Error budget: 0. L' 1% di «diritto di errore» → le regole del phichfreese/esperimento.

Alerting per sintomi (esempio):
  • `ALERT HighLatency` если `p99(http_server_duration_seconds{route="/pay"}) > 1s` 5мин.
  • `ALERT ErrorRate` если `rate(http_requests_total{code=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0. 02`.
  • Silos-alert (CPU/Disk) - solo come ausiliari, senza paging.

7) Correlazione dei segnali

Metrika «rossa» clicca nell' ar «particolare» trace _ id « osservando» lento «span», aprendo i loghi con lo stesso «trace _ id».
Correlazione con le release: attributi «variante», «immagine _ sha», «feature _ flag».
Per i dati/ETL: «dataset _ urn», «run _ id», collegamento con lineage (vedere l'articolo corrispondente).

8) Semilibertà e cardinalità

Metriche: limitiamo le etichette (senza user _ id, sessione _ id); quote/validazione al momento dell'iscrizione.
Traccia: combiniamo head-sample (all'ingresso) e tail-sample (sul raccoglitore) con le regole: «Tutto ciò che è 5xx, p99, gli errori sono al 100%».
Fogli: livelli e drosselazione per errori ripetuti frequenti - Eventi di aggregazione (chiave dedupe).

Esempio di tail-sampling (concettuale, OTel raccoglitore):
yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_code: ERROR rate_allocation: 1. 0
- type: latency threshold_ms: 900 rate_allocation: 1. 0
- type: probabilistic hash_seed: 42 sampling_percentage: 10

9) Sicurezza e privacy

In Transit/At Rest: crittografia (TLS 1. 3, AEAD, KMS/HSM).
PII/segreti: igienizzatori prima dell'invio, tornizzazione, occultamento.
Accesso: ABAC/RBAC in lettura; Separazione dei ruoli producers/readers/admins.
Controllo: registro di accesso a login/piste invariato; esportazione - in una vista criptata.
Multiforme: namespades/tenant-labels con regole; isolamento delle chiavi di crittografia.

10) Profili di configurazione (sezioni)

Prometheus (metriche HTTP + alerting):
yaml global: { scrape_interval: 15s, evaluation_interval: 30s }
scrape_configs:
- job_name: 'app'
static_configs: [{ targets: ['app-1:8080','app-2:8080'] }]
rule_files: ['slo. rules. yaml']
slo. rules. yaml (esempio RED):
yaml groups:
- name: http_slo rules:
- record: job:http_request_duration_seconds:p99 expr: histogram_quantile(0. 99, sum(rate(http_server_duration_seconds_bucket[5m])) by (le,route))
- alert: HighLatencyP99 expr: job:http_request_duration_seconds:p99{route="/pay"} > 1 for: 5m
OpenTelemetry SDK (pseudocode):
python provider = TracerProvider(resource=Resource. create({"service. name":"checkout","service. version":"1. 8. 3"}))
provider. add_span_processor(BatchSpanProcessor(OTLPExporter(endpoint="otel-collector:4317")))
set_tracer_provider(provider)
with tracer. start_as_current_span("pay", attributes={"route":"/pay","tenant":"t-42"}):
business logic pass
Logi applicazione (stdout JSON):
python log. info("gw_timeout", extra={"route":"/pay","code":502,"trace_id":get_trace_id()})

11) Dati/ETL e streaming

SLI per dati: freschezza (max lag), completezza (rows vs expectation), qualità (validatori/duplicati).
Alert, finestra saltata, squadra di consulenza, DLQ in crescita.
Correlazione: «run _ id», «dataset _ urn», eventi lineage; tracciati per pipline (span per batch/partition).
Kafka/NATS: metriche produttore/consulente, lega/rifiuto; tracciamento headers (ad esempio, 'traceparent').

12) Profilatura e eBPF (segnale avanzato)

Percorsi a caldo a basso livello CPU/alloc/IO; profili per l'incidente.
La telemetria eBPF (ritardi di rete, DNS, chiamate di sistema) collegata a «trace _ id »/PID.

13) Test di osservabilità

Contratto di segnale - Verifica dell'esportazione di metriche/etichette/istogrammi in CI.
Synthetic probes: RUM/client simulati per SLI esterni.
Chaos/Fire drills - Spegnere le dipendenze, degradare - vedere come reagiscono gli alert e gli agenti di servizio.
Smoke in vendita - Verifica post-deposito che i nuovi endpoint hanno metriche e ricalco.

14) Costo e controllo dei volumi

Budget per segnale/comando; «cost per le parole».
Cardinalità sotto budget (SLO per cardinality), limiti per le nuove etichette.
Downsampling, retenze per classe di dati, archivi freddi e WORM per il controllo.

15) Utilizzo e SLO della piattaforma di osservabilità

Piattaforma SLO 99. 9% degli ingesti di successo; 30 c di ritardo nell'indice delle metriche, 2 min di , 1 min di .
Gli alert della piattaforma sono la lega dell'iniezione, la crescita dei drop, l'errore di firma/crittografia, il sovraccarico dei buffer.
DR/HA: multifunzione, replica, backup di configurazioni/regole.

16) Assegno fogli

Prima di vendere:
  • Dappertutto «trace _ id »/« span _ id»; Logi JSON con schema.
  • metriche RED/USE con istogrammi; Le piste sono → are.
  • Tail-sampling abilitato Regole 5xx/p99 = 100%.
  • Alert per sintomi + runibuki; orologi silenziosi/anti-flap.
  • Igiene PII; crittografia at rest/in transit; WORM per il controllo.
  • Retenze e budget per quantità/cardinalità.
Utilizzo:
  • Panoramica mensile degli alert (rumore/precisione), soglie di tuning.
  • Report di errore budget e misure adottate (phichfris, hardening).
  • Controllare i rivestimenti di dashboard/logi/piste per percorsi critici.
  • Incidenti di formazione e aggiornamento runbook '.

17) Runbook’и

RCA crescita p99/pay

1. Apri il dashboard RED per «checkout».
2. Camminare su una pista call`).
3. Apri i loghi dì trace _ id "per vedere i timeout/retrai.
4. Includi flag Fiech di ripristino/limite RPS e avvisa i proprietari della dipendenza.
5. Dopo la stabilizzazione - RCA, tickets per l'ottimizzazione, test di riproduzione.

Anomalia dati (DWH):

1. La SLI «freschezza» della pista red jobs-failing passo.

2. Controlla la lega del broker/DLQ, errori del connettore.

3. Avvia reprocess, avvisa i consumatori (BI/prodotto) attraverso il canale di stato.

18) Errori frequenti

Fogli senza schema e senza «trace _ id». Le indagini durano di tanto in tanto.
Gli alert dell'infrastruttura invece dei sintomi. Paging va nel latte.
L'infinita cardinalità delle metriche. L'esplosione dei costi e l'instabilità.
Tutte le piste sono al 100%. Costoso e non necessario; accendete il seme intelligente.
PII/segreti nei reparti. Accendete i servizi igienici e le liste rosse.
Fichi muti. Nuovo codice senza metriche/piste/cassetti.

19) FAQ

C: È necessario conservare il testo grezzo dei cassetti?
Oh, sì, ma con la retinenza e gli archivi; Gli alert e gli SLO sono sufficienti. Controllo - WORM.

C: Cosa scegliere per le piste - head o tail sampling?
A: Combina: head-probabilistic per rivestimento base + tail-rule per errori e anomalie.

C: Come collegare metriche personalizzate e tecniche?
O: Attraverso il generico «trace _ id» e le etichette aziendali («route», «tenant», «plan») e attraverso gli eventi del prodotto (conversione) correlati alle piste.

Come non annegare negli alert?
Bada per sintomi, inserisci orologi silenziosi, deduplicazione, raggruppamento, priorità SLO e proprietario-predefinito per ogni alert.

Materiali correlati:
  • Controllo e registri invariati
  • Crittografia In Transit/At Rest'
  • «Gestione dei segreti»
  • Origine dati
  • «Privacy by Design (GDPR)»
  • Garanzia di spedizione Web Hook
Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.