CloudKitty: Was hat es gekostet?
- Bewertet die erfasste Nutzung Periode für Periode
- Behält die Historie; Zusammenfassungen, Dataframes, Neubewertung
- Die API von OpenStack, für ihre Clients unverändert
OpenKeel: die souveräne französische Cloud-Lösung mit europäischer Reichweite der inherent-Gruppe inherent entdecken
Architektur
Was ein Projekt gekostet hat, was es kosten würde und was es ausstößt: CloudKitty bewertet die Nutzung im Nachhinein, openkeel-pricing beziffert Kosten und CO₂ sofort, und Skyline zeigt beides.
openstack-exporter-Reihen (Instanzen, Volumes, Images) im Prometheus des Observability-Stacks
Erfasst stündlich die Nutzung jedes Projekts und bepreist sie mit hashmap-Regeln und CEL-Skripten
Behält die bewertete Historie pro Projekt, Zeitraum und Dienst
Die FinOps-/GreenOps-Seite liest die Zusammenfassungen; die Formulare und das Quota-Popup lesen openkeel-pricing
Der Bewertungsdienst, in Go aus der Reverse-Spec von stable/2026.2 neu geschrieben: dieselben 66 API-Operationen (v1, hashmap, pyscripts, v2), Statuscodes, Fehlerkörper und Policies.
| Teil | OpenKeel |
|---|---|
API (cloudkitty-api) | Regeln, Module, Zusammenfassungen, Dataframes und Sofortangebote; Angebote in der API mit demselben Bewertungscode berechnet |
Processor (cloudkitty-processor) | Listet die Projekte (Keystone-Fetcher: jedes aktivierte Projekt), erfasst ihre Nutzung in jeder Periode (1 Stunde) aus Prometheus, bewertet und speichert sie; ein einziger aktiver Processor hält ein Kubernetes-Lease |
| Bewertung | hashmap-Regeln (Dienste, Felder, Zuordnungen, Schwellen) und Skripte als CEL-Ausdrücke statt Python: keine Anweisungen, kein I/O, Kosten- und Zeitgrenzen |
| Speicher | InfluxDB 1.x oder 2.x (InfluxQL mit escapten Literalen); MariaDB Galera für die Regeln und den Scope-Status |
| Erfasste Reihen | Die Upstream-Metrikdatei auf openstack-exporter: Instanzen (openstack_nova_server_status), Volume-Kapazität (openstack_cinder_limits_volume_used_gb), Image-Größe (openstack_glance_image_bytes), Projekte mit dem Label tenant_id |
| Deployment | Optionale Komponente: okadm install --components …,cloudkitty --grafana; okadm schaltet openstack-exporter ein und richtet den Collector auf das Prometheus des Stacks; Lab: ein Processor, InfluxDB 2 GiB |
| Behobene Upstream-Fehler | Auf den Scope begrenzte Löschungen, Policy von GET /v2/rating/modules, Angebote mit flachem desc, kein ungeprüfter Keystone-Aufruf, Zeitfenster von Neubewertung und Reset |
Tests, weggelassene Funktionen und das API-Inventar stehen auf der Komponentenseite von CloudKitty.
Die Tarife sind Kubernetes-Ressourcen, OpenKeelTenant (CRD, von okadm in beiden Modi installiert): Die Ressource namens default gilt für jedes Projekt ohne eigene. openkeel-pricing beobachtet sie im Speicher, ohne Datenbank und ohne Bus.
| Ressource | Unit | Tarif |
|---|---|---|
| cpu | vCPU | Kosten und CO₂ pro Monat |
| ram | GiB | Kosten und CO₂ pro Monat |
| gpu | GPU | Kosten und CO₂ pro Monat |
| disk | GiB | Kosten und CO₂ pro Monat |
| s3 | GiB | Kosten und CO₂ pro Monat |
| dns | Domain | Kosten und CO₂ pro Monat |
| vpn | VPN | Kosten und CO₂ pro Monat |
API: GET /v1/rates (wirksame Tarife und das OpenKeelTenant, aus dem jeder stammt) und POST /v1/quotes (ein Flavor, eine Anzahl und Ressourcen: Zeilen und Summen von Kosten und CO₂). Kosten in € pro Monat, CO₂ in kg CO₂e pro Monat (× 12 für das Jahr).
Mit CloudKitty schreibt okadm install --demo einen bewerteten Frame pro Tag für das Demo-Projekt, vom ersten Tag des Vormonats bis gestern (seine VM, sein Volume, sein Load Balancer, sein Container und seine Floating IPs mit ihren echten IDs, eine im Vormonat gelöschte VM, das Basis-Image), und legt dann den Scope-Status des Projekts an, damit der Processor es ab heute bewertet. Die FinOps-/GreenOps-Seite zeigt beide Monate zugleich.