Endpunkt der Kostenberichterstattung
Die Endpunkte für die Kostenberichterstattung werden verwendet, um dynamisch Kostenberichte zu erstellen und detaillierte Informationen über die Cloud-Ausgaben Ihres Unternehmens zu erhalten. Diese Berichte weisen die folgenden Merkmale auf:
- Kann im JSON-Format (Standard) oder im Format „ CSV “ generiert werden
- Hilfe bei der Verwaltung der gespeicherten Kostenberichte
- Flexible Filterung und Sortierung
- Auswahl von Dimensionen und Metriken zur Anpassung an die Anforderungen der Berichterstattung
- Kann bis zu 15 Dimensionen und 8 Metriken zu einem API-Aufruf hinzufügen
- Paginierung, wenn die Ergebnisse 10.000 Zeilen überschreiten
Endpunkte der Kostenberichterstattung
- /reporting/reports/cost zur Auflistung der aktuellen Kostenberichte
- /reporting/cost/run zur Ausführung von Kostenberichten
- /reporting/cost/measures zur Auflistung der verfügbaren Kostenberichtsmaßnahmen
- /reporting/cost/filters zur Auflistung der in Filtern verwendeten Vergleichsoperatoren
- /reporting/cost/enqueue für die Einreihung von Kostenberichten
- /reporting/reports/:id/state zur Überprüfung des Status von Berichten in der Warteschlange
- /reporting/reports/:id/results zum Abrufen von fertigen Berichten in der Warteschlange
Das Objekt Kostenbericht
- results (array) - Liste von Kostenzeilenobjekten, wobei jede Zeile aus den berichteten Dimensionen und Metriken besteht
- meta (Objekt) - Objekt mit Metainformationen über den ausgeführten Bericht
- dates (Objekt) - Zeichenfolgen für Anfangs- und Enddatum, die den Datumsbereich des Berichts angeben
- filters (array) - Liste der auf den Bericht angewandten Filter mit detaillierten Informationen
- metrics (array) - Liste der im Bericht zurückgegebenen Metriken mit detaillierten Informationen
- dimensions (array) - Liste der im Bericht zurückgegebenen Dimensionen mit detaillierten Informationen
- aggregates (array) - Liste der aggregierten Metriken mit detaillierten Informationen für den Bericht
- offset (Zahl) - Position, an der die Ergebnisse beginnen sollen. Standardwert ist 0
- limit (number) - Maximale Anzahl von Kostenzeilen, die zurückgegeben werden können
- total_results (Zahl) - Gesamtzahl der für den ausgeführten Bericht zurückgegebenen Kostenzeilen
Beispiel Kostenbericht Objekt
{
"results": [
{
"total_adjusted_amortized_cost": "586411.47",
"vendor": "Amazon"
},
{
"total_adjusted_amortized_cost": "5334044.71",
"vendor": "Azure"
}
],
"meta": {
"dates": {
"start": "2022-02-01T00:00:00Z",
"end": "2022-02-28T00:00:00Z"
},
"filters": [
{
"comparator": "==",
"value": "usage",
"measure": {
"name": "transaction_type",
"label": "Transaction Type",
"description": "Break costs into Usage, One-Time Charges...",
"data_type": "string",
"type": "dimension",
"group": {
"ID": 2,
"Key": "billing",
"Name": "Billing"
},
"sub_group": {
"ID": 6,
"Key": "usage",
"Name": "Usage"
}
}
}
],
"metrics": [
{
"name": "total_adjusted_amortized_cost",
"label": "Cost (Adjusted Amortized)",
"description": "This cost is calculated using the unblended rate,...",
"data_type": "currency",
"type": "metric",
"group": {
"ID": 2,
"Key": "billing",
"Name": "Billing"
},
"sub_group": {
"ID": 3,
"Key": "costs",
"Name": "Costs"
}
}
],
"dimensions": [
{
"name": "vendor",
"label": "Vendor",
"description": "Vendor that provided the product",
"data_type": "string",
"type": "dimension",
"group": {
"ID": 2,
"Key": "billing",
"Name": "Billing"
},
"sub_group": {
"ID": 7,
"Key": "vendor",
"Name": "Vendor"
}
}
],
"aggregates": [
{
"name": "total_adjusted_amortized_cost",
"label": "Cost (Adjusted Amortized)",
"description": "This cost is calculated using the unblended rate...",
"data_type": "currency",
"type": "metric",
"value": "5920456.18"
}
]
},
"offset": 0,
"limit": 0,
"total_results": 2
}
Aktuelle Kostenberichte auflisten
Abrufen einer Liste von Kostenberichten, die entweder dem Benutzer oder der Organisation gehören oder für sie freigegeben sind.
curl 'https://api.cloudability.com/v3/reporting/reports/cost' -u '[auth_token]:'
Beispiel Antwort
[
{
"id": 1,
"category": "Cost Summary",
"custom": false,
"description": "A breakdown of last month's costs by vendor.",
"dimensions": [
{
"name": "vendor",
"label": "Vendor",
"description": "The cloud vendor associated with the cost item. Valid values are Amazon, Azure and GCP.",
"data_type": "string",
"type": "dimension",
"group": {
"id": 2,
"key": "billing",
"name": "Billing"
},
"sub_group": {
"id": 7,
"key": "vendor",
"name": "Vendor"
}
}
],
"end_date": "end of last month",
"filters": [],
"metrics": [
{
"name": "unblended_cost",
"label": "Cost (Total)",
"description": "This is the default cost metric throughout Cloudability. It is a “cash” metric and simply represents the invoiced amount associated with any cost item as reported by the cloud vendor.",
"data_type": "currency",
"type": "metric",
"group": {
"id": 2,
"key": "billing",
"name": "Billing"
},
"sub_group": {
"id": 3,
"key": "costs",
"name": "Costs"
}
},
],
"order": "desc",
"owned_by_user": false,
"shared_with_organization": true,
"permission": {
"actions": [
"read"
]
},
"report_dimension_links": [],
"secondary_end_date": null,
"secondary_start_date": null,
"shared": false,
"shares": [],
"sort_by": "unblended_cost",
"star": false,
"start_date": "0 of last month",
"subscriptions": [],
"title": "Costs by Vendor Last Month"
}
]
Liste der verfügbaren Maßnahmen abrufen
Um eine Liste der vom Server erkannten Maßnahmen abzurufen, führen Sie einen GET-Zugriff auf den Endpunkt measures aus. Die Maßnahmen umfassen sowohl Dimensionen als auch Metriken, die in Berichten verwendet werden können.
curl ‘https://api.cloudability.com/v3/reporting/cost/measures’ -u ‘[auth_token]:’
| Argument | Beschreibung |
|---|---|
| apply_allocations(Fakultativ) | Wenn apply_allocations true ist, werden nur die Maßnahmen aufgelistet, die durch Kostenteilung unterstützt werden. Umgekehrt werden alle Maßnahmen in die Liste aufgenommen, wenn sie falsch ist. Erlaubt: wahr/falsch |
Beispiel Antwort
[
{
"data_type" : "currency",
"description" : "Total cost including taxes and credits",
"group" : {
"key" : "billing",
"name" : "Billing"
},
"label" : "Total Invoiced Costs",
"name" : "invoiced_cost",
"sub_group" : {
"key" : "costs",
"name" : "Costs"
},
"type" : "metric"
},
{
"data_type" : "string",
"description" : "The account name for a linked account in consolidated billing",
"group" : {
"key" : "billing",
"name" : "Billing"
},
"label" : "Linked Account Name",
"name" : "linked_account_name",
"sub_group" : {
"key" : "vendor",
"name" : "Vendor"
},
"type" : "dimension"
}
]
Liste der verfügbaren Filteroperatoren abrufen
Abrufen einer Liste der anerkannten Filteroperatoren für die Datenabfrage
curl ‘https://api.cloudability.com/v3/reporting/cost/filters’ -u ‘[auth_token]:’
Beispiel Antwort
[
"!=@", # does not contain
"!=", # not equals
"!==", # strictly not equals*
"<=", # less than or equals
">", # greater than
"[]!=", # not in*
"===", # strictly equals*
"<", # less than
"=@", # contains
"!^=", # does not match
"!$=", # does not end with
"==", # equals
">=" # greater than or equals
"$=", # ends with
"[]=", # in*
"^=", # matches
]
* Beachten Sie, dass diese Operatoren nur über die API verfügbar sind
Einen Kostenbericht erstellen
Anfrage-Parameter
| Argument | Beschreibung |
|---|---|
| start_date (erforderlich) | Das Startdatum für den Kostenbericht. Format: JJJJ-MM-TT |
| end_date (erforderlich) | Das Enddatum für den Kostenbericht. Format: JJJJ-MM-TT |
| abmessungen (erforderlich) | Durch Kommata getrennte Liste der Dimensionen, die in den Bericht aufgenommen werden sollen. Beispiel: dimensions=vendor,region |
| metriken (erforderlich) | Durch Kommata getrennte Liste von Metriken, die in den Bericht aufgenommen werden sollen. Beispiel: metrics = total_amortized_cost,usage_hours |
| Filter | Filter, der auf den Bericht angewendet werden soll. Die Filter können auf Dimensionen oder Metriken basieren. Hinweis : Der Abfrageparameter filters gilt nur für einen einzigen Filter. Mehrere Abfrageparameter für mehrere Filter verwenden Beispiel : Filter = transaction_type%3D%3Dusage Wichtig: der Vergleichsoperator sollte generell URL kodiert sein (wie oben), um Probleme mit Sonderzeichen zu vermeiden |
| sortieren | Durch Kommata getrennte Liste von Maßnahmen, die jeweils mit ASC oder DESC angehängt werden, um die Reihenfolge anzugeben (Reihenfolge ist erforderlich). Beispiel: sort = total_amortized_costASC,regionDESC |
| Begrenzung | Die maximale Anzahl der zurückzugebenden Zeilen. Beispiel: grenze = 50 |
| Versatz | Startposition für die Ergebnisse. Beispiel: Offset = 100 |
| Diagramm | Formatieren Sie die Zeilendaten für Diagrammzwecke (basierend auf Datumsangaben). Beispiel: Tabelle = 1 |
| Ansichts-ID | Wird dies nicht angegeben, wird die Standardansicht des Benutzers verwendet. Nicht eingeschränkte Benutzer können view_id = 0 setzen, um die Ansicht zu entfernen. |
| applyAllocations | Wenn der optionale Parameter auf "true" gesetzt ist, enthält der Bericht Informationen über die nachverrechneten Kosten. Fehlt sie hingegen oder ist sie auf "false" gesetzt, enthält der Bericht Angaben zu den prozentualen Kosten. |
Hinweis: Relative/dynamische Datumszeichenfolgen werden vom Endpunkt v3 cost reporting unterstützt:
| Relative/ dynamische Datumsangaben |
|---|
| "vor 7 Tagen um 00:00:00" |
| "vor 8 Tagen um 00:00:00" |
| "vor 10 Tagen um 00:00:00" |
| "vor 14 Tagen um 00:00:00" |
| "vor 30 Tagen um 00:00:00" |
| "vor 31 Tagen um 00:00:00" |
| "vor 60 Tagen um 00:00:00" |
| "vor 90 Tagen um 00:00:00" |
| "Beginn des letzten Tages" |
| "Anfang der letzten Woche" |
| "Anfang des letzten Monats", "0 des letzten Monats" |
| "Anfang des letzten Quartals" |
| "Anfang des letzten Halbjahres" |
| "Anfang des letzten Jahres" |
| "Beginn des Tages", "Beginn des heutigen Tages" |
| "Anfang der Woche", "Anfang dieser Woche" |
| "Anfang des Monats", "Anfang dieses Monats", "1." |
| "Beginn des Zeitraums", "Beginn dieses Zeitraums" |
| "Anfang des Quartals", "Anfang dieses Quartals" |
| "Anfang der Hälfte", "Anfang dieser Hälfte" |
| "Anfang des Jahres", "Anfang dieses Jahres" |
| "heute um 00:00:00" |
| "00:00:00" |
| "23:59:59" |
| "gestern um 00:00:00" |
| "gestern um 23:59:59" |
| "Ende des letzten Tages" |
| "Ende der letzten Woche" |
| "Ende des letzten Monats" |
| "Ende des letzten Quartals" |
| "Ende des letzten Halbjahres" |
| "Ende des letzten Jahres" |
| "Ende der letzten Woche bis heute" |
| "Ende des letzten Monats bis heute" |
| "Ende des letzten Quartals bis heute" |
| "Ende des letzten Jahres bis heute" |
| "Ende des Tages", "Ende des Tages" |
| "Ende der Woche", "Ende dieser Woche" |
| "Ende des Monats", "Ende dieses Monats" |
| "Ende des Quartals", "Ende dieses Quartals" |
| "Ende der Hälfte", "Ende dieser Hälfte" |
| "Ende des Jahres", "Ende dieses Jahres" |
| "Ende des nächsten Tages" |
| "Ende nächster Woche" |
| "Ende des nächsten Monats" |
| "Ende des nächsten Quartals" |
| "Ende des nächsten Halbjahres" |
| "Ende des nächsten Jahres" |
Handhabung der Paginierung
Die Paginierung wird implementiert, wenn die Anzahl der Zeilen in einem zurückgegebenen Bericht 10.000 übersteigt. Dies tritt in der Regel auf, wenn Benutzer mehrere Dimensionen zu einem Bericht hinzufügen, die eine hohe Kardinalität aufweisen, wie z. B. resource_identifier. Der Wert von total_results von 10.000 und das Vorhandensein eines Paginierungsobjekts zeigen an, dass eine Paginierung stattgefunden hat.
Beispiel für ein Paginierungsobjekt:
"pagination": {
"next": "38bc18d0",
"previous": "1d93c71e"
Um zwischen den Seiten eines Berichts zu navigieren, fügen Sie am Ende des Berichts URL einen Token-Abfrageparameter mit dem entsprechenden Token-ID-Wert hinzu (z. B. Token = 38bc18d0 ).
Hinweis : Sie können die Auto-Pagination auf 64.000 Zeilen erhöhen, indem Sie in den Abfrageparametern limit = 0 setzen
Führen Sie einen typischen Kostenbericht durch - gruppiert nach Cloud-Anbieter mit amortisierten Kosten
curl ‘https://api.cloudability.com/v3/reporting/cost/run?start_date=2022-02-01&end_date=2022-02-28&dimensions=vendor&metrics=total_amortized_cost&sort=total_amortized_costASC&filters=transaction_type%3D%3Dusage’ -u ‘[auth_token]:’
Beispiel Antwort
{
"results": [
{
"total_amortized_cost": "5334044.71",
"vendor": "Azure"
},
{
"total_amortized_cost": "593944.59",
"vendor": "Amazon"
}
],
"meta": {
"dates": {
"start": "2022-02-01T00:00:00Z",
"end": "2022-02-28T00:00:00Z"
},
"filters": [
{
"comparator": "==",
"value": "usage",
"measure": {
"name": "transaction_type",
"label": "Transaction Type",
"description": "A new dimension ...",
"data_type": "string",
"type": "dimension",
"group": {
"ID": 2,
"Key": "billing",
"Name": "Billing"
},
"sub_group": {
"ID": 6,
"Key": "usage",
"Name": "Usage"
}
}
}
],
"metrics": [
{
"name": "total_amortized_cost",
"label": "Cost (Amortized)",
"description": "This cost is ...",
"data_type": "currency",
"type": "metric",
"group": {
"ID": 2,
"Key": "billing",
"Name": "Billing"
},
"sub_group": {
"ID": 3,
"Key": "costs",
"Name": "Costs"
}
}
],
"dimensions": [
{
"name": "vendor",
"label": "Vendor",
"description": "Vendor that provided the product",
"data_type": "string",
"type": "dimension",
"group": {
"ID": 2,
"Key": "billing",
"Name": "Billing"
},
"sub_group": {
"ID": 7,
"Key": "vendor",
"Name": "Vendor"
}
}
],
"aggregates": [
{
"name": "total_amortized_cost",
"label": "Cost (Amortized)",
"description": "This cost is ...",
"data_type": "currency",
"type": "metric",
"value": "5927989.3"
}
]
},
"offset": 0,
"pagination": {},
"limit": 10000,
"total_results": 2
}
Erzeugen eines Berichts mit Kostendaten und späteres Abrufen der Ergebnisse
Diese Option ist anwendbar, wenn es lange dauert, bis ein Bericht zurückkommt, indem die Berichterstellung ausgelöst wird, die Ergebnisse aber erst später abgerufen werden. Der Endpunkt für die asynchrone Kostenberichterstattung nimmt die gleichen Parameter wie die synchrone Kostenberichterstattung, aber anstatt zu warten und den Inhalt des Berichts zurückzugeben, wird stattdessen ein Anfrage-Token zurückgegeben.
Der aktuelle Stand der Verarbeitung wird durch Abfrage der Zustandsressource für das angegebene Token abgefragt. Wenn der Status als "fertig" angegeben wird, kann der Inhalt des Berichts abgerufen werden, indem die Ergebnisressource für das Token angefordert wird. Ein Beispiel ist nachstehend aufgeführt:
curl ‘https://api.cloudability.com/v3/reporting/cost/enqueue?start_date=2022-02-01&end_date=2022-02-28&dimensions=vendor&metrics=total_adjusted_amortized_cost-u ‘[auth_token]:’
Beispiel Antwort
{"id":31272850}
curl ‘https://api.cloudability.com/v3/reporting/cost/enqueue?start_date=2022-02-01&end_date=2022-02-28&dimensions=vendor&metrics=total_adjusted_amortized_cost&useDimensionNames=true -u ‘[auth_token]:’Abfrage des Status eines asynchronen Berichts
Gültige Zustände eines asynchronen Berichts sind in der Warteschlange, in Bearbeitung, fehlerhaft und beendet. Dies kann mit folgendem API-Aufruf abgefragt werden (ersetzen Sie :id durch Ihre Berichts-ID, wie sie vom Enqueue-Aufruf zurückgegeben wird)
curl https://api.cloudability.com/v3/reporting/reports/:id/state -u ‘[auth_token]:’
Beispiel Antwort
{"status":"running"}
Abrufen eines zuvor von Enqueue erstellten Berichts
Berichte, die den Status "fertig" haben, können abgerufen werden. Dies gibt ein Standard-Kostenberichtsobjekt zurück.
curl ‘https://api.cloudability.com/v3/reporting/reports/:id/results’ -u ‘[auth_token]:’
Liste der Musterberichte
Nachfolgend finden Sie einige Beispielberichte, die Ihnen bei der Verwendung der API für Kostenberichte helfen können.
Kostenbericht mit relativen Daten
curl ‘https://api.cloudability.com/v3/reporting/cost/run?start_date=beginning+of+last+quarter&end_date=end+of+last+quarter&dimensions=vendor&metrics=total_adjusted_amortized_cost’ -u ‘[auth_token]:’
Kostenbericht mit Anwendungszuweisungen
curl ‘https://api.cloudability.com/v3/reporting/cost/run?applyAllocations=true&dimensions=vendor&metrics=total_adjusted_amortized_cost’ -u ‘[auth_token]:’
Kosten nach Cloud-Anbieter und Region, gefiltert nach Nutzung und zurückgegeben über CSV
curl -H ‘Accept: text/csv’ ‘https://api.cloudability.com/v3/reporting/cost/run?start_date=2022-02-01&end_date=2022-02-28&dimensions=vendor,region&metrics=total_amortized_cost&filters=transaction_type%3D%3Dusage’ -u ‘[auth_token]:’
Kostenbericht mit mehreren Dimensionen und Filtern (amortisierte Kosten > 100, Region enthält 'us-east-')
curl ‘https://api.cloudability.com/v3/reporting/cost/run?start_date=2022-02-01&end_date=2022-02-28&dimensions=vendor,region,enhanced_service_name&metrics=total_amortized_cost&filters=total_amortized_cost%3E100&filters=region%3D%40us-east-’ -u ‘[auth_token]:’
Wechsel zur nächsten Kostenberichtsseite über Token
curl ‘https://api.cloudability.com/v3/reporting/cost/run?start_date=2022-02-01&end_date=2022-02-28&dimensions=vendor,region,resource_identifier&metrics=total_amortized_cost,usage_hours=&tokenId=e641deae’ -u ‘[auth_token]:’
Verwendung des "IN"-Operators, um Kosteninformationen für zwei Regionen zu erhalten
curl ‘https://api.cloudability.com/v3/reporting/cost/run?start_date=2022-02-01&end_date=2022-02-28&dimensions=region,enhanced_service_name&metrics=total_amortized_cost&filters=region[]%3Dus-east-1,us-west-2’ -u ‘[auth_token]:’