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
Hinweis: Der Endpunkt reporting/ util/ enqueue ist auf 20 Anfragen pro Benutzer begrenzt. Die Antwort "429" wird zurückgesendet, wenn eine neue Anfrage bei diesem Schwellenwert eingeht.

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

Hinweis: Hinweis zu den Parametern für das Start-/Enddatum: Neben statischen Datumsstrings im Format JJJJ-MM-TT unterstützen diese Endpunkte auch relative Datumsangaben wie "Anfang dieser Woche", "Ende dieser Woche" Alle unterstützten relativen Datumszeichenfolgen sind unterhalb dieser Tabelle aufgeführt. Zum Beispiel würde "vor 7 Tagen" in der Benutzeroberfläche ein Startdatum von "vor 7 Tagen um 00:00:00" und ein Enddatum von "heute um 00:00:00" in der API verwenden. Beachten Sie auch, dass die nachstehenden relativen Datumszeichenfolgen die Leerzeichen in der Zeichenfolge mit einem "+"-Symbol oder "%20" richtig kodieren müssen. Beispiel: "Ende+des+letzten+Monats". Wenn der Anwendungsfall in der Benutzeroberfläche unterstützt wird, wird er auch in der API unterstützt.
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}
Bei der Erstellung eines Berichts können Benutzer entscheiden, ob die exportierten Business-Mapping-Spalten die Business-Mapping-ID oder den Mapping-Namen als Spaltenüberschrift verwenden sollen, indem sie die Option „ "useDimensionNames" “ (wahr/falsch) in der Anfrage verwenden:
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]:’