aws разбивка счетов на компоненты системы и артефакты - PullRequest
1 голос
/ 12 января 2020

Мы запускаем многоуровневое приложение на aws и используем различные aws сервисы, такие как ECS, Lambda и RDS. Ищите решение для сопоставления позиций выставления счетов с фактическими компонентами системы, находя компонент с наибольшей суммой денежных затрат и т. Д. c.

AWS улучшил свои подробные отчеты об использовании затрат и получил API проводника затрат, однако он только разбил выставление счетов за услуги или экземпляры. Однако разбивка каждого экземпляра не приносит особой пользы, если вы ищете стоимость каждого компонента. Какие-либо решения / рекомендации для этого?

1 Ответ

0 голосов
/ 12 января 2020

Теги распределения затрат

Вы можете создать тег, такой как «system» или «app», применить его ко всем своим ресурсам и установить значение для различных приложений / систем / компонентов, которые вы будете использовать sh отслеживать. Затем вы можете go перейти на страницу оплаты, щелкнуть «Метки распределения затрат» и активировать созданный вами тег.

Затем вы можете увидеть затраты с разбивкой по различным значениям этого тега. Они будут отображаться в Обозревателе затрат, тег будет одним из доступных фильтров. Тем не менее, я думаю, что пройдет 24 часа после активации, прежде чем они появятся.

Если вам нужно навязать использование тегов, и у вас есть разработчики, работающие с несколькими компонентами, возможно иметь роли IAM для управления каждым компонентом, каждая роль ограничена взаимодействием с ресурсами с указанным c тег (т.е. они могут изменять только существующие ресурсы с этим тегом, и они могут создавать только новые ресурсы с этим тегом). Разработчик может иметь пользователя IAM (или вы могли бы объединять удостоверения, но это совершенно другой разговор) и позволять им выполнять разные роли в зависимости от того, над каким компонентом они работают. Это дает дополнительное преимущество, облегчая управление кросс-счетами. Однако, это может потребовать нетривиального пересмотра IAM.

Подробнее о тегах распределения затрат здесь: https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html

Разделить границы затрат на AWS account

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

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

В AWS все еще имеется множество возможностей для подключения ресурсов из разных учетных записей, и нетрудно иметь слой данных в одной учетной записи и уровень приложения в другой (хотя это не так). парадигму, которую я часто вижу).

Custom Tooling

Возможно, вышеприведенное является несовершенным решением для вашей среды, вы можете использовать вышеприведенное, насколько это возможно, и писать сценарии для оценки использования вещей. которые сложнее отследить. Что касается пропускной способности, если у вас есть свои собственные экземпляры EC2, работающие в качестве прямых прокси-серверов или шлюзов NAT, вы можете написать программное обеспечение для учетной записи исходящей передачи данных. Если бы все в ваших VPC имели маршрут для указания на ENI в этих случаях, то вы могли бы лучше отслеживать исходящую передачу по любым параметрам, которые вы выберете. Для меня это звучит немного странно, и может быть несколько случаев, когда это невозможно с точки зрения сети, но это возможно.

Аналогичным образом, с помощью метрик Cloudwatch вы можете использовать пространства имен. Мне не удалось найти какой-либо ссылки на возможность фильтрации по пространствам имен Cloudwatch в Cost Explorer, но, вероятно, было бы довольно легко разобраться с необработанными метриками. на пространство имен и оцените затраты на пространство имен. Затем вы можете разделить ваши компоненты в Cloudwatch по пространству имен. Это может привести к некоторому дублированию, что может привести к дополнительным усилиям по управлению или увеличению затрат, но это может быть компромиссом для более детального отображения затрат.

Kubernetes

Это может быть очень p ie в небе для вашей среды, но это стоит упомянуть. Если вы запустили кластер с использованием EKS или самоуправляемого кластера на EC2, вы можете использовать возможности этой платформы, которые позволят вам обеспечить базовый уровень вычислительных ресурсов, разделить компоненты на пространства имен и использовать встроенные или сторонние инструменты чтобы получить статистику использования по пространству имен (или даже по рабочей нагрузке). Это гораздо проще реализовать, потому что вы можете предоставить разработчикам доступ к указанным c пространствам имен, и выбросы, как правило, более очевидны. Когда вы знаете, сколько ЦП и памяти использует каждая рабочая нагрузка с течением времени, вы можете получить довольно хорошую оценку отдельных моделей затрат по компонентам.

Конечно, вы все равно будете платить за плоскость управления k8s, который будет в затратах отдельно от всех ваших других приложений / систем.

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

Возможно, будет проще дублировать мониторинг в каждом пространстве имен, поскольку вам уже нужно в определенной степени абстрагировать свою нагрузку мониторинга, чтобы вообще работать на k8s. Тем не менее, это все еще увеличивает управление и общую стоимость, но, возможно, меньше, чем силосохранилище на уровне инфраструктуры (AWS).

Резюме

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

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

...