Как наиболее точно связать затраты проекта Google Cloud Platform с активностью App Engine?

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

У меня уже есть данные для выставления счетов по проекту Google Cloud Platform, на котором работает наше решение, экспортированное в BigQuery. Я заметил, что 70-80 процентов нашего счета Google Cloud Platform для рассматриваемого проекта связано с App Engine (как продукт), поэтому в настоящее время я сосредоточен на разделении затрат App Engine. Вот сжатое представление затрат App Engine на проект за один день (из BigQuery):

Row product     resource_type                   start_time              end_time                cost        usage_amount        usage_unit  
1   App Engine  Simple Searches                 2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.1473      3946.0              requests     
2   App Engine  Flex Instance RAM               2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.6816      3.710851743744E14   byte-seconds     
3   App Engine  Search Document Storage         2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.505028    8.0921704558464E15  byte-seconds     
4   App Engine  Code and Static File Storage    2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.0         5.96811043008E13    byte-seconds     
5   App Engine  Datastore Entity Writes         2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.085804    67669.0             requests     
6   App Engine  Other Search Ops                2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.0         1732.0              requests     
7   App Engine  Out Bandwidth                   2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.273014    3.516638423E9       bytes    
8   App Engine  Datastore Read Ops              2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 1.494541    2540902.0           requests     
9   App Engine  Search Document Indexing        2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.05012     3.7645832E7         bytes    
10  App Engine  Datastore Storage               2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 1.72891     2.7716055728688E16  byte-seconds     
11  App Engine  Flex Instance Core Hours        2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 5.0496      345600.0            seconds  
12  App Engine  Task Queue Storage              2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.0         5.14512E8           byte-seconds     
13  App Engine  Datastore Small Ops             2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 0.0         16166.0             requests     
14  App Engine  Backend Instances               2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 206.080588  1.4870202339153E7   seconds  
15  App Engine  Frontend Instances              2017-08-20 07:00:00 UTC 2017-08-20 08:00:00 UTC 1.35596     198429.126958       seconds  

Вопрос 1: Кстати, для всех, кто знаком с экспортом биллинга Google Cloud Platform, есть запись с start_time2017-08-20 07:00:00 UTC а также end_time2017-08-20 08:00:00 UTC отражает расходы, понесенные в 2017-08-20, а не 2017-08-19, верно?

Теперь я понимаю, что привязка этих затрат App Engine к активности App Engine не будет точным сопоставлением - Google Cloud Platform не будет выставлять счета за действие, и будут фиксированные и, я думаю, общие ресурсы (пожалуйста, исправьте меня, если Я ошибаюсь!) - но я все же хотел бы получить разумную оценку. Моя первая попытка состояла в том, чтобы проверить зарегистрированную оценочную стоимость Google на запрос. Поэтому я создал приемник для журналов запросов App Engine и ждал, когда будут добавлены числа. Однако общая оценочная стоимость всех запросов в данный день с использованием этого подхода очень низкая:

SELECT SUM(protoPayload.cost) AS cost_total
  FROM [my-data-management-solution:request_log.appengine_googleapis_com_request_log_20170820];

доходность

Row cost_total   
1   3.2711573326337837   

Это едва составляет 1,5% от общих затрат App Engine!

Вопрос 2: Что resource_type (s) (из экспорта биллинга Google Cloud Platform) соответствуют ли оценки затрат журнала запросов или способствуют ли они?

Около 95% моих затрат на App Engine связано с серверными инстансами resource_type, Я провел небольшое беглое исследование того, что они из себя представляют (включая это видео, в котором утверждалось, что Google отходит от всех различий между бэкэндом и внешним интерфейсом). Я предполагаю (или, возможно, читал), что Google использует любые секретные алгоритмы для ускорения, выключения и иного управления этими экземплярами. В качестве таких…

Вопрос 3 (большой вопрос): Как я могу получить некоторое представление о том, сколько отдельных действий пользователя / рабочего процесса (ограничено с помощью App Engine - все в порядке) способствуют общим затратам App Engine или минимальным затратам на внутренние компоненты App Engine для Google Cloud Проект? Возможно ли это без регрессии затрат на действия пользователя и создания модели ML? Является ли идея получить представление о том, как работает этот черный ящик (как с точки зрения масштабирования, так и с точки зрения ценообразования), или иным образом думать, что затраты App Engine в некоторой степени напрямую связаны с активностью пользователей вообще?

Дополнительная информация

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

  2. На всякий случай, есть что-нибудь, чтобы сделать что-то из этого из коробки? В одном комментарии Stackru упоминается Potamus, но репозиторий больше недоступен, и вряд ли есть какая-либо информация о том, с чего он начинал.

  3. Если разделение затрат App Engine не имеет большого значения, как насчет других продуктов, таких как Cloud Storage? Это будет моей следующей целью, хотя задача связать затраты облачного хранилища (как фактические, потенциально незначительные, затраты на хранение и более дорогие затраты ввода-вывода) с активностью App Engine на данный момент кажется еще менее разумной.

1 ответ

Полностью понять ваш интерес к использованию ресурсов, надеюсь, это поможет!

Вы можете создавать (и управлять) метками через менеджер ресурсов API в облачной консоли GCP, это должно обеспечить ясность в использовании ресурсов. Объекты меток могут быть связаны с группами / центрами затрат, пользователями, средами и т. Д., Чтобы получить ясность в использовании ресурсов. Связанный ресурс предоставляет дополнительную информацию: GCP_Using Labels

Вы также можете создавать визуальные представления данных для выставления счетов для дальнейшего анализа, используя экспорт в BigQuery & Data Studio. Связанная средняя статья - это потрясающий обзор. Medium_Visualizing GCP Billing Data с использованием BQ и Data Studio

Ура, янтарь