Отслеживание AWS Стоимость продолжает быть очень популярной темой в мире облака. Разумные рассуждения часто потому, что люди удивляются своими счетами в конце месяца. Или, возможно, они думали, что сервис собирался стоить x, но в конце месяца он закончил стоить 2x.
Это не просто проблема для тех из нас, которые новые для AWS. Это проблема, в которой участвуют даже самые опытные разработчики AWS.
Возьми меня на примере, сегодня утром я проснулся до AWS CONCT, который составлял 20 долларов больше, чем то, что я обычно плачу каждый месяц. У меня есть Аварийный тревоги для моей учетной записи , но общий счет до сих пор пришел под этим Так что не было нарушено.
Поэтому я должен был копать и обнаружил, что дополнительные потраты были, потому что я оставил балансировщик нагрузки, работающий в моем счете, что я использовал для тестирования.
Этот сценарий это Очень Общие для людей, потому что очень легко забыть о конкретном ресурсе, который вы создали. Иногда это потому, что мы создали ресурс вручную в консоли AWS. Или мы создали некоторую инфраструктуру через код, но затем пренебрегали, чтобы разорвать его, когда мы закончили с этим.
Для одной из моих продуктов ежемесячные расходы на мой RDS и EC2 Traft являются очень стабильными и предсказуемыми. Но в этом случае, потому что я оставил балансировщик нагрузки, моя стоимость EC2 составляла 20 долларов больше, чем обычно. Поэтому я отправился, чтобы исправить проблему не знать, я оставил балансировщик нагрузки.
Целью этого поста является продемонстрировать, как мы можем использовать бюджеты AWS для создания сигналов счетов на уровне обслуживания. Мы собираемся использовать Террафом Чтобы создать наши бюджеты, поэтому убедитесь, что у вас есть установленные и на вашем пути.
Что мы хотим отслеживать
Ultimate Fantasy Supercross Является ли платформа Fantasy Motorsports, который я запустил около трех лет назад. Он использует пару экземпляров EC2, базу данных RDS и статический веб-сайт в S3. Стоимость моей инфраструктуры очень предсказуема на этом этапе.
Упругие вычислительные облако (EC2) | 19.99 |
Служба реляционной базы данных (RDS) | 35.04 |
Простая служба хранения (S3) | 1.50 |
Как уже упоминалось ранее у меня уже есть учетная сигнализация на уровне счетов, которая уведомляет меня, когда мой счет приближается к знаку 60 долларов. Но я также хочу знать, когда мои прогнозируемые прогнозирующиеся будут нарушать мои месячные ожидания для EC2 и RDS.
Для достижения этого мы собираемся создать два бюджета AWS, один для EC2 и один для RDS, чтобы отправить мне письмо, когда мои прогнозируемые потратывают для каждого из них, будут превзойти мое ожидание.
Создание наших бюджетов
Мы собираемся создать три ресурса на нашем шаблоне террафора. Первый станет учетной сигнализацией на уровне счетов на случай, если у вас их еще нет. Тогда мы создадим два бюджетных ресурса для наших прогнозируемых прогнозов EC2 и RDS.
Давайте начнем с учета выставления счетов на нашу учетную запись.
provider "aws" { region = "us-east-1" } resource "aws_cloudwatch_metric_alarm" "account-billing-alarm" { alarm_name = "account-billing-alarm" comparison_operator = "GreaterThanOrEqualToThreshold" evaluation_periods = "1" metric_name = "EstimatedCharges" namespace = "AWS/Billing" period = "21600" statistic = "Average" threshold = "60" alarm_description = "Billing alarm by account" alarm_actions = [""] dimensions { Currency = "USD" LinkedAccount = " " } }
Здесь у нас есть тревожный тревоги нашей учетной записи. Отслеживает Оценочные харги
для индивидуального аккаунта. Когда эта учетная запись достигает $ 60 USD в расчетных расходах, он отправит уведомление о тревоге на тему SNS, мы указываем в Alarm_actions.
. Вы должны заменить Alarm_cape
С arn of Sns Themic, которая имеет ваш Электронная почта подписана на это Отказ Вам также нужно заменить Linkedaccount
С вашего собственного идентификатора учетной записи AWS.
Мы можем создать тревогу нашей учетной записи, сначала инициализируя наш шаблон.
$ terraform init Initializing provider plugins... - Checking for available provider plugins on https://releases.hashicorp.com... - Downloading plugin for provider "aws" (1.39.0)...
После инициализации нашего шаблона мы можем применить наш шаблон к вашей учетной записи AWS.
$ terraform apply An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: + aws_cloudwatch_metric_alarm.account-billing-alarm .... .... aws_cloudwatch_metric_alarm.account-billing-alarm: Creating... actions_enabled: "" => "true" alarm_actions.#: "" => "1" alarm_actions.321893454: "" => "" alarm_description: "" => "Billing alarm by account" alarm_name: "" => "account-billing-alarm" arn: "" => " " comparison_operator: "" => "GreaterThanOrEqualToThreshold" dimensions.%: "" => "2" dimensions.Currency: "" => "USD" dimensions.LinkedAccount: "" => " " evaluate_low_sample_count_percentiles: "" => " " evaluation_periods: "" => "1" metric_name: "" => "EstimatedCharges" namespace: "" => "AWS/Billing" period: "" => "21600" statistic: "" => "Average" threshold: "" => "60" treat_missing_data: "" => "missing" aws_cloudwatch_metric_alarm.account-billing-alarm: Creation complete after 1s (ID: account-billing-alarm) Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Большой! Теперь у нас есть учетная сигнальная тревога нашей учетной записи, чтобы уведомить нас, когда наш расчетной законопроект будет больше, чем $ 60 USD. Давайте создадим наши бюджеты, чтобы мы могли тревожить, когда наши прогнозируемые потраты на EC2 или RDS превышают наше ожидание.
Продолжайте и добавьте следующие ресурсы на шаблон вашего террафора.
resource "aws_budgets_budget" "ec2-forecast-alarm" { name = "budget-ec2-monthly" budget_type = "COST" limit_amount = "20" limit_unit = "USD" time_period_start = "2018-01-01_00:00" time_unit = "MONTHLY" cost_filters { service = "Amazon Elastic Compute Cloud - Compute" } } resource "aws_budgets_budget" "rds-forecast-alarm" { name = "budget-rds-monthly" budget_type = "COST" limit_amount = "36" limit_unit = "USD" time_period_start = "2018-01-01_00:00" time_unit = "MONTHLY" cost_filters { service = "Amazon Relational Database Service" } }
Здесь у нас есть наши бюджеты для EC2 и RDS. Обратите внимание на Cost_Filters
Используете полностью квалифицированные имена для каждого сервиса, это то, что бюджеты AWS через Terraform ожидают. Мы можем идти вперед и запустить наши Применить
Команда снова, чтобы создать наши новые бюджеты.
$ terraform apply An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: + aws_budgets_budget.ec2-forecast-alarm id:account_id: budget_type: "COST" cost_filters.%: "1" cost_filters.Service: "ec2" cost_types.#: limit_amount: "20" limit_unit: "USD" name: "budget-ec2-monthly" name_prefix: time_period_end: "2087-06-15_00:00" time_period_start: "2018-01-01_00:00" time_unit: "MONTHLY" + aws_budgets_budget.rds-forecast-alarm id: account_id: budget_type: "COST" cost_filters.%: "1" cost_filters.Service: "rds" cost_types.#: limit_amount: "36" limit_unit: "USD" name: "budget-rds-monthly" name_prefix: time_period_end: "2087-06-15_00:00" time_period_start: "2018-01-01_00:00" time_unit: "MONTHLY" Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
Таким образом, у нас сейчас есть два бюджета, настроенные в нашей учетной записи AWS. Первые отслеживает наше трата на EC2 и последние отслеживает наши тратить на RDS. Тем не менее, у нас нет уведомлений, установленных для них. Это Открытая проблема В террафоре, чтобы добавить эту поддержку для aws_budgets.
Ресурс, но на данный момент мы должны сделать это сами.
Добавление уведомлений к нашим бюджетам
Из-за ограничения террафора на сегодня мы должны добавить уведомления на наши бюджеты за пределами нашего шаблона. Мы можем быстро добавить уведомления каждому из наших бюджетов, используя AWS CLI Отказ Чтобы начать, вам нужен номер учетной записи AWS еще раз.
Понятно? Отлично, теперь мы можем запустить следующие команды в нашей командной строке.
$ aws budgets create-notification --account-id--budget-name budget-rds-monthly --notification NotificationType=FORECASTED,ComparisonOperator=GREATER_THAN,Threshold=100,ThresholdType=PERCENTAGE --subscribers SubscriptionType=EMAIL,Address= $ aws budgets create-notification --account-id --budget-name budget-ec2-monthly --notification NotificationType=FORECASTED,ComparisonOperator=GREATER_THAN,Threshold=100,ThresholdType=PERCENTAGE --subscribers SubscriptionType=EMAIL,Address=
Вуаля! Теперь у нас есть два бюджета AWS, сконфигурированные в нашем счете, чтобы уведомить нас, когда наше трата для EC2 или RDS нарушает сумму, которую мы ожидаем.
Заключение
Удивленные стоимостью ваших ресурсов AWS не очень хорошее чувство. Это даже меньше хорошего чувства, когда стоимость не нужна из-за чего-то вроде оставляя балансировщик нагрузки. Поэтому это хорошая идея, чтобы поставить опекуны на место для себя, даже если ваша учетная запись AWS только для личного пользования.
Первое место для начала состоит в том, чтобы иметь сигнал тревоги на уровне аккаунта, чтобы вы знали, когда ваш ежемесячный законопроект будет больше, чем вы ожидали. Следующий шаг, если это необходимо для вашей работы, это делать то, что мы здесь сделали, и добавить тревоги уровня обслуживания.
Вы голодны, чтобы узнать еще больше о Amazon Web Services?
Если вы хотите начать путешествие AWS, но чувствую себя потерянным на том, чтобы начать, рассмотреть Проверка моего курса . Мы сосредоточены на хостинге, защищении и развертывании статических сайтов на AWS. Позволяя нам узнать более 6 различных услуг AWS, как мы их используем. После того, как вы освоили основы, мы можем погрузиться в Два бонусных глава Чтобы покрыть более продвинутые темы, такие как инфраструктура в виде кода и непрерывное развертывание.
Оригинал: «https://dev.to/kylegalbraith/how-to-better-watch-your-aws-costs-before-you-forget-566g»