CloudKitty: quanto è costato?
- Tariffa l'utilizzo raccolto, periodo per periodo
- Conserva lo storico; riepiloghi, dataframe, ritariffazione
- L'API di OpenStack, invariata per i suoi client
OpenKeel: la soluzione Cloud sovrana, francese e di portata europea, del gruppo inherent Scopri inherent
Architettura
Quanto è costato un progetto, quanto costerebbe e cosa emette: CloudKitty tariffa l'utilizzo a posteriori, openkeel-pricing calcola subito costo e carbonio, e Skyline mostra entrambi.
Serie di openstack-exporter (istanze, volumi, immagini) nel Prometheus dello stack di osservabilità
Raccoglie ogni ora l'utilizzo di ogni progetto e lo tariffa con regole hashmap e script CEL
Conserva lo storico tariffato per progetto, periodo e servizio
La pagina FinOps / GreenOps legge i riepiloghi; i moduli e il popup delle quote leggono openkeel-pricing
Il servizio di tariffazione riscritto in Go dalla reverse-spec di stable/2026.2: le stesse 66 operazioni API (v1, hashmap, pyscripts, v2), codici di stato, corpi di errore e policy.
| Parte | OpenKeel |
|---|---|
API (cloudkitty-api) | Regole, moduli, riepiloghi, dataframe e preventivi istantanei; preventivi calcolati nell'API con lo stesso codice di tariffazione |
Processor (cloudkitty-processor) | Elenca i progetti (fetcher Keystone: ogni progetto abilitato), ne raccoglie l'utilizzo da Prometheus a ogni periodo (1 ora), lo tariffa e lo memorizza; un solo processor attivo detiene un Lease Kubernetes |
| Tariffazione | Regole hashmap (servizi, campi, corrispondenze, soglie) e script scritti come espressioni CEL al posto di Python: niente istruzioni né I/O, limiti di costo e di tempo |
| Storage | InfluxDB 1.x o 2.x (InfluxQL con letterali in escape); MariaDB Galera per le regole e lo stato degli scope |
| Serie raccolte | Il file di metriche upstream su openstack-exporter: istanze (openstack_nova_server_status), capacità dei volumi (openstack_cinder_limits_volume_used_gb), dimensione delle immagini (openstack_glance_image_bytes), progetti etichettati tenant_id |
| Deployment | Componente opzionale: okadm install --components …,cloudkitty --grafana; okadm attiva openstack-exporter e punta il collector al Prometheus dello stack; lab: un processor, InfluxDB 2 GiB |
| Difetti upstream corretti | Eliminazioni limitate allo scope, policy di GET /v2/rating/modules, preventivi con desc piatto, nessuna chiamata Keystone non verificata, finestre di ritariffazione e di reset |
Test, funzioni escluse e inventario dell'API sono nella pagina del componente CloudKitty.
Le tariffe sono risorse Kubernetes, OpenKeelTenant (CRD installata da okadm in entrambe le modalità): quella chiamata default si applica a ogni progetto che non ha la propria. openkeel-pricing le osserva in memoria, senza database né bus.
| Risorsa | Unitari | Tariffa |
|---|---|---|
| cpu | vCPU | costo e carbonio al mese |
| ram | GiB | costo e carbonio al mese |
| gpu | GPU | costo e carbonio al mese |
| disk | GiB | costo e carbonio al mese |
| s3 | GiB | costo e carbonio al mese |
| dns | dominio | costo e carbonio al mese |
| vpn | VPN | costo e carbonio al mese |
API: GET /v1/rates (tariffe effettive e l'OpenKeelTenant da cui proviene ciascuna) e POST /v1/quotes (un flavor, un numero e delle risorse: righe e totali di costo e di carbonio). Costi in € al mese, carbonio in kg CO₂e al mese (× 12 per l'anno).
Con CloudKitty, okadm install --demo invia un frame tariffato al giorno per il progetto demo, dal primo giorno del mese scorso a ieri (la sua VM, il suo volume, il suo load balancer, il suo container e i suoi IP flottanti con i loro ID reali, una VM eliminata il mese scorso, l'immagine base), poi crea lo stato dello scope del progetto perché il processor lo tariffi da oggi. La pagina FinOps / GreenOps mostra entrambi i mesi insieme.