Rapporti di utilizzo Punto finale
Gli endpoint dei report di utilizzo vengono utilizzati per analizzare i modelli di utilizzo delle istanze di AWS EC2. Utilization Analytics utilizza i dati provenienti da Cloudwatch di AWS, che presenta dettagli a livello di istanza quali l'utilizzo medio della CPU (percentuale), la larghezza di banda e l'I/O del disco. Le analisi di utilizzo sono ottime per visualizzare l'elasticità complessiva e se le istanze necessitano di un ridimensionamento o devono essere disattivate.
Le metriche dei costi rese disponibili in Utilization Analytics sono calcolate in Cloudability utilizzando tariffe on-demand e coprono solo la parte di calcolo della fattura (cioè le ore di istanza fatturabili, ma non la larghezza di banda, lo storage e così via). In quanto tali, devono essere utilizzati solo per i trend e non per la rendicontazione finanziaria. Si noti che la metrica è indicata come Costo (stimato).
Si noti che per consentire a Utilization Analytics di accedere ai dati sull'utilizzo, è necessario disporre di credenziali avanzate sui rispettivi account dei membri, che consentiranno di ottenere le autorizzazioni IAM appropriate.
Sono disponibili filtri, ordinamenti e selezioni di misure (dimensioni e metriche) flessibili per creare risultati che soddisfino le esigenze specifiche di reporting. Come linea guida consigliata, è possibile aggiungere a una chiamata API un massimo di 15 dimensioni e 10 metriche. Per impostazione predefinita, i risultati vengono restituiti in JSON. Per ottenere risultati in formato CSV, assicurati di impostare l'intestazione Accept con un valore di text/csv. Si noti che la paginazione viene implementata quando i risultati superano le 10.000 righe, come descritto di seguito. In fondo a questo documento sono riportati esempi di chiamate di report.
Rapporto di utilizzo Punto finale
- /reporting/reports/util per elencare i rapporti di utilizzo attuali
- /reporting/util/run per l'esecuzione di rapporti di utilizzo
- /reporting/util/measures per l'elenco delle misure di reporting sull'utilizzo disponibili
- /reporting/util/filters per elencare gli operatori di confronto disponibili utilizzati nei filtri
- /reporting/util/enqueue per l'interrogazione dei rapporti di util
- /reporting/reports/:id/state per controllare lo stato dei report in attesa di risposta
- /reporting/reports/:id/results per recuperare i report finiti in lista d'attesa
L'oggetto Rapporto di utilizzo
- results (array) - elenco di oggetti riga di utilizzo, ogni riga comprende le dimensioni e le metriche riportate
- meta (oggetto) - oggetto contenente le meta informazioni sul report che è stato eseguito
- date (oggetto) - stringhe di date iniziali e finali che segnano l'intervallo di date del report
- filtri (array) - elenco dei filtri applicati al report con informazioni dettagliate
- metrics (array) - elenco delle metriche restituite nel report con informazioni dettagliate
- dimensions (array) - elenco delle dimensioni restituite nel report con informazioni dettagliate
- aggregati (array) - elenco di metriche aggregate con informazioni dettagliate per il report
- offset (numero) - Posizione da cui partire per i risultati. L'impostazione predefinita è 0
- limit (numero) - Numero massimo di righe di utilizzo che possono essere restituite
- total_results (numero) - Totale righe di utilizzo restituite per il report eseguito
Esempio di rapporto di utilizzo (esempio di revisione)
{
"results": [
{
"instance_identifier": "i-1237aa0e1587577f5",
"max_cpu_utilization": "0.91925"
},
{
"instance_identifier": "i-0007aa0e1587572c7",
"max_cpu_utilization": "0.179183"
}
],
"meta": {
"dates": {
"start": "2022-08-30T00:00:00Z",
"end": "2022-08-30T00:00:00Z"
},
"filters": [],
"metrics": [
{
"name": "max_cpu_utilization",
"label": "CPU Utilization (Max)",
"description": "The maximum percentage of CPU Utilization...
"data_type": "percentage",
"type": "metric",
"group": {
"ID": 9,
"Key": "compute",
"Name": "Compute"
},
"sub_group": {
"ID": 12,
"Key": "processing",
"Name": "Processing"
}
}
],
"dimensions": [
{
"name": "instance_identifier",
"label": "Instance ID",
"description": "The ID associated with a particular AWS instance.",
"data_type": "string",
"type": "dimension",
"group": {
"ID": 9,
"Key": "compute",
"Name": "Compute"
},
"sub_group": {
"ID": 1,
"Key": "common",
"Name": "Common"
}
}
],
"aggregates": [
{
"name": "max_cpu_utilization",
"label": "CPU Utilization (Max)",
"description": "The maximum percentage of CPU Utilization...",
"data_type": "percentage",
"type": "metric",
"value": "0.91925"
}
]
},
"offset": 0,
"limit": 2,
"total_results": 2
}
Elenco dei rapporti di utilizzo attuali
Recupera un elenco di rapporti di utilizzo di proprietà o condivisi con l'utente o l'organizzazione.
curl 'https://api.cloudability.com/v3/reporting/reports/util' -u '[auth_token]:'
Esempio di risposta
[
{
"id": 1,
"author": {
"id": 12345,
"safe_name": "Test User"
},
"category": "Utilization",
"custom": true,
"description": "The number of instances running during each hour of the day over the last 7 days.",
"dimensions": [
{
"name": "date",
"label": "Date",
"description": "The calendar date (e.g. YYYY-MM-DD).",
"data_type": "date",
"type": "dimension",
"group": {
"id": 9,
"key": "compute",
"name": "Compute"
},
"sub_group": {
"id": 2,
"key": "time",
"name": "Time"
}
},
{
"name": "hour",
"label": "Hour",
"description": "The numeric hour of the day (e.g. 1pm => 13).",
"data_type": "integer",
"type": "dimension",
"group": {
"id": 9,
"key": "compute",
"name": "Compute"
},
"sub_group": {
"id": 2,
"key": "time",
"name": "Time"
}
}
],
"end_date": "23:59:59",
"filters": [
{
"comparator": "==",
"measure": {
"name": "date",
"label": "Date",
"description": "The calendar date (e.g. YYYY-MM-DD).",
"data_type": "date",
"type": "dimension",
"group": {
"id": 9,
"key": "compute",
"name": "Compute"
},
"sub_group": {
"id": 2,
"key": "time",
"name": "Time"
}
},
"value": "2019-06-24"
}
],
"metrics": [
{
"name": "running_instances",
"label": "Unique Instance Count",
"description": "The total number of unique instances in a running state during a given time period.",
"data_type": "integer",
"type": "metric",
"group": {
"id": 9,
"key": "compute",
"name": "Compute"
},
"sub_group": {
"id": 8,
"key": "usage",
"name": "Usage"
}
}
],
"order": "asc",
"owned_by_user": false,
"shared_with_organization": false,
"permission": {
"actions": [
"read"
]
},
"report_dimension_links": [],
"secondary_end_date": null,
"secondary_start_date": null,
"shared": true,
"shares": [],
"sort_by": "date",
"star": false,
"start_date": "7 days ago at 00:00:00",
"subscriptions": [],
"title": "Elasticity - Running Instances per Hour"
},
]
Ottenere l'elenco delle misure disponibili
Recupera un elenco di misure riconosciute dal server. Misure include sia dimensioni che metriche che possono essere utilizzate nei report. È sufficiente eseguire una GET sull'endpoint delle misure.
curl ‘https://api.cloudability.com/v3/reporting/util/measures’ -u ‘[auth_token]:’
Esempio di risposta
[
{
"name": "avg_cpu_utilization",
"label": "CPU Utilization (Avg)",
"description": "The average percentage of CPU Utilization...",
"type": "metric",
"group": {
"id": 9,
"key": "compute",
"name": "Compute"
},
"sub_group": {
"id": 12,
"key": "processing",
"name": "Processing"
}
},
{
"name": "utilization_hours",
"label": "Utilization Hours",
"description": "The total number of usage hours on an instance ...",
"data_type": "integer",
"type": "metric",
"group": {
"id": 9,
"key": "compute",
"name": "Compute"
},
"sub_group": {
"id": 8,
"key": "usage",
"name": "Usage"
}
},
]
Ottenere l'elenco degli operatori di filtro disponibili
Recuperare un elenco di operatori di filtro riconosciuti per la richiesta di dati
curl ‘https://api.cloudability.com/v3/reporting/util/filters’ -u ‘[auth_token]:’
Esempio di risposta
[
"<=", # less than or equals
"[]=", # in*
">=" # greater than or equals
"<", # less than
"=@", # contains
"^=", # matches
"===", # strictly equals*
"==", # equals
"!=@", # does not contain
"!=", # not equals
"!==", # strictly not equals*
">", # greater than
"!^=", # does not match
"!$=", #does not end with
"[]!=", # not in*
"$=", #end with
]
* Si noti che questi operatori sono disponibili solo tramite l'API
Eseguire un rapporto di utilizzo
Parametri della richiesta
| Argomento | Descrizione |
|---|---|
| data_inizio (obbligatorio) | La data di inizio del rapporto di utilizzo. Formato: AAAA-MM-GG |
| data_fine (obbligatorio) | La data di fine del rapporto di utilizzo. Formato: AAAA-MM-GG |
| dimensioni (obbligatorio) | Elenco delimitato da una virgola di dimensioni da includere nel report. Esempio: dimensioni=data,dimensione_istanza |
| metriche (obbligatorio) | Elenco delimitato da una virgola di metriche da includere nel report. Esempio: metriche=instanze_in esecuzione, ore_di_utilizzo |
| filtri | Filtro da applicare al rapporto. I filtri possono essere basati su dimensioni o metriche. Nota: il parametro di query filtri è solo per un singolo filtro. Utilizzare più parametri di query per più filtri. Esempio: filters=instance_size=@10xlarge Importante: l'operatore di confronto dovrebbe essere generalmente codificato in URL (come sopra) per evitare problemi con i caratteri speciali |
| ordinare | Elenco di misure delimitato da una virgola, ognuna con ASC o DESC per indicare l'ordine (l'ordine è obbligatorio). Esempio: sort=avg_cpu_utilizationASC,regionDESC |
| limite | Il numero massimo di righe da restituire. Esempio: limit=50 |
| scostamento | Posizione di partenza per i risultati. Esempio: offset=100 |
| grafico | Formattare i dati delle righe per i grafici (in base alle date). Esempio: chart=1 |
| view_id | Se omesso, verrà applicata la vista predefinita dell'utente. Gli utenti senza restrizioni possono impostare view_id=0 per rimuovere la vista. |
Nota: stringhe di date relative/dinamiche supportate dall'endpoint di rendicontazione dei costi v3 :
| Stringhe di date relative/dinamiche |
|---|
| "7 giorni fa alle 00:00:00" |
| "8 giorni fa alle 00:00:00" |
| "10 giorni fa alle ore 00:00:00" |
| "14 giorni fa alle 00:00:00" |
| "30 giorni fa alle 00:00:00" |
| "31 giorni fa alle 00:00:00" |
| "60 giorni fa alle 00:00:00" |
| "90 giorni fa alle 00:00:00" |
| "inizio dell'ultimo giorno" |
| "all'inizio della scorsa settimana" |
| "inizio del mese scorso", "0 del mese scorso" |
| "inizio dell'ultimo trimestre" |
| "inizio dell'ultimo tempo" |
| "all'inizio dell'anno scorso" |
| "inizio del giorno", "inizio di questo giorno" |
| "inizio settimana", "inizio settimana" |
| "inizio mese", "inizio mese", "1°" |
| "inizio del periodo", "inizio di questo periodo" |
| "inizio trimestre", "inizio trimestre" |
| "inizio della metà", "inizio di questa metà" |
| "inizio anno", "inizio anno" |
| "inizio del giorno successivo" |
| "all'inizio della prossima settimana" |
| "all'inizio del prossimo mese" |
| "inizio del prossimo trimestre" |
| "inizio del prossimo semestre" |
| "all'inizio del prossimo anno" |
| "oggi alle 00:00:00" |
| "00:00:00" |
| "23:59:59" |
| "ieri alle 00:00:00" |
| "ieri alle 23:59:59" |
| "fine dell'ultimo giorno" |
| "fine della scorsa settimana" |
| "fine del mese scorso" |
| "fine dell'ultimo trimestre" |
| "fine dell'ultimo tempo" |
| "fine dell'anno scorso" |
| "dalla fine della scorsa settimana ad oggi" |
| "dalla fine del mese scorso ad oggi" |
| "fine dell'ultimo trimestre ad oggi" |
| "dalla fine dell'anno scorso ad oggi" |
| "fine giornata", "fine giornata" |
| "fine della settimana", "fine di questa settimana" |
| "fine mese", "fine mese" |
| "fine trimestre", "fine trimestre" |
| "fine del tempo", "fine del tempo" |
| "fine anno", "fine anno" |
| "fine del giorno successivo" |
| "alla fine della prossima settimana" |
| "fine del prossimo mese" |
| "fine del prossimo trimestre" |
| "fine del prossimo tempo" |
| "alla fine del prossimo anno" |
Gestione della paginazione
Per supportare le prestazioni dell'API, la paginazione viene implementata quando il numero di righe in un report restituito è superiore a 10.000. Ciò si verifica in genere quando gli utenti aggiungono a un report diverse dimensioni che hanno una cardinalità elevata, come ad esempio identificatore_di_risorsa. Il valore di total_results di 10.000 e la presenza di un oggetto di paginazione indicano che la paginazione è avvenuta.
Esempio di oggetto di paginazione:
"pagination": {
"next": "38bc18d0",
"previous": "1d93c71e"
Per navigare avanti e indietro tra le pagine di un report, aggiungere un parametro di query token alla fine del report URL con il valore del token applicabile (ad esempio, token=38bc18d0 ).
Nota : è possibile aumentare l'impaginazione automatica a 64.000 righe impostando limit=0 nei parametri della richiesta
Eseguire un tipico rapporto di utilizzo - tendenze di utilizzo a lungo termine
curl ‘https://api.cloudability.com/v3/reporting/util/run?start_date=2022-01-01&end_date=2022-06-30&dimensions=date&metrics=total_bandwidth,avg_cpu_utilization&sort=dateASC&view_id=0’ -u ‘[auth_token]:’"
Esempio di risposta (sottoinsieme dei risultati mostrati)
{
"results": [
{
"avg_cpu_utilization": "0.84463",
"estimated_cost": "393.12",
"instance_identifier": "i-0a70f28b01f652f14",
"instance_name": "common-operations-ondemand-r5-large-green-Node",
"instance_size": "r5.large",
"total_bandwidth": "2019199735862",
"utilization_hours": "24",
"vendor_account_name": "My Account Name"
},
{
"avg_cpu_utilization": "0.830585",
"estimated_cost": "1071.2",
"instance_identifier": "i-0278b62c3679c7286",
"instance_name": "production-operations-spot-16cpu-64gb-green-Node",
"instance_size": "m5ad.4xlarge",
"total_bandwidth": "864959230667",
"utilization_hours": "9",
"vendor_account_name": "My Account Name"
}
],
"meta": {
"dates": {
"start": "2022-08-30T00:00:00Z",
"end": "2022-08-30T00:00:00Z"
},
"filters": [],
"metrics": [
{
"name": "avg_cpu_utilization",
"label": "CPU Utilization (Avg)",
"description": "The average percentage of CPU Utilization...",
"data_type": "percentage",
"type": "metric",
"group": {
"ID": 9,
"Key": "compute",
"Name": "Compute"
},
"sub_group": {
"ID": 12,
"Key": "processing",
"Name": "Processing"
}
}
],
"dimensions": [
{
"name": "instance_identifier",
"label": "Instance ID",
"description": "The ID associated with a particular AWS instance.",
"data_type": "string",
"type": "dimension",
"group": {
"ID": 9,
"Key": "compute",
"Name": "Compute"
},
"sub_group": {
"ID": 1,
"Key": "common",
"Name": "Common"
}
}
],
"aggregates": [
{
"name": "avg_cpu_utilization",
"label": "CPU Utilization (Avg)",
"description": "The average percentage of CPU Utilization. For EC2, this is the average percentage of allocated EC2 compute units in use for an instance.",
"data_type": "percentage",
"type": "metric",
"value": "0.840516"
}
]
},
"offset": 0,
"pagination": {
"next": "02f296f8"
},
"limit": 2,
"total_results": 2
}
Generare un rapporto sui dati di utilizzo e recuperare i risultati in seguito
Questa opzione è ideale per i report che richiedono più tempo per essere restituiti (a causa dell'elevata cardinalità o della durata), attivando la generazione del report e recuperando i risultati in un secondo momento. Il punto finale del flusso di reporting asincrono prende gli stessi parametri del reporting di utilizzo sincrono, ma invece di attendere e restituire il contenuto del report, restituisce un token di richiesta. Lo stato attuale dell'elaborazione viene recuperato richiedendo la risorsa Stato per il token dato. Quando lo stato è dato come "finito", il contenuto del report può essere recuperato richiedendo la risorsa dei risultati per il token. Un esempio del flusso di dati completo segue la descrizione della risorsa risultati.
curl ‘https://api.cloudability.com/v3/reporting/util/enqueue?start_date=2022-01-01&end_date=2022-06-30&dimensions=date&metrics=total_bandwidth,avg_cpu_utilization&sort=dateASC&view_id=0’ -u ‘[auth_token]:’
curl ‘https://api.cloudability.com/v3/reporting/util/enqueue?start_date=2022-01-01&end_date=2022-06-30&dimensions=date&metrics=total_bandwidth,avg_cpu_utilization&sort=dateASC&view_id=0&useDimensionNames=true' -u ‘[auth_token]:’Esempio di risposta
{"id":31272850}
Interrogare lo stato di un report asincrono
Gli stati validi di un report asincrono sono: in attesa, in esecuzione, errato e terminato. Lo stato può essere interrogato con la seguente chiamata API (sostituire :id con l'ID del report, come restituito dalla chiamata enqueue)
curl https://api.cloudability.com/v3/reporting/reports/:id/state -u ‘[auth_token]:’
Esempio di risposta
{"status":"running"}
Recuperare un rapporto precedentemente generato da Enqueue
È possibile recuperare i rapporti che hanno uno stato di completamento. Restituisce un oggetto rapporto di utilizzo standard
curl ‘https://api.cloudability.com/v3/reporting/reports/:id/results’-u ‘[auth_token]:’]"
Nota importante sulla paginazione: I rapporti in attesa implementano la paginazione in modo simile ai rapporti di utilizzo sincroni. L'unica differenza è che le pagine sono dimensionate a 30.000 righe invece che a 10.000. Ciò significa che i report in attesa non attiveranno la paginazione fino a quando il conteggio delle righe non supererà le 30.000 righe.
Elenco dei report di esempio
Di seguito sono riportati alcuni esempi di report che possono essere utili per l'utilizzo dell'API dei report di utilizzo.
Rapporto di utilizzo con relative date
curl ‘https://api.cloudability.com/v3/reporting/util/run?start_date=0+of+last+month&end_date=end+of+last+month&dimensions=date&metrics=total_bandwidth,avg_cpu_utilization&sort=dateASC&view_id=0’ -u ‘[auth_token]:’
Andamento dell'utilizzo dei tipi di istanza, restituito tramite CSV
curl -H ‘Accept: text/csv’ ‘https://api.cloudability.com/v3/reporting/util/run?start_date=2022-02-01&end_date=2022-02-28&dimensions=instance_size&metrics=utilization_hours,running_instances&sort=utilization_hoursDESC’ -u ‘[auth_token]:’
Istanze ottimizzate di calcolo sottoutilizzate (report con più dimensioni e filtri)
curl 'https://api.cloudability.com/v3/reporting/util/run?start_date=2022-02-01&end_date=2022-02-28&dimensions=instance_size&metrics=utilization_hours%2Crunning_instances&sort=utilization_hoursDESC' -u '[auth_token]:'
Rapporto di utilizzo tipico (rapporto sui giorni dal lancio)
curl ‘https://api.cloudability.com/v3/reporting/util/run?dimensions=launch_date&end_date=2022-08-30&filters=product_name%3D%3DAmazon%20Elastic%20Compute%20Cloud&limit=2&metrics=avg_cpu_utilization&relativePeriods=custom&sort=launch_dateDESC&start_date=2022-08-22&viewId=0’ -u ‘[auth_token]:’