¿Cómo puedo controlar el gasto diario en AWS?

26

Nuestra infraestructura está en AWS. Quiero obtener un informe diario sobre cuánto gastó el día anterior. ¿Cuál es la mejor manera de hacerlo?

Sabya
fuente

Respuestas:

20

Actualizar

AWS acaba de anunciar la disponibilidad general de la funcionalidad para monitorear los cargos estimados mediante alertas de facturación a través de Amazon CloudWatch (aparentemente ya ha estado disponible para las cuentas premium de AWS desde finales de 2011, consulte la respuesta de Daniel López a ¿Hay alguna manera de configurar Amazon AWS? límite de facturación? ):

Regularmente estimamos el cargo mensual total por cada servicio de AWS que utiliza. Cuando habilita la supervisión de su cuenta, comenzamos a almacenar las estimaciones como métricas de CloudWatch, donde permanecerán disponibles durante el período habitual de 14 días. [...]

Como se describe en la publicación introductoria del blog, puede comenzar utilizando las alertas de facturación para informarle cuándo su factura de AWS será más alta de lo esperado ; consulte Supervisar sus cargos estimados con Amazon CloudWatch para obtener más detalles sobre esta funcionalidad.

Esto ya es bastante útil para muchas necesidades básicas, sin embargo, el uso de las API de CloudWatch para recuperar las métricas almacenadas usted mismo (consulte GetMetricStatistics ) en realidad le permite impulsar flujos de trabajo arbitrarios y lógica empresarial basada en estos datos, y por supuesto podría generar un informe diario en cuánto gastaron el día anterior también.

Con respecto a esto último, el alcance de esta oferta también se destaca:

Es importante tener en cuenta que se trata de estimaciones, no de predicciones . La estimación aproxima el costo de su uso de AWS hasta la fecha dentro del ciclo de facturación actual y aumentará a medida que continúe consumiendo recursos . [...] No tiene en cuenta las tendencias o posibles cambios en su patrón de uso de AWS. [énfasis mío]

Es decir, la granularidad de las métricas informadas aún no se ha analizado (veo puntos de datos cada 4 a 8 horas, pero no necesariamente valores actualizados cada vez, como cabría esperar en realidad), por lo que derivar un informe diario suficientemente preciso podría requerir algunos post procesamiento estadístico.


Respuesta inicial

Desafortunadamente, esto es menos sencillo de lo que uno pensaría, especialmente dado que los datos deseados pueden inspeccionarse manualmente a través de su cuenta. Hay dos opciones de monitoreo que uno esperaría:

  • notificaciones por correo electrónico / RSS / etc.
  • Acceso API a los datos

Ni AWS ni ningún otro proveedor de IaaS / PaaS / SaaS que conozco ofrecen acceso API a sus datos contables actualmente (tal vez debido a las posibles implicaciones financieras / legales), haciendo cualquier forma de integración de terceros (lo que sería fácil hacer hoy en día) engorroso en el mejor de los casos, en la medida en que necesita recurrir al raspado web para recuperar los datos en primer lugar.

Afortunadamente, una nueva oferta de Cloudability [enlace eliminado después de la interrupción del nivel gratuito] ha entrado en el escenario recientemente para hacer esto por usted de una manera profesional y agnóstica del proveedor, ya la estamos utilizando con gran éxito específicamente para AWS: actualmente sin embargo, recibirá un informe diario (o menos frecuente) de sus gastos mensuales , es decir, aún no se desglosará en sus gastos diarios. Por supuesto, agregar el aumento diario sería trivial, por lo que espero y espero que hagan que más información como esta esté disponible con el tiempo.

Su enfoque de fijación de precios [enlace eliminado después de la interrupción del nivel gratuito] también es refrescante (a pesar de ser obvio) y simplemente está vinculado a su propio gasto en la nube, por lo que debería pagarse tan pronto como se dé cuenta del potencial de ahorro respectivo (no cobran cualquier cosa si gasta menos de $ 2.5k / mes).
Actualización 20121016 : Desafortunadamente, Cloudability ha cambiado su modelo de precios a uno más común, que todavía incluye un nivel gratuito (y tiene un precio razonable en general), pero elimina el acceso a las funciones avanzadas, lo que consideré un enfoque refrescantemente justo e inteligente para los usuarios con presupuestos pequeños, que aún podrían ser multiplicadores en otros lugares o actualizarse una vez que crezcan.

Actualización 20150115: Desafortunadamente, Cloudability ha elegido el camino de muchos proveedores de SaaS freemium y finalmente descontinuó el nivel gratuito por completo: a partir del 1 de febrero, ya no ofreceremos la edición gratuita de Cloudability que está utilizando hoy .

Actualización 20120427

La advertencia anterior (que se mantiene como referencia a continuación) de requerir sus credenciales principales de AWS ya no se aplica: AWS introdujo recientemente nuevas características de IAM: Administración de contraseñas y acceso a las páginas de informes de actividad y uso de la cuenta :

Esta nueva característica le permite crear usuarios de IAM separados y distintos para fines comerciales y técnicos. Puede otorgar a los usuarios de su empresa acceso a las páginas de Actividad de la cuenta y / o Informes de uso del sitio web de AWS para permitirles acceder a los datos de facturación y uso sin darles acceso a otros recursos de AWS, como instancias de EC2 o archivos en S3

Cloudability ahora también ha integrado esto, por lo que ya no necesita entregarles sus credenciales principales de AWS o dedicar un esfuerzo adicional para establecer la facturación consolidada solo para obtener información sobre su gasto en la nube, consulte Cómo configurar Amazon IAM (Gestión de cuentas de identidad) ) para más detalles.

Advertencia anterior

Sin embargo, hay una advertencia que se debe tener en cuenta por adelantado:

Para acceder a sus datos, deberá entregarles sus credenciales principales de AWS, porque de lo contrario, obviamente no pueden raspar su cuenta. Para AWS en particular, aún puede evitar esto facilitando la facturación consolidada , donde consolida el pago de múltiples cuentas de Amazon AWS al designar una cuenta de pago única , que a su vez no tiene acceso a sus recursos informáticos y datos.

Steffen Opel
fuente
Acabo de registrarme en Cloudability pero en su correo no pude encontrar cuánto gastamos ayer (o en las últimas 24 horas). Solo están dando una estimación mensual y cuánto se gasta hasta ahora.
Sabya
2
@sabya: tiene razón, por supuesto, solo me he dado cuenta del informe diario y he perdido este requisito adicional, lo siento (¡He actualizado la respuesta para reflejar esto)! Obviamente, será trivial para usted hacer los cálculos usted mismo después del segundo día, aunque tenerlo disponible por correo sería una mejora obvia y, por supuesto, mucho más conveniente.
Steffen Opel
12

Con las herramientas de awscli , puede obtener su total mensual:

$ 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

Los totales de dos días diferentes se pueden restar para obtener el delta diario. O bien, se puede obtener una estimación de una vez aumentando la ventana de tiempo ( end-time- start-time) a 24 horas y restando el punto de datos más antiguo del más reciente.

Notas:

  • supone que ha habilitado la supervisión de sus cargos estimados
  • asume que tiene GNU date(para otros dates, por ejemplo, en OSX, date -v-12Hpuede funcionar)
  • su moneda puede variar
  • Amazon actualiza la métrica de CloudWatch cada ~ 4 h, por lo que la consulta de una ventana de tiempo menor a 4 h puede no devolver ningún punto de datos. He usado una ventana de 12h para estar más seguro.
  • Quería incluir un enlace a la publicación del blog en el que se basaba mi respuesta, pero aparentemente necesito 10 puntos de reputación para publicar más de 2 enlaces. :)
mpavlov
fuente
1
Es importante tener en cuenta que la única región que funciona para el espacio de nombres 'AWS / Billing' es us-east-1. Me arranqué gran parte del cabello preguntándome por qué mi cuenta con acceso a facturación estaba obteniendo resultados vacíos a través de la CLI.
Corey Cole
Solo una nota, que el awscli usa botocore y estos atributos parecen ser accesibles a través de boto3.readthedocs.io/en/latest/reference/services/…
monkut
Entonces, ¿hay alguna manera de hacer que esto funcione para otras regiones?
nh2
4

Si realmente necesita un informe de costos del día a día, deberá utilizar la herramienta " Informe de uso " en su cuenta de AWS. Puede solicitar un informe para cada servicio que use, en cualquier período de tiempo que desee, en granularidad de una hora a otra. Luego descarga un CSV.

Deberá realizar un procesamiento posterior en ese CSV (ya que no está en costo, sino en uso, etc.), pero le proporcionará los datos que necesita para tener un costo diario.

Jon
fuente
+1 Sí, lo entiendo. Estaba buscando un método más fácil.
Sabya
2

Quizás este módulo de Python en Github pueda ayudarlo a comenzar: pyec2costs (para instancias reservadas o bajo demanda).

Henk
fuente
2

Hay una herramienta bastante nueva de código abierto de Netflix llamada Ice: https://github.com/Netflix/ice que permite visualizar los detalles de facturación recuperados a través de los informes de AWS generados en sus cubos S3.

ngeek
fuente
1

Aquí hay una secuencia de comandos simple que muestra cómo analizar y analizar su archivo CSV de facturación de AWS detallado:

¡Debería ser lo suficientemente fácil para que pueda construir su propio análisis!

oDDsKooL
fuente
1

Uso del comando CostExplorer AWS CLI Es posible recuperar las métricas de costo y uso de la cuenta

Por ejemplo: si necesita recuperar el costo desde el comienzo del mes hasta el día de hoy, puede usar el siguiente comando.

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

Salida: 615.6129260967

Si necesita obtener el costo DIARIO, use GRANULARIDAD como DIARIO como se muestra a continuación:

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
fuente
0

He visto a las compañías construir sus propias herramientas internas para esto: básicamente, desechan la página de facturación de AWS y en su propio tablero, muestran el costo actual y, en un ejemplo, lo dividen por los días del mes que han pasado. y multiplíquelo para obtener el costo mensual total estimado.

AWS todavía no ofrece una API de facturación (estoy seguro de que lo harán en el futuro), pero hay un par de servicios externos que pueden ayudar. Uno es CloudVertical (divulgación: trabajo aquí), donde puede obtener su costo diario, mensual y por hora, desglosado por servicio y para varias cuentas.

Sin embargo, el verdadero santo grial para un servicio como AWS no es solo rastrear el gasto diario, sino también mostrar información sobre la eficiencia (costo + uso = eficiencia) y también resaltar las oportunidades de ahorro (es decir, tiempos para usar instancias reservadas o puntuales)

Ed Byrne
fuente
Ed Byme está en lo correcto. Hay varios proveedores. La capacidad de nublaridad es una, al igual que CloudVertical. Sin embargo, todas son soluciones muy pesadas y costosas con muchas características que probablemente nunca usará. En cambio, considere BillGist.com (divulgación: trabajo aquí), que es muy barato y envía correos electrónicos que informa directamente en su bandeja de entrada.
0

Hay una herramienta para ver su uso de facturación de AWS donde puede dividir y dividir su uso en diferentes recursos de AWS en tan solo 30 minutos. He publicado una respuesta más completa en /programming//a/37585673/1526342

droidlabour
fuente
0

Ahora puede hacer esto con la API de Cost Explorer. Puede acceder muy fácilmente a través de awscli / boto3, por ejemplo, pero el punto es que es mucho más fácil que antes.

cherrysoft
fuente