AWS: Cost optimization — обзор Bills, Cost Explorer и контроль расходов

Автор: | 02/11/2021

Продолжим серию по оптимизации расходов в AWS.

Предыдущие посты —AWS: оптимизация расходов – покупка и анализ RDS Reserved Instances, AWS: Cost Explorer – проверка расходов на примере CloudWatch Logs, AWS: Cost optimization – обзор расходов на сервисы и стоимость трафика в AWS.

Теперь, когда мы разобрались за что мы вообще платим в AWS — посмотрим, какие инструменты AWS предоставляет, что бы эти затраты отслеживать и оптимизировать. Все инструменты можно посмотреть тут>>>.

В этом посте рассмотрим два места, с которых стоит начать обзор расходов — это Bills и AWS Cost Explorer. В следующих — потрогаем Trusted Adisor, Compute Optimizer и S3 Analytics.

AWS Bills

Bills полезен тем, что во-первых — даёт детализацию по каждому AWS Region, а во-вторых — детальный отсчёт по затратам каждого сервиса.

Переходим в Billing Management Console, слева выбираем Bills, выбираем интересующий месяц — и получаем полный отчёт о скидках и расходах:

На скриншоте видны скидки Compute Savings Plans — их рассмотрим позже, и EDP Discounts (AWS Enterprise Discount Program — EDP) — это скидка от AWS нашей организации,  т.к. проектов много, и AWS даёт нам значительные скидки (например — скидка в 90% на CloudFront — очень вкусно).

Далее, по каждому сервису в Bills есть детальный расчёт того — за что именно был выставлен счёт, с разбивкой по регионам.

К примеру, счёт за EC2 может выглядеть так:

Теперь, когда получили наглядное представление об общей структуре расходов посмотрим, что нам может рассказать Cost Explorer.

AWS Cost Explorer

Cost Explorer — наверное основной иструмент для контроля расходов.

Переходим в AWS Cost Management > Cost Explorer, выбираем интересующий период, в Group by выбираем Service, и посмотрим основные расходы тут:

На самом графике видим топ-5 сервисов, на которые тратим деньги, а в табличке под ним — полный список.

Cost allocation tags

Очень полезная штука — Cost Allocation Tags, которая позволяет в Cost Explorer разделить расходы по тегам.

К примеру, у нас есть теги Tier и Env. Tier указывает команду, которой ресурс принадлежит (DevOps, Backend, QA, etc), а Env — окружение (Dev, Stage, Prod).

Используя их — можем получить статистику по нужным группам ресурсов:

Расходы на EC2-Instacnes с отрицательным значением — это скидки на ресурсы, в данном случае это Saving Plans.

Cost Explorer: Group by и Filters

В Cost Explorer у нас есть два основных инструмента — Group by и Filters.

К примеру, что бы посмотреть детализацию расходов по типам EC2-инстансов — в Group by выбираем Instance Type, а в FiltersEC2-Instances:

Ещё полезная опция в Filters — это Usage Type Group, позволяющая отобразить расходы по конкретной категории, например, что бы отобразить расходы на обработку данных NAT Gateway с разбивкой по окружениям — используем Group by Tag: Env и Filters Usage Type Group: EC2: NAT Gateway — Data Processed:

Описание всех Usage Type Group — см. Filter and group options.

AWS Resource Groups Tag editor и EC2 Global View

Хотя Tag Editor не относится к Cost Explorer, но раз мы видим расходы EC2-инстансы без тега Tier — надо найти их.

Тут очень полезен Tag Editor, который позволяет и найти ресурсы по заданным (или наоборот — не заданным тегам), и сразу же обновить, добавив нужные теги на пачку ресурсов.

К примеру, найти все EC2 во всех регионах без тега Tier можно так:

Также, инстансы можно найти через недавно появившийся инструмент в AWS Console — EC2 Global View:

Cost Explorer — информация о трафике

Раз уж мы коснулись Data Transfer, то давайте посмотрим как с помощью Cost Explorer можно проверить сколько мы платим за трафик, и за что именно.

Например, отобразить информацию о том, сколько трафика было передано через EC2-инстансы — используем такой фильтр:

С группировкой по сервисам:

Либо сгруппировать по API Operations:

Или применить в Filters выборку по Usage Type и Group By: Service:

Reports

В Reports имеется набор уже готовых репортов для Cost Explorer:

И туда же можно сохранить свои репорты с набором Group by, Filters и периодом времени, что бы в следующий раз не настраивать выборку заново:

Cost Explorer: что такое «EC2-other»?

Наверно — самый часто задаемый вопрос по AWS Cost Explorer, в том числе мной.

Собственно — что входит в EC2-Other, и почему он такой дорогой? На самом первом графике туда уходит почти 170 долларов из 800:

Посмотрим. Выбираем в Filters: EC2-Other, а в Group byUsage type:

И тут сразу всё видно:

В Others включены прочие расходы, например — Elastic IP, которые не подключены ни к одному инстансу:

В целом, в EC2-Other включены расходы на:

  • EBS-диски: операции I/O, и provisioned storage (сколько места на EBS выделено по всему аккаунту), snapshots (хранение, передача данных)
  • CPUCredits: доплата за burst инстансов T2/3/4
  • NAT Gateways: количество обработанных байт, время работы в часах
  • Data Transfer: передача данных между AWS Availability Zones (cross-AZ traffic)
  • Elastic IP: EIP, не подключенные к EC2

Ссылки по теме