Documentación de la API de informes

Resumen

El punto final del informe está destinado a sustituir muchas funciones que anteriormente estaban divididas en una variedad de API de contenedores y está destinado a proporcionar una visión más singular de los datos que alimentan la función de información de los contenedores.

Este endpoint permite el análisis de datos mediante la especificación de métricas específicas a agregar que pueden combinarse con grupos y filtros para recopilar costes.

Punto final

/v3/containers/report

Parámetros de consulta:

Parámetro

Obligatorio Descripción Valor predeterminado Permitido

viewId

No

Cloudability identificador de vista que se puede pasar para permitir el filtrado por identificadores de cuenta Identificador de vista por defecto de la organización 0 (todo si está permitido), cualquier valor numérico configurado

Cuerpo de la solicitud

El cuerpo de la solicitud de informe es un objeto json compuesto por los siguientes atributos clave:

Parámetro

Obligatorio Tipo Ejemplo Valores admitidos

iniciar

fecha 01-06-2024 Cualquier fecha posterior a 2022-01-01

final

fecha 2 de junio de 2024 Cualquier fecha posterior a 2022-01-01, debe ser mayor o igual a la fecha de inicio

costType

serie ajustado Véase: Tipos de costes admitidos

métricas

lista de cadenas ["coste_total", "eficiencia_coste_total"] Véase: Valores métricos admitidos

Límite

entero 10 1-1000

widgetType

Tipo serie superior Ver: Tipos de widgets compatibles

recuento

No lista de cadenas ["grupo"] Ver: Valores de grupo, recuento y filtro admitidos

grupo

No lista de cadenas ["grupo"] Ver: Valores de grupo, recuento y filtro admitidos

filtros

No lista de cadenas ["cluster== {cluster_uuid} "] Ver: Valores de grupo, recuento y filtro admitidos
Clasificar No lista de configuraciones [{"sortMetric":"total_cost","sortOrder":" desc"}] Ver: Configuraciones de clasificación admitidas
paginationToken No serie Ver: Paginación

Tipos de costes admitidos

Tipo de orden

Relación con la interfaz de usuario de los contenedores

ajustado

Efectivo

total_amortizado_ajustado Ajustado amortizado

Valores métricos admitidos

Métrica

Métrica de costes estándar Uso estándar Métrico Notas

cpu/reservado

Se evalúa en función del máximo de recursos solicitados y utilizados
memoria/reserva Se evalúa en función del máximo de recursos solicitados y utilizados
red/rx Los valores de reparto equitativo siempre serán iguales a los valores asignados
red/tx Los valores de reparto equitativo siempre serán iguales a los valores asignados
sistema de archivos/uso
volumen_persistente/uso El uso se determina en función del tamaño solicitado del PV, y es 1:1 con un PVC
gpu/reservado Los valores de reparto equitativo siempre serán iguales a los valores asignados
varios No Se trata de una métrica basada únicamente en los costes

Campos que se pueden solicitar

Nombre de campo

Tipo de campo Métricas admitidas Significado

reparto_coste_total

Agregado

N/A Coste total compartido de todos los tipos de métricas: representa los costes subyacentes agregados de todos los recursos que contribuyen a la consulta
coste_total_asignado Agregado N/A El coste total asignado a todos los tipos de métricas representa el coste utilizado de todos los recursos aportados a la consulta
coste_total_inactivo Agregado N/A Coste ocioso total en todos los tipos de métricas, calculado mediante total_cost_fairshare - total_cost_allocated
eficiencia_coste_total Agregado N/A Eficiencia total de costes en todos los tipos de métricas, calculada mediante total_cost_allocated / total_cost_fairshare
uso_coste_eficacia Agregado N/A Eficacia del coste de utilización en todos los tipos de métricas, calculada mediante una relación entre el coste de utilización y el coste total asignado
{metric} /uso_coste_asignado Por unidad métrica cpu, memoria Coste de utilización por métrica
{metric} /eficiencia_de_coste_de_uso Por unidad métrica cpu, memoria Eficacia del coste de utilización por métrica, calculada mediante un cociente de coste de utilización / coste_total_asignado
{metric} /solicitud Por unidad métrica cpu, memoria, gpu Importe de los recursos solicitados
{metric} /uso Por unidad métrica cpu, memoria, gpu Cantidad de recursos utilizados
{metric} /límite Por unidad métrica cpu, memoria, gpu Límite de recursos, 0 en este caso indica que no se ha establecido ningún límite
{métrico}_coste_parte_proporcional Por unidad métrica Métricas de costes estándar Representación del coste justo de la utilización de la métrica
{métrico}_coste_asignado Por unidad métrica Métricas de costes estándar Representación del coste imputado de la utilización de la métrica
{métrico}_coste_inactivo Por unidad métrica Métricas de costes estándar Fairshare - Representación del coste asignado de la métrica
{métrica}_rentabilidad Por unidad métrica Métricas de costes estándar Valor de los costes asignados/compartidos
{metric} utilización_compartida Por unidad métrica Métricas de costes estándar Valor de utilización del Fairshare
{metric} utilización_asignada Por unidad métrica Métricas de costes estándar Valor de utilización asignado
{métrica}_utilización_inactivo Por unidad métrica Métricas de costes estándar Fairshare - Utilización asignada
{metric} eficiencia_de_utilización Por unidad métrica Métricas de costes estándar Valor de utilización asignado/compartido

Tipos de widgets compatibles

Tipo de widget

Relación con la interfaz de usuario de los contenedores Significado Requisitos Restricciones

superior

Datos de la tabla

Se trata de la representación más habitual de los datos de los contenedores, que devuelve datos agregados a lo largo del periodo de tiempo especificado El grupo no debe contener un período de tiempo

icr

Widgets KPI Esto devuelve un valor singular

Resultado único

Grupo no disponible Paginación no disponible

barra

Gráficos de barras Esto proporciona un conjunto de valores superior/inferior sin respetar la generación de series continuas de datos a lo largo del periodo de tiempo Debe fijarse un grupo horario (por ejemplo: día) La paginación no está disponible

línea

Gráficos de líneas Esto devuelve la serie continua superior/inferior de datos a lo largo del periodo de tiempo Debe fijarse un grupo horario (por ejemplo: día) La paginación no está disponible

Valores de grupo, recuento y filtro admitidos

Grupos, Recuentos y Filtros comparten un conjunto superpuesto de datos accesibles, que pueden utilizarse de las siguientes maneras:

Grupos

Los grupos devuelven resultados agregados por valores únicos en ese campo.

Por ejemplo, la agrupación por clúster devolvería un conjunto de resultados aislados por clúster.

Cuenta

Los recuentos devuelven una sección de resultados que identifica el número de entradas únicas para ese aspecto.

Por ejemplo, un recuento de espacios de nombres devolvería el número total de espacios de nombres dentro de la selección.

Filtros

Los filtros permiten al usuario restringir el conjunto de resultados a sólo un subconjunto de ellos.

Por ejemplo, si se proporciona un filtro de tipo_carga_trabajo==implantación, sólo se obtendrán resultados de las cargas de trabajo identificadas como propiedad de una implantación.

Valor

Significado Ejemplo de valores devueltos Soportes Filtro Grupo de apoyo Soportes Recuento
clúster Identificador único del clúster, se puede recuperar un conjunto completo de estos con asignaciones de nombres desde el punto final de los clústeres XXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
día Permite agrupar los datos por días, debe utilizarse con un widgetType compatible (barra/línea) 01-06-2024 No No No
tipo_carga_trabajo Tipo de propietario de mayor nivel de la carga de trabajo despliegue, cronjob, statefulset, etc
nombre_carga_trabajo Nombre del propietario de más alto nivel de la carga de trabajo mi-nombre-de-servicio
espacio de nombres Espacio de nombres en el que están presentes las cargas de trabajo nombre de mi espacio de nombres
container Nombre del contenedor que se está ejecutando en el clúster mi-nombre-de-contenedor
pod Nombre del pod que se está ejecutando en el clúster mi-nombre-de-pod
nodo Nombre de nodo asignado ip-1.2.3.4.region.compute.internal
nodo_id Identificador del nodo proveedor aws:///region/i-1234
familia_de_instancias Familia de instancias del nodo subyacente t2
categoría_de_instancia Categoría de instancia del nodo subyacente Uso general
tipo_instancia Tipo de instancia del nodo subyacente t2.micro
plan_ahorro Tipo de plan de ahorro aplicado al nodo subyacente ComputeSavingsPlan
tipo_arrendamiento Método de arrendamiento del nodo subyacente Bajo demanda
instancia_reservada Si el nodo subyacente se está ejecutando como parte de un compromiso de instancia reservada S, N
CPU asignable CPU (en micronúcleos) disponibles en el nodo subyacente 48000000
memoria_asignable Memoria (en bytes) disponible en el nodo subyacente 1000000000
gpu_asignable Unidades GPU (en microgpu), disponibles en el nodo subyacente 1000000
región Región en la que se ejecuta el nodo subyacente us-west-2
zona Zona de disponibilidad en la que se ejecuta el nodo subyacente us-west-2a
grupo_nodo Grupo de nodos (si es detectable) del que forma parte el nodo subyacente mi-nodo-grupo
proveedor Proveedor de la nube en la que se ejecuta el clúster AWS, Azure, etc No No
tipo_grupo Tipo de clúster que se está ejecutando eks, gke, openshift, etc No No

Uso de filtros

Los filtros pueden configurarse suministrando los:

  • Atributo filtrado
    • Cualquier valor indicado como filtrable en la lista anterior

  • Operador
    • ==

      • Iguales (distingue mayúsculas de minúsculas)

    • []=

      • Uno de (distingue mayúsculas de minúsculas)

  • Valor filtrado
    • Cualquier valor que el usuario quiera filtrar

Ejemplos:

  • namespace==sistema-kube
    • Filtrará los resultados para mostrar sólo los datos de kube-system

  • workload_type[]=cronjob,job
    • Filtrará los resultados para mostrar sólo datos de cronjobs o trabajos

Configuraciones de clasificación admitidas

Si no se establece, la función de ordenación ordena por defecto por la primera columna métrica especificada en orden descendente. Se configura para garantizar que la paginación sea siempre posible.

Los valores de ordenación deben pasarse en el orden en que el autor de la llamada desea que se produzcan, y pueden especificarse para cualquier valor métrico solicitado.

El ejemplo siguiente ordenaría las filas por eficiencia en orden descendente y, a continuación, por coste_total en orden descendente.

[
  {
    "sortMetric": "total_cost_efficiency",
    "sortOrder": "desc"
   },
   {
     "sortMetric": "total_cost",
     "sortOrder": "desc"
   }
 ]

Paginación

Campo

Tipo Descripción
result.pagination.hasNext booleano Indica si hay una página siguiente
result.pagination.nextToken serie Proporciona un valor de cadena que puede devolverse a la API para obtener el siguiente conjunto de resultados

Si los datos anteriores para la paginación indican que otra página está disponible para su consumo, entonces el valor en "nextToken" puede ser pasado de nuevo a la api a través del parámetro "paginationToken".

Nota:

La solicitud no debe modificarse en ningún otro aspecto, y hacerlo puede provocar errores o que se devuelvan resultados incoherentes.

Ejemplo de EE.UU. (punto final de la API): https://api.cloudability.com/v3/containers/report

Ejemplos de solicitudes

curl --location 'https://api.cloudability.com/v3/containers/report' \
--header 'apptio-opentoken: {token}' \
--header 'apptio-environmentid: {env_id}' \
--header 'Content-Type: application/json' \
--data '{
    "start": "2024-06-10",
    "end": "2024-06-10",
    "costType": "adjusted",
    "metrics": [
	"total_cost"
    ],
    "group": [
	"namespace"
    ],
    "count": [
	"workload_name"
    ],
	"filters": [
		"cluster==XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
	],
    "sort": [
	{
	     "sortMetric": "total_cost",
	     "sortOrder": "desc"
	}
    ],
    "widgetType": "top",
    "limit": 1
}'

Ejemplo de respuesta, incluyendo el token de paginación que puede ser devuelto a la API.

{
    "result": {
	"data": [
	   {
		"count": [
		    {
			"key": "workload_name",
			"value": "20"
		    }
		],
		"dimensions": {
		    "namespace": "my-namespace"
		},
		"metrics": {
		    "total_cost": {
			"unit": "currency",
			"values": [
				100.00
			]
		    }
		}
	    }
	 ],
	"pagination": {
	    "hasNext": true,
	    "nextToken": "veryLongPaginationToken"
	}
   }
}

Este cuerpo de respuesta se divide en la siguiente sección:

Campo

Tipo Significado
result.data []objeto Se trata del cuerpo principal de la respuesta que contiene una serie de elementos identificados por los valores de grupo solicitados
result.data [N].count []mapa [cadena] cadena Representa un conjunto de objetos que contienen el recuento único de valores solicitado
result.data [N].dimensiones map[string] cadena Representa los atributos agrupados de forma única determinados por los atributos agrupados
result.data [N].métricas map[string] objeto Representa los valores métricos agregados. Al agrupar por tiempo, cada unidad de tiempo estará representada por un índice en la matriz "valores"
result.data [N].métrica. {metric}.unit serie La unidad específica para ese tipo de métrica, los valores posibles son: moneda, bytes, microcpu, microgpu, eficiencia
result.data [N].métricas. {metric}.valores []float64 Conjunto de valores que representan los recursos utilizados durante el periodo de tiempo. Al agrupar por días, por ejemplo, cada entrada de la matriz representa un único día