Як я можу контролювати щоденні витрати на AWS?


26

Наша інфраструктура працює на AWS. Хочу отримати щоденний звіт про те, скільки витрачено за попередній день. Який найкращий спосіб це зробити?

Відповіді:


20

Оновлення

Компанія AWS щойно оголосила про загальну доступність функціональних можливостей для моніторингу передбачуваних платежів за використання платіжних сповіщень через Amazon CloudWatch (мабуть, вона доступна на преміальних рахунках AWS вже з кінця 2011 року. Дивіться відповідь Даніеля Лопеса на те, чи є спосіб встановити Amazon AWS ліміт виставлення рахунків? ):

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

Як зазначено у вступному дописі блогу, ви можете почати з використання платіжних сповіщень, щоб повідомити, коли ваш рахунок AWS буде більшим, ніж очікувалося , див. Моніторинг своїх оціночних витрат за допомогою Amazon CloudWatch для отримання детальної інформації щодо цієї функціональності.

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

Щодо останнього, підкреслюється також сфера цієї пропозиції:

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

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


Початковий відповідь

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

  • сповіщення електронною поштою / RSS / тощо.
  • Доступ API до даних

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

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

Їх підхід до ціноутворення [посилання, видалене після припинення вільного ярусу], також оновлює (незважаючи на те, що це очевидно) і просто прив'язується до власних хмарних витрат, таким чином, слід оплатити себе, як тільки ви зрозумієте відповідний потенціал заощадження (вони не стягують плату взагалі нічого, якщо ви витрачаєте менше 2,5 тис. доларів на місяць.
Оновлення 20121016 : На жаль, Cloudability змінив їх модель ціноутворення на більш звичну, яка все ще включає вільний рівень (і в цілому є прийнятною ціною), але видаляє доступ до розширених функцій в ньому, що я вважав освіжаючим справедливим та розумним підходом для користувачів з невеликими бюджетами, які все-таки можуть бути мультиплікаторами в іншому місці або модернізуватися, коли він зростає.

Оновлення 20150115: На жаль, Cloudability вибрав шлях багатьох постачальників фремієвих SaaS і, нарешті, повністю припинив безкоштовний рівень: з 1 лютого ми більше не пропонуємо безкоштовне видання Cloudability, яке ви використовуєте сьогодні .

Оновлення 20120427

Колишній застереження (збережене для посилання нижче) про те, що потрібно вимагати ваших основних облікових даних AWS, більше не застосовується - AWS нещодавно представила нові функції IAM: Керування паролем та доступ до активних облікових записів та звітів про використання :

Ця нова функція дозволяє створювати окремі та чіткі користувачі IAM для ділових та технічних цілей. Ви можете надати своїм діловим користувачам доступ до сторінок "Облікові записи та / або звіти про використання" на веб-сайті AWS, щоб дозволити їм отримувати доступ до даних про виставлення рахунків та використання, не надаючи їм доступ до інших ресурсів AWS, таких як EC2, екземпляри або файли в S3

Cloudability інтегрувала це так, що вам не потрібно , щоб передати їм свої основні AWS облікові даних більше або провела додаткові зусилля по створенню єдиних рахунків для тільки вникнути в хмарних витрати, см Як налаштувати Amazon IAM (Управління ідентифікації облікового запису ) для деталей.

Колишній кавер

Є один застереження, про який слід знати, хоча:

Щоб отримати доступ до своїх даних, вам потрібно буде вручити їм свої головні облікові дані AWS, оскільки в іншому випадку вони, очевидно, не можуть скребити ваш рахунок. Зокрема, для AWS ви все одно можете цього уникнути, полегшивши консолідовану виставлення рахунків , де ви консолідуєте оплату за декілька рахунків Amazon AWS [...], призначивши єдиний платіжний рахунок , який, у свою чергу, не має доступу до ваших обчислювальних ресурсів та даних.


Я щойно зареєструвався в Cloudability, але в їхній пошті я не міг знайти, скільки ми витратили вчора (або за останні 24 години). Вони тільки дають щомісячну оцінку і скільки витрачено до цього часу.
Сабія

2
@sabya - ти, звичайно, маєш рацію, я лише усвідомив щоденний звіт і пропустив цю додаткову вимогу, вибач (я оновив відповідь, щоб це відобразити)! Очевидно, що ви будете робити математику самостійно після 2-го дня, хоча, якщо вона буде доступна прямо на пошті, це було б очевидним поліпшенням і набагато зручнішим, звичайно.
Steffen Opel

12

Використовуючи інструменти 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 балів репутації, щоб розмістити більше 2 посилань. :)

1
Важливо зазначити, що єдиним регіоном, який працює для простору імен "AWS / Billing", є us-1. Я вирвав більшу частину волосся, цікавившись, чому мій рахунок із доступом до виставлення рахунків отримує порожні результати через CLI.
Корі Коул

Лише зауважте, що awscli використовує botocore і ці атрибути, здається, доступні через boto3.readthedocs.io/en/latest/reference/services/…
monkut

Тож чи існує зараз спосіб зробити цю роботу для інших регіонів?
nh2

4

Якщо вам справді потрібен щоденний звіт про витрати, вам потрібно буде використовувати інструмент " Звіт про використання " у своєму обліковому записі AWS. Ви можете запитувати звіт про кожну послугу, яку ви використовуєте, у будь-який часовий період, із деталізацією від години до місяця. Потім він завантажує CSV.

Вам потрібно буде виконати деяку післяобробку для цього CSV (оскільки це не у вартості, а у використанні тощо), але вона надасть вам дані, необхідні для щоденної вартості.


+1 Так, я розумію. Я просто шукав більш простий метод.
Сабія

3

Amazon надає ваші поточні щомісячні платежі тут:

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

Угорі сторінки вказується, наскільки поточні дані. Я вважаю, що це затримується на кілька годин.

Це найточніша та найсучасніша запис, яку ви можете отримати від Amazon чи когось іншого на даний момент.


2

Можливо, цей модуль Python в Github може допомогти вам почати: pyec2costs (для зарезервованих або замовлених випадків).


2

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


1

Погляньте на Ксервмон. Вони забезпечують щоденні витрати та використання додаткової аналітики на історичні дані. Вони є майбутнім постачальником послуг з детальною інтеграцією з Amazon AWS, запланованими на наступні 3 місяці.

Деякі скріншоти з мого поточного рахунку наведені нижче. http://cloudmaya.net/~develop/demo/Slide1.jpg http://cloudmaya.net/~develop/demo/Slide2.jpg

Купа професіоналів побудувала, і це досить акуратно.


1

Ось простий скрипт, який демонструє, як розібрати та проаналізувати детальний CSV-файл для виставлення рахунків AWS:

Це повинно бути досить просто, щоб ви могли побудувати свій власний аналіз!


1

Використання команди CostExplorer AWS CLI Можна відновити показники витрат та використання для облікового запису

Для Ex: Якщо вам потрібно відновити вартість з початку місяця до сьогоднішнього дня, ви можете скористатися командою нижче.

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

Якщо вам потрібно отримати вартість щоденно, використовуйте GRANULARITY як DAILY, як показано нижче:

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

0

Я бачив, як компанії створюють власні інструменти для цього - в основному вони записують сторінку виставлення рахунків AWS та на власну інформаційну панель, показують поточну вартість, і в одному прикладі вони поділяють її на дні місяця, що минув , і кілька разів, щоб отримати орієнтовну загальну вартість місяця.

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

Справжній святий грааль для такої послуги, як AWS, полягає не лише в тому, щоб відстежувати щоденні витрати, а й показувати ефективність (вартість + використання = ефективність), а також підкреслювати можливості для економії (тобто: разів використовувати зарезервовані або спотові екземпляри)


Ед Байм правильно. Є ряд постачальників. Захватність однакова, як і CloudVertical. Однак всі вони мають велику вагу і дорогі рішення з великою кількістю функцій, які ви, ймовірно, ніколи не будете використовувати. Натомість розгляньте BillGist.com (розкриття: я працюю тут), що дуже дешево, і електронні листи, про які ви повідомляєте прямо у своїй папці "Вхідні".

0

Існує інструмент для перегляду Вашого використання рахунків AWS, де ви можете нарізати та порізати кубик своїм використанням у різних ресурсах AWS до 30 хвилин. Більш ретельну відповідь я опублікував на /programming//a/37585673/1526342


0

Тепер це можна зробити за допомогою API Explorer Cost. Наприклад, ви можете легко отримати доступ через awscli / boto3, але справа в тому, що це набагато простіше, ніж раніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.