Назад | Перейти на главную страницу

Как я могу отслеживать ежедневные расходы на AWS?

Наша инфраструктура находится на AWS. Я хочу получать ежедневный отчет о том, сколько потрачено за предыдущий день. Как лучше всего это сделать?

Обновить

AWS только что объявил об общедоступной функциональности для Отслеживание примерных расходов с помощью уведомлений о выставлении счетов через Amazon CloudWatch (очевидно, он был доступен для премиум-аккаунтов AWS с конца 2011 года, см. ответ Даниэля Лопеса на Есть ли способ установить лимит выставления счетов Amazon AWS?):

Мы регулярно оцениваем общую ежемесячную плату за каждый сервис AWS, который вы используете. Когда вы включаете мониторинг для своей учетной записи, мы начинаем сохранять оценки в виде метрик CloudWatch, где они будут доступны в течение обычного 14-дневного периода. [...]

Как указано во вводной записи блога, Вы можете начать с использования оповещений о выставлении счетов, чтобы сообщить, когда ваш счет за AWS будет выше ожидаемого., видеть Отслеживайте свои расчетные расходы с помощью Amazon CloudWatch для получения дополнительных сведений об этой функции.

Это уже довольно полезно для многих основных потребностей, однако, используя CloudWatch API самостоятельно получить сохраненные метрики (см. GetMetricStatistics) на самом деле позволяет вам управлять произвольными рабочими процессами и бизнес-логикой на основе этих данных, и, конечно, вы можете сгенерировать ежедневный отчет о том, сколько потрачено в предыдущий день вроде так тоже.

Что касается последнего, также подчеркивается объем этого предложения:

Важно отметить, что это оценки, а не прогнозы. Оценка примерная стоимость использования AWS на сегодняшний день в рамках текущего платежного цикла и будет увеличиваться по мере того, как вы продолжаете потреблять ресурсы. [...] Он не принимает во внимание тенденции или потенциальные изменения в вашей модели использования AWS. [курсив мой]

То есть степень детализации отчетных показателей еще предстоит проанализировать (я вижу точки данных каждые 4-8 часов, но не обязательно обновляю значения каждый раз, как можно было бы ожидать на самом деле), поэтому для получения достаточно точного ежедневного отчета может потребоваться статистическая постобработка.


Первоначальный ответ

К сожалению, это не так просто, как можно было бы подумать, особенно с учетом того, что желаемые данные можно проверить вручную через вашу учетную запись. Можно ожидать двух вариантов мониторинга:

  • уведомления по электронной почте / RSS / и т. д.
  • API-доступ к данным

Ни AWS, ни какой-либо другой поставщик IaaS / PaaS / SaaS, о котором я знаю, в настоящее время не предлагает API-доступ к своим учетным данным (возможно, из-за потенциальных финансовых / юридических последствий), делая любую форму сторонней интеграции (что было бы легко делать в наши дни) в лучшем случае громоздко, поскольку вам нужно прибегнуть к веб-парсингу для извлечения данных в первую очередь.

К счастью, недавно появилось новое предложение от Cloudability [ссылка удалена после прекращения поддержки уровня бесплатного пользования], чтобы сделать это для вас профессионально и независимо от поставщика, мы уже с большим успехом используем его специально для AWS - в настоящее время вы получить ежедневный (или реже) отчет только о ваших ежемесячных расходах хотя, то есть еще не с разбивкой на ваши ежедневные расходы. Добавление ежедневного увеличения, конечно, было бы тривиальным делом, поэтому я надеюсь и ожидаю, что они сделают больше подобной информации со временем.

Их подход к ценообразованию [ссылка удалена после прекращения использования уровня бесплатного пользования] также обновляется (несмотря на то, что он очевиден) и просто привязан к вашим собственным облачным расходам, поэтому должен окупиться, как только вы осознаете соответствующий потенциал экономии (они не взимают что угодно, если вы тратите менее 2,5 тысяч долларов в месяц).
Обновление 20121016: К сожалению, облачность изменила свою модель ценообразования на более распространенную, которая по-прежнему включает в себя бесплатный уровень (и в целом имеет разумную цену), но закрывает доступ к расширенным функциям в нем, что я считал очень справедливым и разумным подходом для пользователей с небольшим бюджеты, которые могут по-прежнему быть мультипликаторами в других местах или обновляться, когда они в них входят.

Обновление 20150115: К сожалению, Cloudability выбрала путь многих поставщиков бесплатных услуг SaaS и, наконец, полностью отказалась от уровня бесплатного пользования: С 1 февраля мы больше не будем предлагать бесплатную версию Cloudability, которую вы используете сегодня..

Обновление 20120427

Прежнее предостережение (сохранено для справки ниже) о необходимости ваших основных учетных данных AWS больше не применяется - AWS недавно представила Новые функции IAM: управление паролями и доступ к страницам отчетов об активности и использовании учетной записи:

Эта новая функция позволяет создавать отдельных пользователей IAM для деловых и технических целей. Вы можете предоставить своим бизнес-пользователям доступ к страницам «Активность учетной записи» и / или «Отчеты об использовании» на веб-сайте AWS, чтобы они могли получить доступ к данным о выставлении счетов и использовании, не предоставляя им доступа к другим ресурсам AWS, таким как экземпляры EC2 или файлы в S3.

Облачность теперь также интегрирована, поэтому вам больше не нужно передавать им свои основные учетные данные AWS или тратить дополнительные усилия на создание Единый биллинг просто чтобы получить представление о расходах на облако, см. Как настроить Amazon IAM (управление учетными записями личных данных) для подробностей.

Бывшая оговорка

Однако есть одно предостережение, о котором следует знать заранее:

Чтобы получить доступ к своим данным, вам необходимо передать им свои основные учетные данные AWS, потому что в противном случае они, очевидно, не смогут очистить вашу учетную запись. В частности, для AWS этого можно избежать, Единый биллинг, где ты консолидировать платежи для нескольких учетных записей Amazon AWS [...] путем создания единой учетной записи для оплаты, который, в свою очередь, не имеет доступа к вашим вычислительным ресурсам и данным.

С помощью awscli инструменты, вы можете получить итоговую сумму за месяц:

$ 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

Для получения дневной дельты можно вычесть итоги за два разных дня. Или оценку можно получить за один раз, увеличив временное окно (end-time - start-time) до 24 часов и вычитая самую раннюю точку данных из самой последней.

Ноты:

  • предполагает, что вы включили мониторинг ваших расчетных расходов
  • предполагает, что у вас есть GNU date (для других dates, например, в OSX, date -v-12H может работать)
  • ваша валюта может отличаться
  • Amazon обновляет метрику CloudWatch каждые ~ 4 часа, поэтому запрос для временного окна меньше 4 часов может не вернуть никаких точек данных. Для большей безопасности я использовал 12-часовое окно.
  • Я хотел включить ссылку на сообщение в блоге, на котором был основан мой ответ, но, видимо, мне нужно 10 очков репутации, чтобы разместить более двух ссылок. :)

Если вам действительно нужен ежедневный отчет о расходах, вам нужно использовать "Отчет об использовании"в вашем аккаунте AWS. Вы можете запросить отчет для каждой службы, которую вы используете, за любой период времени, с детализацией от часа до месяца. Затем он загружает CSV.

Вам нужно будет выполнить некоторую пост-обработку этого CSV (так как это не по стоимости, а по использованию и т. Д.), Но он предоставит вам данные, необходимые для повседневной оплаты.

Amazon предоставляет информацию о ваших текущих расходах за месяц до даты здесь:

http://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=activity-summary

Вверху страницы он показывает, насколько актуальны данные. Я считаю, что это задержка на несколько часов.

Это самая точная и актуальная запись, которую вы можете получить от Amazon или кого-либо еще в настоящее время.

Возможно, этот модуль Python на Github поможет вам начать работу: pyec2costs (для зарезервированных инстансов или инстансов по требованию).

Netflix предлагает новый инструмент под названием Ice с открытым исходным кодом: https://github.com/Netflix/ice который позволяет визуализировать платежные данные, полученные через отчеты AWS, созданные в ваших корзинах S3.

Взгляните на Xervmon. Они предоставляют повседневные расходы и использование в дополнение к исторической аналитике. Это новый поставщик услуг, чья детальная интеграция с Amazon AWS запланирована в ближайшие 3 месяца.

Некоторые скриншоты из моей текущей учетной записи приведены ниже. http://cloudmaya.net/~develop/demo/Slide1.jpg http://cloudmaya.net/~develop/demo/Slide2.jpg

Кучу профессионалов построили и довольно аккуратно.

Вот простой скрипт, демонстрирующий, как разобрать и проанализировать ваш подробный CSV-файл биллинга AWS:

Должно быть достаточно просто, чтобы вы могли построить свой собственный анализ!

Использование команды командной строки CostExplorer AWS. Можно получить показатели стоимости и использования для учетной записи.

Например: если вам нужно получить стоимость с начала месяца по сегодняшний день, вы можете использовать следующую команду.

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

Выход: 615.6129260967

Если вам нужно получать стоимость ЕЖЕДНЕВНО, используйте ГРАНУЛЯРНОСТЬ как ЕЖЕДНЕВНО, как показано ниже:

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

Я видел, как компании создают для этого свои собственные инструменты - в основном они удаляют страницу биллинга AWS и свою собственную панель управления, отображают текущую стоимость, а в одном примере они делят ее на прошедшие дни месяца. , и умножьте это, чтобы получить приблизительную общую стоимость месяца.

AWS пока не предлагает API биллинга (я уверен, что они появятся в будущем), но есть несколько внешних сервисов, которые могут помочь. Один из них - CloudVertical (раскрытие: я работаю здесь), где вы можете получить свои ежедневные, ежемесячные и почасовые расходы с разбивкой по услугам и для нескольких учетных записей.

Настоящий святой Грааль для такого сервиса, как AWS, заключается не только в отслеживании ежедневных расходов, но и в демонстрации понимания эффективности (затраты + использование = эффективность), а также в выявлении возможностей экономии (например, времени использования зарезервированных или спотовых инстансов)

Есть инструмент для просмотра использования AWS Billing Usage, где вы можете разделить и сократить использование различных ресурсов AWS до 30 минут. Я опубликовал более подробный ответ на https://stackoverflow.com/a/37585673/1526342

Теперь это можно сделать с помощью Cost Explorer API. Вы можете очень легко получить доступ, например, через awscli / boto3, но дело в том, что это намного проще, чем раньше.