Como posso monitorar os gastos diários na AWS?


26

Nossa infraestrutura está na AWS. Quero obter um relatório diário sobre quanto gastou no dia anterior. Qual é a melhor maneira de fazer isso?

Respostas:


20

Atualizar

A AWS acaba de anunciar a disponibilidade geral da funcionalidade para monitorar cobranças estimadas usando alertas de cobrança via Amazon CloudWatch (aparentemente ela já está disponível para contas premium da AWS desde o final de 2011, consulte a resposta de Daniel Lopez em Existe uma maneira de configurar o Amazon AWS limite de faturamento? ):

Estimamos regularmente a cobrança mensal total de cada serviço da AWS que você usa. Quando você ativa o monitoramento de sua conta, começamos a armazenar as estimativas como métricas do CloudWatch, onde permanecerão disponíveis pelo período normal de 14 dias. [...]

Conforme descrito na publicação introdutória do blog, você pode começar usando os alertas de cobrança para saber quando sua conta da AWS será maior que o esperado , consulte Monitorar suas cobranças estimadas usando o Amazon CloudWatch para obter mais detalhes sobre essa funcionalidade.

Isso já é bastante útil para muitas necessidades básicas; no entanto, o uso das APIs do CloudWatch para recuperar você mesmo as métricas armazenadas (consulte GetMetricStatistics ) permite gerar fluxos de trabalho arbitrários e lógica de negócios com base nesses dados e, é claro, você pode gerar um relatório diário sobre quanto gastou no dia anterior também.

Em relação a este último, o escopo desta oferta também é enfatizado:

É importante observar que essas são estimativas, não previsões . A estimativa aproxima o custo de seu uso da AWS até o momento no ciclo de faturamento atual e aumentará à medida que você continuar consumindo recursos . [...] Não leva em consideração tendências ou possíveis mudanças no seu padrão de uso da AWS. [ênfase minha]

Ou seja, a granularidade das métricas relatadas ainda precisa ser analisada (vejo pontos de dados a cada 4 a 8 horas, mas não necessariamente valores atualizados a cada vez, como seria de esperar), portanto, obter um relatório diário suficientemente preciso pode exigir alguma pós-processamento estatístico.


Resposta inicial

Infelizmente, isso é menos direto do que se poderia pensar, especialmente porque os dados desejados podem ser inspecionados manualmente através da sua conta. Há duas opções de monitoramento que se esperaria:

  • notificações via email / RSS / etc.
  • Acesso da API aos dados

Nem a AWS nem qualquer outro fornecedor de IaaS / PaaS / SaaS de que eu conheço oferecem acesso à API para seus dados contábeis atualmente (talvez devido às implicações financeiras / legais em potencial), criando qualquer forma de integração de terceiros (o que seria fácil de hoje em dia), na melhor das hipóteses, complicado, na medida em que você precisa recorrer à raspagem na Web para recuperar os dados em primeiro lugar.

Felizmente, uma nova oferta da Cloudability entrou em cena recentemente para fazer exatamente isso de uma maneira profissional e independente de fornecedor, estamos usando com grande sucesso já especificamente para a AWS - você atualmente no entanto, receba apenas um relatório diário (ou menos frequente) dos seus gastos mensais , ou seja, ainda não está dividido nos seus gastos diários. Adicionar o aumento diário seria trivial, é claro, então espero e espero que eles disponibilizem mais informações como essa ao longo do tempo.

A abordagem deles para os preços [link removido após a descontinuação da camada gratuita] também é atualizada (apesar de óbvia) e simplesmente ligada aos seus próprios gastos em nuvem; portanto, deve se pagar assim que você perceber o respectivo potencial de economia (eles não cobram qualquer coisa, se você gastar menos de US $ 2,5 mil / mês).
Atualização 20121016 : Infelizmente, a Cloudability mudou seu modelo de preços para um modelo mais comum, que ainda inclui uma camada gratuita (e é um preço razoável em geral), mas remove o acesso aos recursos avançados, que eu considerava uma abordagem agradável e inteligente para os usuários. com orçamentos pequenos, que ainda podem ser multiplicadores em outros lugares ou fazer upgrade depois de crescer.

Atualização 20150115: Infelizmente, a Cloudability escolheu o caminho de muitos fornecedores de freemium SaaS e finalmente interrompeu completamente o nível gratuito: a partir de 1º de fevereiro, não ofereceremos mais a edição Cloudability Free que você está usando hoje .

Atualização 20120427

O ex ressalva (mantido para referência abaixo) de exigir que suas credenciais principais AWS não se aplica mais - AWS recentemente introduzidos New IAM Características: Senha gestão e acesso a Atividade da conta e Uso Relatórios Páginas :

Esse novo recurso permite criar usuários separados e distintos do IAM para fins comerciais e técnicos. Você pode conceder aos usuários de negócios acesso às páginas de Atividade da conta e / ou Relatórios de uso do site da AWS para permitir que eles acessem dados de cobrança e uso sem conceder a eles acesso a outros recursos da AWS, como instâncias ou arquivos do EC2 no S3

Agora, a cloudability também integrou isso, portanto, você não precisa mais fornecer suas principais credenciais da AWS ou gastar o esforço extra para estabelecer o Faturamento consolidado apenas para obter informações sobre seus gastos na nuvem, consulte Como configurar o Amazon IAM (Gerenciamento de contas de identidade) ) para obter detalhes.

Advertência anterior

Há uma advertência que você deve estar ciente de que existe:

Para acessar seus dados, você precisará entregar suas principais credenciais da AWS, pois, caso contrário, elas não poderão raspar sua conta, obviamente. Para a AWS em particular, você ainda pode evitar isso facilitando o Faturamento consolidado , onde consolida o pagamento para várias contas Amazon AWS [...] designando uma única conta paga , que por sua vez não tem acesso aos seus recursos e dados de computação.


Acabei de me inscrever no Cloudability, mas no e-mail deles não consegui descobrir quanto gastamos ontem (ou nas últimas 24 horas). Eles estão apenas dando estimativas mensais e quanto é gasto até agora.
— Sabya

2
@sabya - você está certo, é claro, só realizei relatórios diários e perdi esse requisito adicional, desculpe (atualizei a resposta para refletir isso)! Obviamente, será trivial para você fazer as contas sozinho após o segundo dia, embora tê-las disponíveis pelo correio seria uma melhoria óbvia e muito mais conveniente, é claro.
— Steffen Opel

12

Usando as ferramentas awscli , você pode obter seu total mensal:

$ aws --region us-east-1 cloudwatch get-metric-statistics \
    --namespace "AWS/Billing" \
    --metric-name "EstimatedCharges" \
    --dimension "Name=Currency,Value=USD" \
    --start-time $(date +"%Y-%m-%dT%H:%M:00" --date="-12 hours") \
    --end-time $(date +"%Y-%m-%dT%H:%M:00") \
    --statistic Maximum \
    --period 60 \
    --output text | sort -r -k 3 | head -n 1 | cut -f 2

2494.47

Os totais de dois dias diferentes podem ser subtraídos para obter o delta diário. Ou, uma estimativa pode ser obtida de uma só vez, aumentando a janela de tempo ( end-time- start-time) para 24h e subtraindo o ponto de dados mais antigo do último.

Notas:

  • assume que você ativou o monitoramento de suas cobranças estimadas
  • assume que você tem GNU date(para outros dates, por exemplo, no OSX, date -v-12Hpode funcionar)
  • sua moeda pode variar
  • A Amazon atualiza a métrica do CloudWatch a cada ~ 4h, portanto, consultar uma janela de tempo menor que 4h pode não retornar nenhum ponto de dados. Eu usei uma janela de 12 horas para ser mais seguro.
  • Eu queria incluir um link para a postagem do blog em que minha resposta se baseava, mas aparentemente eu preciso de 10 pontos de reputação para postar mais de 2 links. :)

1
É importante observar que a única região que funciona para o espaço de nome 'AWS / Billing' é us-east-1. Rasguei muito do meu cabelo, me perguntando por que minha conta com acesso ao faturamento estava obtendo resultados vazios por meio da CLI.
— Corey Cole

Apenas uma nota, que os usos awscli botocore e esses atributos parecem ser acessível através boto3.readthedocs.io/en/latest/reference/services/...
— monkut

Então, agora há uma maneira de fazer isso funcionar para outras regiões?
— Nh2 05/10

4

Se você realmente precisa de um relatório de custos diário, use a ferramenta " Relatório de uso " na sua conta da AWS. Você pode solicitar um relatório para cada serviço que usar, em qualquer período que desejar, em granularidade de hora a mês. Em seguida, ele baixa um CSV.

Você precisará fazer um pós-processamento nesse CSV (já que não está no custo, mas no uso etc), mas fornecerá os dados necessários para que você tenha um custo diário.


+1 Sim, eu entendo. Eu estava apenas procurando um método mais fácil.
— Sabya


2

Talvez este módulo Python no Github possa ajudá-lo a começar: pyec2costs (para instâncias reservadas ou sob demanda).


2

Existe uma ferramenta relativamente nova de código aberto da Netflix, chamada Ice: https://github.com/Netflix/ice, que permite visualizar os detalhes de cobrança conforme recuperados através dos relatórios da AWS gerados em seus buckets S3.



1

Aqui está um script simples que demonstra como analisar e analisar seu arquivo CSV de cobrança detalhado da AWS:

Deve ser fácil o suficiente para que você possa criar sua própria análise!


1

Usando o comando CLI da AWS CostExplorer É possível recuperar as métricas de custo e uso da conta

Por exemplo: se você precisar recuperar o custo do início do mês até os dias atuais, poderá usar o comando abaixo.

aws ce get-cost-and-usage --time-period Start=$(date -u -d "$TODAY" '+%Y-%m-01'),End=$(date -u +"%Y-%m-%d" --date="+1 day") --granularity MONTHLY --metrics UnblendedCost --output text | sort -r -k 3 | head -n 1 | cut -f 2

Saída: 615.6129260967

Se você precisar obter o custo DIARIAMENTE, use GRANULARIDADE como DIARIAMENTE, conforme mostrado abaixo:

aws ce get-cost-and-usage --time-period Start=$(date -u -d "$TODAY" '+%Y-%m-01'),End=$(date -u +"%Y-%m-%d" --date="+1 day") --granularity DAILY --metrics UnblendedCost

0

Vi empresas criarem suas próprias ferramentas internas para isso - basicamente elas descartam a página de faturamento da AWS e em seu próprio painel, exibem o custo atual e, em um exemplo, dividem-na pelos dias do mês que passou e vários para obter o custo total estimado do mês.

A AWS ainda não oferece uma API de cobrança (tenho certeza de que no futuro), mas existem alguns serviços externos que podem ajudar. Um deles é o CloudVertical (divulgação: trabalho aqui), onde você pode obter seus custos diários, mensais e por hora, discriminados por serviço e para várias contas.

O verdadeiro Santo Graal para um serviço como a AWS, porém, não é apenas rastrear os gastos diários, mas mostrar informações sobre eficiência (custo + uso = eficiência) e também destacar oportunidades de economia (por exemplo: horários para usar instâncias reservadas ou pontuais)


Ed Byme está correto. Existem vários fornecedores. Cloudability é um como é CloudVertical. No entanto, todos eles são muito pesados ​​e soluções caras, com muitos recursos que você provavelmente nunca usará. Em vez disso, considere BillGist.com (divulgação: eu trabalho aqui), que é super barato e envia e-mails que você informa diretamente na sua caixa de entrada.


0

Agora você pode fazer isso com a API do Cost Explorer. Você pode acessar muito facilmente via awscli / boto3, por exemplo, mas o ponto é que é muito mais fácil do que antes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.