Informes de utilización Punto final
Los puntos finales de los informes de utilización se utilizan para analizar los patrones de utilización de las instancias de AWS EC2. Utilization Analytics utiliza datos de Cloudwatch de AWS, que presenta detalles a nivel de instancia, como la utilización media de la CPU (porcentaje), el ancho de banda y la E/S del disco. Los análisis de utilización son excelentes para visualizar la elasticidad general y determinar si sus instancias requieren un redimensionamiento o si es necesario desactivarlas.
Las métricas de costes disponibles en Análisis de utilización se calculan en Cloudability utilizando tarifas bajo demanda y cubren únicamente la parte de cálculo de su factura (es decir, las horas de instancia facturables, pero no el ancho de banda, el almacenamiento, etc.). Como tales, deben utilizarse únicamente para tendencias, no para informes financieros. Tenga en cuenta que la métrica se denomina Coste (estimado).
Tenga en cuenta que para que Utilization Analytics pueda acceder a los datos de utilización, es necesario disponer de credenciales avanzadas en las respectivas cuentas de los miembros, que establecerán los permisos IAM adecuados.
Se dispone de una selección flexible de filtrado, clasificación y medidas (dimensiones y métricas) para elaborar resultados que se ajusten a las necesidades específicas de los informes. Como directriz recomendada, hay un máximo de 15 dimensiones y 10 métricas que se pueden añadir a una llamada a la API. Por defecto, los resultados se devuelven en JSON. Para obtener resultados en formato CSV, asegúrese de establecer el encabezado Accept con un valor de text/csv. Tenga en cuenta que la paginación se implementa cuando los resultados superan las 10.000 filas, como se describe a continuación. Al final de este documento encontrará ejemplos de llamadas a informes.
Informe de utilización Punto final
- /reporting/reports/util para listar los informes de utilización actuales
- /reporting/util/run para ejecutar informes de utilización
- /reporting/util/measures para enumerar las medidas de informes de utilización disponibles
- /reporting/util/filters para enumerar los operadores de comparación disponibles utilizados en los filtros
- /reporting/util/enqueue para poner en cola informes de utilidades
- /reporting/reports/:id/state para comprobar el estado de los informes en cola
- /informes/informes/:id/resultados para recuperar los informes en cola finalizados
El objeto de informe de utilización
- resultados (matriz): lista de objetos de fila de utilización, cada fila compuesta por las dimensiones y métricas notificadas
- meta (objeto) - objeto que contiene metainformación sobre el informe ejecutado
- fechas (objeto) - cadenas de fechas de inicio y fin que marcan el intervalo de fechas del informe
- filtros (matriz) - lista de filtros aplicados al informe con información detallada
- métricas (matriz) - lista de métricas devueltas en el informe con información detallada
- dimensions (matriz) - lista de dimensiones devueltas en el informe con información detallada
- agregados (matriz) - lista de métricas agregadas con información detallada para el informe
- offset (número) - Posición donde empezar para los resultados. Por defecto es 0
- limit (número) - Número máximo de filas de utilización que pueden devolverse
- total_results (número) - Total de filas de utilización devueltas por el informe ejecutado
Ejemplo de objeto de informe de utilización (ejemplo de revisión)
{
"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
}
Lista de informes de utilización actuales
Recuperar una lista de informes de utilización que pertenezcan o estén compartidos con el usuario u organización.
curl 'https://api.cloudability.com/v3/reporting/reports/util' -u '[auth_token]:'
Ejemplo de respuesta
[
{
"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"
},
]
Obtener la lista de medidas disponibles
Recupera una lista de medidas reconocidas por el servidor. Medidas incluye tanto dimensiones como métricas que pueden utilizarse en los informes. Basta con realizar un GET en el endpoint de medidas.
curl ‘https://api.cloudability.com/v3/reporting/util/measures’ -u ‘[auth_token]:’
Ejemplo de respuesta
[
{
"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"
}
},
]
Obtener la lista de operadores de filtro disponibles
Recuperar una lista de operadores de filtro reconocidos para solicitar datos
curl ‘https://api.cloudability.com/v3/reporting/util/filters’ -u ‘[auth_token]:’
Ejemplo de respuesta
[
"<=", # 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
]
* Tenga en cuenta que estos operadores sólo están disponibles a través de la API
Ejecutar un informe de utilización
Parámetros de solicitud
| Argumento | Descripción |
|---|---|
| start_date (obligatorio) | La fecha de inicio del informe de utilización. Formato: AAAA-MM-DD |
| end_date (obligatorio) | Fecha de finalización del informe de utilización. Formato: AAAA-MM-DD |
| dimensiones (obligatorio) | Lista delimitada por comas de las dimensiones que se incluirán en el informe. Ejemplo: dimensions=fecha,instance_size |
| métricas (obligatorio) | Lista delimitada por comas de las métricas que se incluirán en el informe. Ejemplo: metrics=instancias_ejecutantes,horas_utilizacion |
| filtros | Filtro que se aplicará al informe. Los filtros pueden basarse en dimensiones o métricas. Nota: el parámetro de consulta de filtros es para un solo filtro. Utilice varios parámetros de consulta para varios filtros. Ejemplo: filters=instance_size=@10xlarge Importante: por lo general, el operador de comparación debe codificarse en URL (como en el caso anterior) para evitar problemas con caracteres especiales |
| Clasificar | Lista de medidas delimitada por comas, cada una con ASC o DESC para indicar el orden (el orden es obligatorio). Ejemplo: sort=avg_cpu_utilizationASC,regionDESC |
| Límite | El número máximo de filas a devolver. Ejemplo: limit=50 |
| desplazamiento | Posición de partida para los resultados. Ejemplo: offset=100 |
| gráfico | Dar formato a los datos de la fila a efectos de gráficos (basados en fechas). Ejemplo: chart=1 |
| view_id | Si se omite, se aplicará la vista por defecto del usuario. Los usuarios sin restricciones pueden configurar view_id=0 para eliminar la vista. |
Nota: Cadenas de fechas relativas/dinámicas admitidas por el punto final de informes de costes v3 :
| Cadenas de fechas relativas/dinámicas |
|---|
| "hace 7 días a las 00:00:00" |
| "hace 8 días a las 00:00:00" |
| "hace 10 días a las 00:00:00" |
| "hace 14 días a las 00:00:00" |
| "hace 30 días a las 00:00:00" |
| "hace 31 días a las 00:00:00" |
| "hace 60 días a las 00:00:00" |
| "hace 90 días a las 00:00:00" |
| "comienzo del último día" |
| "principios de la semana pasada" |
| "principios del mes pasado", "0 del mes pasado" |
| "comienzo del último trimestre" |
| "comienzo de la última mitad" |
| "principios del año pasado" |
| "principio del día", "principio de este día" |
| "principio de semana", "principio de esta semana" |
| "principio de mes", "principio de este mes", "1º" |
| "comienzo del período", "comienzo de este período" |
| "principio del trimestre", "principio de este trimestre" |
| "comienzo de la mitad", "comienzo de esta mitad" |
| "principio de año", "principio de este año" |
| "comienzo del día siguiente" |
| "principios de la semana que viene" |
| "principios del mes que viene" |
| "comienzo del próximo trimestre" |
| "comienzo del próximo semestre" |
| "principios del año que viene" |
| "hoy a las 00:00:00" |
| "00:00:00" |
| "23:59:59" |
| "ayer a las 00:00:00" |
| "ayer a las 23:59:59" |
| "fin del último día" |
| "finales de la semana pasada" |
| "finales del mes pasado" |
| "final del último trimestre" |
| "final de la última mitad" |
| "finales del año pasado" |
| "finales de la semana pasada hasta la fecha" |
| "final del mes pasado hasta la fecha" |
| "final del último trimestre hasta la fecha" |
| "finales del año pasado hasta la fecha" |
| "fin del día", "fin de este día" |
| "fin de semana", "fin de esta semana" |
| "fin de mes", "fin de este mes" |
| "fin de trimestre", "fin de este trimestre" |
| "fin de la mitad", "fin de esta mitad" |
| "fin de año", "fin de este año" |
| "al final del día siguiente" |
| "finales de la semana que viene" |
| "finales del mes que viene" |
| "finales del próximo trimestre" |
| "fin del próximo semestre" |
| "finales del año que viene" |
Paginación
Para mejorar el rendimiento de la API, la paginación se implementa cuando el número de filas de un informe devuelto supera las 10.000. Esto suele ocurrir cuando los usuarios añaden varias dimensiones a un informe que tienen una cardinalidad alta, como resource_identifier. El total_results con un valor de 10.000 y la presencia de un objeto de paginación indica que se ha producido la paginación.
Ejemplo de objeto de paginación:
"pagination": {
"next": "38bc18d0",
"previous": "1d93c71e"
Para navegar hacia atrás y hacia delante entre las páginas de un informe, añada un parámetro de consulta token al final del informe URL con el valor token aplicable (por ejemplo, token=38bc18d0 ).
Nota : Puede aumentar la autopaginación a 64.000 filas configurando limit=0 en los parámetros de la solicitud
Ejecutar un informe de utilización típico: tendencias de utilización a largo plazo
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]:’"
Ejemplo de respuesta (se muestra un subconjunto de los resultados)
{
"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
}
Generar un informe de datos de utilización y recuperar los resultados más tarde
Esta opción es ideal para los informes que tardan más en devolverse (debido a su alta cardinalidad o duración), activando la generación del informe y recuperando los resultados más tarde. El punto final del flujo de informes asíncronos toma los mismos parámetros que los informes de utilización síncronos, pero en lugar de esperar y devolver el contenido del informe, devolverá un token de solicitud. El estado actual de procesamiento se recupera solicitando el recurso de estado para el token dado. Cuando el estado es "finalizado", el contenido del informe puede recuperarse solicitando el recurso de resultados para el token. Un ejemplo del flujo de datos completo sigue a la descripción del recurso de resultados.
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]:’Ejemplo de respuesta
{"id":31272850}
Consultar el estado de un informe asíncrono
Los estados válidos de un informe asíncrono son: en cola, en ejecución, con errores y finalizado. El estado puede consultarse con la siguiente llamada a la API (sustituya :id por el ID de su informe, tal y como se devuelve en la llamada enqueue)
curl https://api.cloudability.com/v3/reporting/reports/:id/state -u ‘[auth_token]:’
Ejemplo de respuesta
{"status":"running"}
Recuperar un informe generado previamente por Enqueue
Los informes que tienen un estado de finalizado se pueden recuperar. Devuelve un objeto de informe de utilización estándar
curl ‘https://api.cloudability.com/v3/reporting/reports/:id/results’-u ‘[auth_token]:’]"
Nota importante sobre la paginación: Los informes en cola implementan la paginación de forma similar a los informes de utilización síncrona. La única diferencia es que las páginas tienen un tamaño de 30.000 filas en lugar de 10.000. Esto significa que los informes en cola no activarán la paginación hasta que el recuento de filas supere las 30.000 filas.
Lista de ejemplos de informes
A continuación encontrará algunos ejemplos de informes que pueden ayudarle a utilizar la API de informes de utilización.
Informe de utilización con fechas relativas
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]:’
Tendencias de uso de tipos de instancia, devueltas a través de 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]:’
Instancias optimizadas de cálculo infrautilizadas (informe con múltiples dimensiones y filtros)
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]:'
Informe de utilización típica (informe de días desde el lanzamiento)
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]:’