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
Nota: El punto final reporting/ util/ enqueue está limitado a 20 peticiones por usuario. La "respuesta 429" volverá si se recibe una nueva solicitud en este umbral.

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

Nota : Nota sobre los parámetros de fecha de inicio/fin: Además de cadenas de fechas estáticas en el formato AAAA-MM-DD, estos puntos finales también admiten fechas relativas como "inicio de esta semana", "fin de esta semana" Todas las cadenas de fechas relativas admitidas se enumeran a continuación de esta tabla. Por ejemplo, "hace 7 días" en la interfaz de usuario utilizaría una fecha de inicio de "hace 7 días a las 00:00:00" y una fecha final de "hoy a las 00:00:00" en la API. Tenga en cuenta también que es importante que las cadenas de fechas relativas que se indican a continuación codifiquen correctamente los espacios de la cadena mediante un símbolo "+" o "%20". Ejemplo, "fin+de+último+mes". Si el caso de uso es compatible con la interfaz de usuario, también lo será con la API
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]:’
Al generar un informe, los usuarios pueden decidir si las columnas de mapeo empresarial exportadas deben utilizar el ID de mapeo empresarial o el nombre de mapeo como encabezado de columna utilizando la opción "useDimensionNames" (verdadero/falso) en la solicitud:
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]:’