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?

Sabya
fonte

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.

Steffen Opel
fonte
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. :)
mpavlov
fonte
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.

Jon
fonte
+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).

Henk
fonte
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.

ngeek
fonte
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!

oDDsKooL
fonte
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
Roopa
fonte
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 Byrne
fonte
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

Existe uma ferramenta para visualizar seu uso de faturamento da AWS, no qual você pode fatiar e dividir seu uso em diferentes recursos da AWS em até 30 minutos. Publiquei uma resposta mais completa em /programming//a/37585673/1526342

droidlabour
fonte
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.

cherrysoft
fonte