Ponto final dos relatórios de utilização
Os pontos finais dos relatórios de utilização são usados para analisar os padrões de utilização das instâncias do AWS EC2. A Análise de Utilização utiliza dados do Cloudwatch do AWS, que apresenta detalhes ao nível da instância, tais como a utilização média da CPU (percentagem), largura de banda e E/S do disco. A análise de utilização é excelente para visualizar a elasticidade geral e se suas instâncias precisam de um dimensionamento correto ou precisam ser desativadas.
As métricas de custo disponibilizadas no Utilization Analytics são calculadas em Cloudability usando taxas sob demanda e abrangem apenas a parte de computação da sua fatura (ou seja, as horas de instância faturáveis, mas não a largura de banda, o armazenamento etc.). Dessa forma, eles devem ser usados apenas para tendências, não para relatórios financeiros. Observe que a métrica é chamada de Custo (estimado).
Observe que, para que o Utilization Analytics possa acessar os dados de utilização, é necessário ter credenciais avançadas nas respectivas contas de membros, o que colocará em prática as permissões IAM adequadas.
A filtragem, a classificação e a seleção de medidas (dimensões e métricas) flexíveis estão disponíveis para criar resultados que atendam a necessidades específicas de relatórios. Como diretriz recomendada, há um máximo de 15 dimensões e 10 métricas que podem ser adicionadas a uma chamada de API. Por padrão, os resultados são retornados em JSON. Para obter resultados no formato CSV, certifique-se de definir o cabeçalho Accept com o valor text/csv. Observe que a paginação é implementada quando os resultados excedem 10.000 linhas, conforme descrito abaixo. Exemplos de chamadas de relatório são fornecidos na parte inferior deste documento.
Ponto final do relatório de utilização
- /reporting/reports/util para listar os relatórios de utilização atuais
- /reporting/util/run para executar relatórios de utilização
- /reporting/util/measures para listar as medidas de relatórios de utilização disponíveis
- /reporting/util/filters para listar os operadores de comparação disponíveis usados nos filtros
- /reporting/util/enqueue para enfileirar relatórios utilitários
- /reporting/reports/:id/state para verificar o estado dos relatórios enfileirados
- /reporting/reports/:id/results para recuperar relatórios concluídos na fila
O objeto Relatório de utilização
- results (array) - lista de objetos de linha de utilização, cada linha composta de dimensões e métricas relatadas
- meta (objeto) - objeto que contém informações meta sobre o relatório que foi executado
- dates (objeto) - cadeias de datas iniciais e finais que marcam o intervalo de datas do relatório
- filters (array) - lista de filtros aplicados ao relatório com informações detalhadas
- metrics (matriz) - lista de métricas retornadas no relatório com informações detalhadas
- dimensions (matriz) - lista de dimensões retornadas no relatório com informações detalhadas
- agregados (matriz) - lista de métricas agregadas com informações detalhadas para o relatório
- offset (número) - Posição em que os resultados devem começar. O padrão é 0
- limit (number) - Número máximo de linhas de utilização que podem ser retornadas
- total_results (number) - Total de linhas de utilização retornadas para o relatório executado
Exemplo de objeto de relatório de utilização (exemplo de revisão)
{
"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
}
Listar relatórios de utilização atuais
Recupera uma lista de relatórios de utilização pertencentes ou compartilhados com o usuário ou a organização.
curl 'https://api.cloudability.com/v3/reporting/reports/util' -u '[auth_token]:'
Exemplo de resposta
[
{
"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"
},
]
Obtenção de uma lista de medidas disponíveis
Recupera uma lista de medidas reconhecidas pelo servidor. As medidas incluem dimensões e métricas que podem ser usadas em relatórios. Basta executar um GET no ponto de extremidade das medidas.
curl ‘https://api.cloudability.com/v3/reporting/util/measures’ -u ‘[auth_token]:’
Exemplo de resposta
[
{
"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"
}
},
]
Obter uma lista de operadores de filtro disponíveis
Recupere uma lista de operadores de filtro reconhecidos para solicitar dados
curl ‘https://api.cloudability.com/v3/reporting/util/filters’ -u ‘[auth_token]:’
Exemplo de resposta
[
"<=", # 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
]
* Observe que esses operadores estão disponíveis somente por meio da API
Executar um relatório de utilização
Parâmetros de solicitação
| Argumento | Descrição |
|---|---|
| start_date (obrigatório) | A data de início do relatório de utilização. Formato: AAAA-MM-DD |
| end_date (obrigatório) | A data final do relatório de utilização. Formato: AAAA-MM-DD |
| dimensões (obrigatório) | Lista delimitada por vírgulas de dimensões a serem incluídas no relatório. Exemplo: dimensions=date,instance_size |
| métricas (obrigatório) | Lista delimitada por vírgulas de métricas a serem incluídas no relatório. Exemplo: metrics=running_instances,utilization_hours |
| filtros | Filtro a ser aplicado ao relatório. Os filtros podem ser baseados em dimensões ou métricas. Observação: o parâmetro de consulta filters serve apenas para um único filtro. Use vários parâmetros de consulta para vários filtros. Exemplo: filters=instance_size=@10xlarge Importante: o operador de comparação geralmente deve ser codificado em URL (como acima) para evitar problemas com caracteres especiais |
| ordenar | Lista de medidas delimitada por vírgulas, cada uma anexada com ASC ou DESC para indicar a ordem (a ordem é obrigatória). Exemplo: sort=avg_cpu_utilizationASC,regionDESC |
| limite | O número máximo de linhas a serem retornadas. Exemplo: limit=50 |
| offset | Posição para iniciar os resultados. Exemplo: offset=100 |
| diagrama | Formatar os dados da linha para fins de gráfico (com base em datas). Exemplo: chart=1 |
| ID da visualização | Se omitido, a visualização padrão do usuário será aplicada. Usuários sem restrições podem definir view_id=0 para remover a visualização. |
Observação: cadeias de datas relativas/dinâmicas compatíveis com o endpoint de relatório de custos v3 :
| Cadeias de datas relativas/dinâmicas |
|---|
| "7 dias atrás, às 00:00:00" |
| "8 dias atrás, às 00:00:00" |
| "10 dias atrás, às 00:00:00" |
| "14 dias atrás, às 00:00:00" |
| "30 dias atrás, às 00:00:00" |
| "31 dias atrás, às 00:00:00" |
| "60 dias atrás, às 00:00:00" |
| "90 dias atrás, às 00:00:00" |
| "início do último dia" |
| "início da semana passada" |
| "início do mês passado", "0 do mês passado" |
| "início do último trimestre" |
| "início da última metade" |
| "início do ano passado" |
| "beginning of day" (início do dia), "beginning of this day" (início deste dia) |
| "início da semana", "início desta semana" |
| "início do mês", "início deste mês", "1º" |
| "início do período", "início deste período" |
| "início do trimestre", "início deste trimestre" |
| "início da metade", "início desta metade" |
| "início do ano", "início deste ano" |
| "início do dia seguinte" |
| "início da próxima semana" |
| "início do próximo mês" |
| "início do próximo trimestre" |
| "início da próxima metade" |
| "início do próximo ano" |
| "hoje às 00:00:00" |
| "00:00:00" |
| "23:59:59" |
| "ontem às 00:00:00" |
| "ontem às 23:59:59" |
| "fim do último dia" |
| "final da semana passada" |
| "final do mês passado" |
| "final do último trimestre" |
| "fim da última metade" |
| "final do ano passado" |
| "final da semana passada até a data" |
| "final do último mês até a data" |
| "final do último trimestre até a data" |
| "final do ano passado até a data" |
| "end of day", "end of this day" (fim do dia) |
| "final da semana", "final desta semana" |
| "fim do mês", "fim deste mês" |
| "final do trimestre", "final deste trimestre" |
| "end of half" (fim da metade), "end of this half" (fim desta metade) |
| "final do ano", "final deste ano" |
| "final do dia seguinte" |
| "final da próxima semana" |
| "final do próximo mês" |
| "final do próximo trimestre" |
| "fim da próxima metade" |
| "final do próximo ano" |
Manuseio de paginação
Para dar suporte ao desempenho da API, a paginação é implementada quando o número de linhas em um relatório retornado excede 10.000. Isso geralmente ocorre quando os usuários adicionam várias dimensões a um relatório com alta cardinalidade, como resource_identifier. O total_results com um valor de 10.000 e a presença de um objeto de paginação indicam que a paginação ocorreu.
Exemplo de objeto de paginação:
"pagination": {
"next": "38bc18d0",
"previous": "1d93c71e"
Para navegar para trás e para frente entre as páginas de um relatório, adicione um parâmetro de consulta de token ao final do relatório URL com o valor de token aplicável (por exemplo, token=38bc18d0 ).
Observação : Você pode aumentar a paginação automática para 64.000 linhas definindo limit=0 nos parâmetros da solicitação
Executar um relatório de utilização típico - tendências de utilização de longo prazo
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]:’"
Exemplo de resposta (subconjunto dos resultados mostrados)
{
"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
}
Gerar um relatório de dados de utilização e recuperar os resultados posteriormente
Essa opção é excelente para relatórios que levam mais tempo para retornar (devido à alta cardinalidade ou ao período de tempo), acionando a geração do relatório e recuperando os resultados posteriormente. O ponto final do fluxo de relatório assíncrono usa os mesmos parâmetros do relatório de utilização síncrona, mas, em vez de aguardar e retornar o conteúdo do relatório, retorna um token de solicitação. O estado atual do processamento é recuperado por meio da solicitação do recurso de estado para o token fornecido. Quando o estado é dado como "concluído", o conteúdo do relatório pode ser recuperado solicitando o recurso de resultados para o token. Um exemplo do fluxo de dados completo segue a descrição do 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]:’Exemplo de resposta
{"id":31272850}
Consultar o estado de um relatório assíncrono
Os estados válidos de um relatório assíncrono incluem: enfileirado, em execução, com erro e concluído. O estado pode ser consultado com a seguinte chamada de API (substitua :id pelo ID do relatório, conforme retornado da chamada enqueue)
curl https://api.cloudability.com/v3/reporting/reports/:id/state -u ‘[auth_token]:’
Exemplo de resposta
{"status":"running"}
Recuperar um relatório gerado anteriormente pelo Enqueue
Os relatórios que têm um estado de concluído podem ser recuperados. Isso retorna um objeto de relatório de utilização padrão
curl ‘https://api.cloudability.com/v3/reporting/reports/:id/results’-u ‘[auth_token]:’]"
Observação importante sobre paginação: Os relatórios enfileirados implementam a paginação de maneira semelhante aos relatórios de utilização síncrona. A única diferença é que as páginas são dimensionadas para 30.000 linhas em vez de 10.000. Isso significa que os relatórios enfileirados não acionarão a paginação até que a contagem de linhas ultrapasse 30.000 linhas.
Lista de exemplos de relatórios
Abaixo estão alguns exemplos de relatórios que podem ajudá-lo com o uso da API de relatórios de utilização.
Relatório de utilização com datas 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]:’
Tendências de uso do tipo de instância, retornadas por meio 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]:’
Instâncias otimizadas de computação subutilizadas (relatório com várias dimensões e 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]:'
Relatório de utilização típica (relatório de dias desde o lançamento)
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]:’