Распределение затрат
Функция распределения затрат доступна исключительно для сред Ключ-АСТРОМ SaaS с лицензионным соглашением Ключ-АСТРОМ Platform Subscription, подписанным после апреля 2023 года.
Функция распределения затрат Ключ-АСТРОМ позволяет распределять использование Ключ-АСТРОМ DPS по центрам затрат, продуктам или и тем, и другим, определяемым клиентом. Это обеспечивает прозрачный и подробный отчёт о расходах Ключ-АСТРОМ по каждому центру затрат, помогая вашей организации оптимизировать бюджет.
Вы можете настроить использование этих полей в соответствии с организационной структурой вашей компании:
- Затраты могут быть распределены по определенным клиентом центрам затрат, продуктам или и тому, и другому.
- Данные собираются из всех развертываний ЕдиногоАгента и модулей Kubernetes (будь то полный мониторинг стека или мониторинг только приложений), где настроено распределение затрат.
- Данные могут быть
- Анализируется в Ключ-АСТРОМ с помощью DQL, Dashboards или Notebooks.
- Экспортировано для просмотра и редактирования в отдельных инструментах, таких как Excel и Power BI.
На рисунке ниже показано, как различные компоненты в данной среде Ключ-АСТРОМ могут быть назначены различным центрам затрат и продуктам.
Определения
| Тег хоста | Параметр, который назначает хост определенному центру затрат или продукту. |
|---|---|
| Свойство хоста | Иногда используется как синоним термина «тег хоста». |
| Центр затрат | Конкретный центр затрат в вашей организации. Он определяется в соответствии с вашей организационной структурой. В Ключ-АСТРОМ затраты можно распределить по конкретным центрам затрат. |
| Продукт | Отдельный продукт или группа продуктов, предлагаемых вашей организацией. В Ключ-АСТРОМ затраты можно распределить по конкретным продуктам. |
Требуемые разрешения
Для просмотра или редактирования информации о распределении затрат вашей учётной записи Ключ-АСТРОМ требуется как минимум одно из разрешений, указанных в таблице ниже. Подробнее об этих разрешениях см. в разделе Разрешения на основе ролей.
| Действие | Просмотр учетной записи | Просмотр и управление учетной записью и платежной информацией |
|---|---|---|
| Просмотреть список разрешенных вариантов распределения затрат | Да | Да |
| Редактировать список разрешенных вариантов распределения затрат | Нет | Да |
| Просмотр выдержки из использования/расходов в разделе «Управление аккаунтом» | Да | Да |
Поддерживаемые возможности
Распределение затрат поддерживается при развертывании ЕдиногоАгента, будь то на физическом хосте, узле Kubernetes, модуле Kubernetes или облачном сервере.
В таблице ниже описываются категории тарифных планов и возможности, для которых доступно распределение затрат, а также предлагаются альтернативные варианты в случае, если распределение затрат недоступно.
| Категория | Возможность | Распределение затрат DPS | Лучшая практика |
|---|---|---|---|
| Мониторинг хоста | Полный мониторинг стека | доступно | Распределение затрат |
| Мониторинг инфраструктуры | доступно | Распределение затрат | |
| Основание и обнаружение | доступно | Распределение затрат | |
| Мониторинг мэйнфреймов | Классические метрики | ||
| Мониторинг контейнеров | Мониторинг Kubernetes | Классические метрики | |
| Защита безопасности приложений | Аналитика уязвимостей во время выполнения | доступно | Распределение затрат |
| Защита приложений во время выполнения | доступно | Распределение затрат | |
| Управление безопасностью | Notebook доступен через управление аккаунтом | ||
| Мониторинг цифрового опыта | Мониторинг реальных пользователей | Классические метрики | |
| Мониторинг реальных пользователей с помощью воспроизведения сеанса | Классические метрики | ||
| Реальный мониторинг свойств пользователя | Классические метрики | ||
| Мониторинг браузера или Clickpath | Классические метрики | ||
| Прием сторонних синтетических API | Классические метрики | ||
| HTTP-мониторинг | Классические метрики | ||
| Метрики на базе Grail | Метрики - Запрос | Notebook доступен через управление аккаунтом | |
| Логи на базе Grail | Метрики - Запрос | Notebook доступен через управление аккаунтом | |
| Трассировки, созданные Grail | Трассировки - Запрос | Notebook доступен через управление аккаунтом | |
| События, организованные Grail | События - Запрос | Notebook доступен через управление аккаунтом | |
| Функции AppEngine | Функции AppEngine — малые | Notebook доступен через управление аккаунтом | |
| Автоматизация | AutomationWorkflow | Notebook доступен через управление аккаунтом | |
| Расширения платформы | Пользовательские метрики Classic | Классические метрики | |
| Классический мониторинг логов | Классические метрики | ||
| Пользовательские трассировки | Классические метрики | ||
| Пользовательские события | Классические метрики | ||
| Классические бессерверные функции | Классические метрики |
Мы постоянно расширяем поддержку распределения затрат, охватывая дополнительные возможности Ключ-АСТРОМ. Для получения полной информации о вашем лицензионном соглашении обратитесь к своему менеджеру по работе с клиентами Ключ-АСТРОМ. Подробнее о конкретных возможностях см. в разделе Мониторинг потребления ресурсов по возможностям.
Настройте распределение затрат
В этом разделе описывается, как настроить распределение затрат в среде Ключ-АСТРОМ.
1. Определите разрешенные центры затрат и продукты
необходимо
Распределение затрат настраивается на уровне хоста. Один хост может быть назначен максимум одному центру затрат и одному продукту. Советы по распределению общих затрат, когда один хост используется несколькими центрами затрат или продуктами, см. в разделе Управление общими затратами (ниже).
Распределение затрат осуществляется по желанию; необходимо явно указать центры затрат и продукты, на которые они распределяются. Можно определить до 250 центров затрат и 250 продуктов.
Определения управляются в двух отдельных списках разрешений, которые можно настроить либо через управление учетными записями, либо через API Ключ-АСТРОМ:
- Список разрешенных центров затрат
- Список разрешенных продуктов
| Изменения в списках разрешенных ресурсов не применяются ретроспективно. Если вы удалите центр затрат или продукт из списка разрешенных ресурсов, в истории по-прежнему будут отображаться данные об использовании и затратах, связанных с этим значением до его удаления. |
Через веб-интерфейс
Чтобы найти два списка разрешённых объектов, перейдите в раздел Управление учётной записью > Подписка > Управление расходами. Списки разрешённых объектов отображаются в разделах Список разрешённых объектов центра затрат и Список разрешённых объектов продуктов.
Чтобы добавить новый центр затрат или продукт, выберите Центр затрат и следуйте инструкциям.
Через API
Списки центров затрат и разрешенных продуктов можно настроить с помощью API управления учетными записями, как описано в разделе API подписки на платформу Ключ-АСТРОМ — управление распределением затрат.
2. Настройте распределение затрат на хосте
необходимо
Используйте теги хостов для настройки распределения затрат на хосте. Вы можете добавлять, изменять или удалять теги хостов. В этом разделе описываются все способы настройки распределения затрат.
Добавить теги хоста
При установке ЕдиногоАгента
ЕдиныйАгент версии 1.291+
При установке ЕдиногоАгента на новый хост вы можете использовать теги для добавления этого хоста в существующую группу хостов.
- На странице Установка ЕдиногоАгента перейдите в раздел Дополнительные параметры > Теги.
- Выберите Добавить тег.
- Введите ключ и значение по мере необходимости:
- Ключем является либо
dt.cost.costcenter, либоdt.cost.product. - Значение — это название центра затрат или продукта. Вы уже определили центры затрат и хосты в разделе Определение разрешённых центров затрат и продуктов (выше).
- Ключем является либо
- Выберите Добавить.
- Введите ключ и значение по мере необходимости:
- Продолжайте установку ЕдиногоАгента.
Через командную строку
ЕдиныйАгент версии 1.291+
oneagentctl— это скрипт Ключ-АСТРОМ, который выполняет настройку ЕдиногоАгента после установки на уровне отдельных хостов. Вы можете использовать его для добавления или изменения тегов хостов.
- Определите разрешенные центры затрат и продукты .
- Выполните
oneagentctlс опцией--set-host-tag. Эта опция имеет две формы:- Чтобы задать центр затрат:
--set-host-tag=dt.cost.costcenter=<cost-center> - Чтобы установить продукт:
--set-host-tag=dt.cost.product=<product>
- Чтобы задать центр затрат:
- Убедитесь, что теги хоста установлены. Используйте команды
--get-host-tagsи--get-host-propertiesи просмотрите вывод. - Перезапустите ЕдиныйАгент с помощью команды
--restart-service.
Через веб-интерфейс Ключ-АСТРОМ
ЕдиныйАгент версии 1.291+
Чтобы настроить теги хоста в веб-интерфейсе Ключ-АСТРОМ, перейдите в раздел Состояние развертывания > ЕдиныеАгенты.
- Выберите все развертывания ЕдиногоАгента, которые следует настроить с использованием одного и того же тега хоста.
- Выберите действие Изменить свойства хоста из списка в левом нижнем углу. Откроется страница Изменить свойства хоста.
- Выберите Укажите свойства хоста, которые необходимо добавить, или Укажите свойства хоста, которые необходимо удалить, в зависимости от ситуации.
- Добавьте или измените соответствующий
dt.cost.costcenterилиdt.cost.product. - Выберите Далее.
- Выберите Применить изменения.
После применения изменений соответствующее развертывание ЕдиногоАгента автоматически запускается для перезапуска.
Через сценарий
ЕдиныйАгент версии 1.291+
Вы можете создать сценарий для автоматизации добавления тегов центров затрат и хостов распределения продуктов.
Приведенные ниже блоки кода предоставляют сценарий для ОС Linux и Windows.
- Linux:
| COSTCENTER=<cost-center>
PRODUCT=<product> /opt/astromkey/oneagent/agent/tools/oneagentctl --set-host-tag=dt.cost.costcenter="${COSTCENTER}" --set-host-tag=dt.cost.product="${PRODUCT}" --restart-service |
- Windows:
| COSTCENTER=<cost-center>
PRODUCT=<product> %PROGRAMFILES%\astromkey\oneagent\agent\tools\oneagentctl.exe --set-host-tag=dt.cost.costcenter="${COSTCENTER}" --set-host-tag=dt.cost.product="${PRODUCT}" --restart-service |
Чтобы использовать этот скрипт:
- Сохраните содержимое в файле сценария на хосте, где развернут ЕдиныйАгент.
- Измените значения заполнителей
COSTCENTERиPRODUCTпо мере необходимости. - На хосте выполните скрипт с правами администратора (root).
- Перезапустите ЕдиныйАгент.
Через API
ЕдиныйАгент версии 1.291+
Теги хоста ЕдиногоАгента можно добавлять через API. См. раздел API удалённого управления конфигурацией ЕдиногоАгента — POST - задание конфигурации. Вызов API состоит из двух параметров:
body: Предоставьте JSON-текст запроса. В JSON-тексте определите операцию удалённого управления конфигурацией, указав следующую информацию:Attribute: используйтеhostTagдля изменения тега хоста.operation: используйтеsetдля записи тега.value:- Используйте
dt.cost.costcenter=<cost center>для добавления центра затрат. - Используйте
dt.cost.product=<product>для добавления продукта. Примеры JSON-файла см . в разделе Модель JSON тела запроса.
- Используйте
restart: дает команду ЕдиномуАгенту перезапуститься. Установите значениеtrue.
Изменить теги хоста
| Отслеживаемое потребление за прошлые периоды не может быть изменено или переназначено. При изменении тегов хоста все существующие данные о уже зарегистрированных расходах (относящихся к этому тегу хоста и к этому хосту) будут потеряны.
Перед переназначением существующих тегов хоста вы можете экспортировать существующие данные через API подписки на платформу Ключ-АСТРОМ — GET распределение затрат. |
Перед изменением значений dt.cost.costcenter или dt.cost.product добавьте или удалите целевые значения в списках разрешенных значений распределения затрат. Это гарантирует, что ни одно значение использования не будет отменено во время перехода.
Обратите внимание, что обновления списка разрешенных адресов вступят в силу через несколько минут. |
ЕдиныйАгент версии 1.291+
Чтобы изменить существующие теги, следуйте инструкциям в разделе Добавление тегов хоста (выше). Новые значения перезапишут существующие.
Удалить теги хоста
| Удаление тегов хоста необратимо. При изменении тегов хоста все существующие данные о уже зарегистрированных расходах (связанных с этим тегом хоста и самим хостом) будут потеряны. |
Через командную строку
ЕдиныйАгент версии 1.291+
Значения dt.cost.costcenter и dt.cost.product можно удалить из конфигурации ЕдиногоАгента при необходимости. Выполните следующую команду, чтобы удалить теги хоста Cost Allocation.
- Сначала определите центр затрат или продукт, из которого следует удалить хост. Вы уже определили центры затрат и хосты в разделе Определение допустимых центров затрат и продуктов (выше).
- Выполнить
oneagentctlс--remove-host-tagопцией. Эта опция имеет две формы:- Чтобы удалить центр затрат:
--remove-host-tag=dt.cost.costcenter=<cost-center> - Чтобы удалить продукт:
--remove-host-tag=dt.cost.product=<product>
- Чтобы удалить центр затрат:
- Убедитесь, что теги хоста удалены. Используйте команды
--get-host-tagsи--get-host-propertiesи просмотрите вывод. - Перезапустите ЕдиныйАгент с помощью команды
--restart-service.
Через сценарий
ЕдиныйАгент версии 1.291+
Вы можете создать сценарий для автоматизации удаления тегов центров затрат и хостов распределения продуктов.
Приведенные ниже блоки кода представляют собой сценарий для ОС Linux и Windows:
- Linux:
| COSTCENTER=<cost-center>
PRODUCT=<product> /opt/astromkey/oneagent/agent/tools/oneagentctl --remove-host-tag=dt.cost.costcenter="${COSTCENTER}" --remove-host-tag=dt.cost.product="${PRODUCT}" --restart-service |
- Windows:
| COSTCENTER=<cost-center>
PRODUCT=<product> %PROGRAMFILES%\astromkey\oneagent\agent\tools\oneagentctl.exe --remove-host-tag=dt.cost.costcenter="${COSTCENTER}" --remove-host-tag=dt.cost.product="${PRODUCT}" --restart-service |
Чтобы использовать этот скрипт:
- Сохраните содержимое в файле сценария на хосте, где развернут ЕдиныйАгент.
- Измените значения заполнителей
COSTCENTERиPRODUCTпо мере необходимости. - На хосте выполните скрипт с правами администратора (root).
- Перезапустите ЕдиныйАгент.
Через API
ЕдиныйАгент версии 1.291+
Теги хоста ЕдиногоАгента можно удалить через API, см. раздел API удалённого управления конфигурацией ЕдиногоАгента — POST - задание конфигурации. Вызов API состоит из двух параметров:
body: предоставляет JSON-текст запроса. В JSON-тексте определите операцию удалённого управления конфигурацией, указав следующую информацию:Attribute: используйтеhostTagдля изменения тега хоста.operation: используйтеsetдля записи тега.value:- Используйте
dt.cost.costcenter=<cost center>для добавления центра затрат. - Используйте
dt.cost.product=<product>для добавления продукта. Примеры JSON-файла см . в разделе Модель JSON тела запроса.
- Используйте
restart: дает команду ЕдиномуАгенту перезапуститься. Установите значениеtrue.
3. Настройте распределения затрат для Kubernetes
необязательно
В этом разделе описывается, как настроить атрибуты центра затрат и продукта для развертываний Kubernetes на основе хоста и контейнера.
Использование, специфичное для Kubernetes dt.cost.costcenter, dt.cost.product описано в разделе Контекст безопасности и распределение затрат.
|
Развертывания Kubernetes с полным стеком мониторинга на базе хоста
Передайте конфигурацию через параметр args в параметрах DynaKube для Ключ-АСТРОМ Operator. Блок кода содержит фрагмент файла конфигурации, демонстрирующий использование --set-host-tag=dt.cost.costcenter=<cost-center> и --set-host-tag=dt.cost.product=<product>.
| spec:
apiUrl: https://<environment-id>.live.astromkey.com/api oneAgent: cloudNativeFullStack: args: - --set-host-tag=dt.cost.costcenter=it_services - --set-host-tag=dt.cost.product=fin_app |
Мониторинг развертываний Kubernetes только на основе контейнерных приложений
Через правила обогащения
Используйте Kubernetes Metadata Enrichment для настройки распределения затрат для сред мониторинга только приложений Kubernetes.
Параметры обогащения метаданных Kubernetes не применяются к кластерам Kubernetes, имеющим набор правил, специфичный для кластера.
Чтобы настроить обогащение данных на уровне кластера Kubernetes, перейдите в Kubernetes > [Кластер Kubernetes] > Настройки > Правила обогащения.
Чтобы добавить или изменить глобальные параметры обогащения:
- Перейдите в Настройки > Облако и виртуализация > Правила обогащения Kubernetes.
- Выберите Добавить правило .
- В раскрывающемся списке Тип метаданных выберите
AnnotationилиLabel. - В поле Источник введите соответствующий ключ аннотации или метки. Следуйте соглашениям Kubernetes, описанным ниже.
sourceдолжен соответствовать шаблону(prefix/)?nameи содержать не более 75 символов.prefixнеобходимо следовать образцу[a-z0-9]([-a-z0-9]*[a-z0-9])?(.[a-z0-9]([-a-z0-9]*[a-z0-9])?).nameдолжен соответствовать шаблону(\[A-Za-z0-9]\[-A-Za-z0-9\_.]\*)?\[A-Za-z0-9]и содержать не более 63 символов.
- Выберите Цель, будь то
dt.cost.costcenterилиdt.cost.product. - Выберите Сохранить изменения.
- Подождите до 45 минут и перезапустите модуль(и).
Чтобы удалить глобальные настройки обогащения:
- Перейдите в Настройки > Облако и виртуализация > Правила обогащения Kubernetes.
- Удалите правило, которое вы хотите удалить.
- Подождите до 45 минут и перезапустите модуль(и).
Через специальные аннотации модулей
Вы можете обогатить свои данные, используя специальные аннотации модулей, например, создав следующие аннотации на уровне модулей:
| metadata:
annotations: metadata.astromkey.com/dt.cost.costcenter: it_services metadata.astromkey.com/dt.cost.product: fin_app |
Чтобы добавить или изменить глобальные параметры обогащения:
- Добавьте соответствующие аннотации в файл конфигурации, следуя примеру в блоке кода выше.
- Подождите до 45 минут и перезапустите модуль(и).
Чтобы удалить глобальные настройки обогащения:
- Удалите соответствующие аннотации из файла конфигурации.
- Подождите до 45 минут и перезапустите модуль(и).
Лучшие практики
В этом разделе представлены лучшие практики по настройке распределения затрат.
Названия центров затрат и продуктов
Как вы назовёте свои центры затрат и продукты, зависит от вас. Мы рекомендуем
- Для центров затрат: используйте организационный уровень, к которому относятся затраты.
- Для продуктов: используйте приложение или группу продуктов, к которым относятся затраты.
Значения могут быть представлены в виде текстовых или числовых строк. Если у вас есть оба варианта, рекомендуем использовать текстовое имя и идентификатор, разделённые запятой (,) или косой чертой (/). Это позволит разделить имя и идентификатор после экспорта данных.
Примеры:
| Хост | Центр затрат | Продукт |
|---|---|---|
| Хост 1 | dt.cost.costcenter=BusinessUnit1/Bu1
|
dt.cost.product=AppName/AppID
|
| Хост 2 | dt.cost.costcenter=BusinessUnit2/Bu2
|
dt.cost.product=AppName/AppID
|
| Хост 3 | dt.cost.costcenter=BusinessUnit2/Bu2
|
dt.cost.product=AppName/AppID
|
Обработка совместных затрат
Если ваш хост использует общие сервисы, функция распределения затрат не поддерживает выставление счетов по отдельным центрам затрат или продуктам. Однако вы можете создать центр затрат или продукт для этого хоста и затем распределять его затраты вне Ключ-АСТРОМ.
- Создайте центр затрат или продукт для обеих сущностей, например,
dt.cost.product="Webpage_MobileApp"для хоста, который следует выделить как для продукта веб-страницы, так и для продукта мобильного приложения. - Если вы хотите проанализировать прошлые данные, извлеките их из раздела Управление учетными записями и импортируйте их на доску Excel или Power BI.
- Вы можете взять общую стоимость услуг хозяина и разделить ее в соответствии со своими требованиями.
Лицензирование DPS и связанные с ним расходы рассчитываются на основе 15-минутных интервалов. Отчёты формируются ежедневно, поэтому вы не сможете увидеть данные об использовании за предыдущие <24 часа.
Анализ данных распределения затрат
Для анализа данных распределения затрат вы можете
- Используйте дашборды, блокноты или DQL Ключ-АСТРОМ, специфичные для конкретной среды, как описано в разделе Анализ в Ключ-АСТРОМ.
- Экспортируйте данные во внешний инструмент, как описано в разделе Экспорт данных распределения затрат через управление счетом (ниже).
Анализ в Ключ-АСТРОМ
Данные о распределении затрат хранятся в Ключ-АСТРОМ Grail в виде событий использования средств для выставления счетов. Эти события можно анализировать.
- В дашбордах и блокнотах. Ключ-АСТРОМ предоставляет встроенный дашборд, распределение затрат DPS и расходы. Примеры с этом дашбордом приведены ниже.
- Через DQL -запросы. Примеры DQL-запросов приведены ниже.
Анализируйте на дашбордах и в блокнотах
Для анализа данных о распределении затрат вы можете использовать готовую панель мониторинга. Она доступна
- По умолчанию во встроенной среде.
- В виде JSON-файла, который можно загрузить в любую другую среду astromkey.
1. Скопируйте содержимое JSON из приведенного ниже блока кода и сохраните его в файл на своем компьютере.
Содержимое JSON готового дашборда затрат
{
"version": 16,
"variables": [
{
"key": "Capability",
"type": "csv",
"visible": true,
"input": "Full-Stack Monitoring,Infrastructure Monitoring,Foundation & Discovery,Runtime Vulnerability Analytics,Runtime Application Protection",
"multiple": false,
"defaultValue": "Full-Stack Monitoring"
},
{
"key": "Ratecard",
"type": "query",
"visible": false,
"input": "data record(Ratecard = 0.01) // default is \"Full-Stack Monitoring\", 0.01 \n| fieldsAdd Ratecard = if($Capability == \"Full-Stack Monitoring\", toDouble($Price_Fullstack_Monitoring))\n| fieldsAdd Ratecard = if($Capability == \"Infrastructure Monitoring\", toDouble($Price_Infrastructure_Monitoring), else:Ratecard)\n| fieldsAdd Ratecard = if($Capability == \"Foundation & Discovery\", toDouble($Price_Foundation_Discovery), else:Ratecard)\n| fieldsAdd Ratecard = if($Capability == \"Runtime Vulnerability Analytics\", toDouble($Price_Runtime_Vulnerability_Analytics)/1024/1024, else:Ratecard)\n| fieldsAdd Ratecard = if($Capability == \"Runtime Application Protection\", toDouble($Price_Application_Protection)/1024/1024, else:Ratecard)\n| fields Ratecard",
"multiple": false
},
{
"key": "Price_Fullstack_Monitoring",
"type": "text",
"visible": true,
"defaultValue": "0.01"
},
{
"key": "Price_Infrastructure_Monitoring",
"type": "text",
"visible": true,
"defaultValue": "1"
},
{
"key": "Price_Foundation_Discovery",
"type": "text",
"visible": true,
"defaultValue": "0.00225"
},
{
"key": "Price_Runtime_Vulnerability_Analytics",
"type": "text",
"visible": true,
"defaultValue": "0.00225"
},
{
"key": "Price_Application_Protection",
"type": "text",
"visible": true,
"defaultValue": "0.00225"
}
],
"tiles": {
"0": {
"type": "data",
"title": "Overview per product",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours)\n| summarize sum(usage), alias: `usage`, by: { dt.cost.product}\n|fieldsAdd `cost USD` = `usage` * toDouble($Ratecard)\n| sort `cost USD` desc\n| fieldsAdd dt.cost.product = if(isNull(dt.cost.product), \"unallocated\", else:dt.cost.product)",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "table",
"visualizationSettings": {
"thresholds": [
{
"id": 1,
"field": "costs",
"title": "",
"isEnabled": true,
"rules": [
{
"id": 0,
"color": {
"Default": "var(--dt-colors-charts-categorical-color-09-default, #649438)"
},
"comparator": "≤",
"label": "",
"value": 220
},
{
"id": 1,
"color": {
"Default": "var(--dt-colors-charts-categorical-color-14-default, #d56b1a)"
},
"comparator": ">",
"label": "",
"value": 220
},
{
"id": 2,
"color": {
"Default": "var(--dt-colors-charts-categorical-color-12-default, #cd3741)"
},
"comparator": "≥",
"label": "",
"value": 255
}
]
}
],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxis": ["dt.cost.product"],
"categoryAxisLabel": "dt.cost.product",
"valueAxis": ["usage", "cost USD"],
"valueAxisLabel": "usage,cost USD",
"tooltipVariant": "single"
},
"truncationMode": "middle"
},
"singleValue": {
"showLabel": true,
"label": "dt.cost.product",
"prefixIcon": "",
"recordField": "dt.cost.product",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": "gibibyte",
"lineWrapIds": "count",
"columnWidths": {
"[\"dt.cost.product\"]": 196.96875,
"[\"usage\"]": 91.11250305175781
},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": { "value": "usage" },
"legend": "auto",
"displayedFields": ["dt.cost.product"],
"colorMode": "color-palette",
"colorPalette": "blue"
},
"histogram": {
"dataMappings": [
{ "valueAxis": "usage", "rangeAxis": "" },
{ "valueAxis": "cost USD", "rangeAxis": "" }
],
"variant": "single",
"displayedFields": ["dt.cost.product"]
},
"unitsOverrides": [
{
"identifier": "costs",
"unitCategory": "currency",
"baseUnit": "usd",
"displayUnit": null,
"decimals": 2,
"suffix": "USD",
"delimiter": true,
"added": 1712838776597
},
{
"identifier": null,
"unitCategory": "currency",
"baseUnit": "usd",
"displayUnit": null,
"decimals": 2,
"suffix": "USD",
"delimiter": false,
"added": 1720435664184
}
]
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"1": {
"type": "data",
"title": "Overview per costcenter",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours)\n| summarize sum(usage), alias: `usage`, by: { dt.cost.costcenter}\n| sort dt.cost.costcenter\n| fieldsAdd `cost USD` = `usage` * toDouble($Ratecard)\n| sort `cost USD` desc\n| fieldsAdd dt.cost.costcenter = if(isNull(dt.cost.costcenter), \"unallocated\", else:dt.cost.costcenter)",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "table",
"visualizationSettings": {
"thresholds": [
{
"id": 1,
"field": "costs",
"title": "",
"isEnabled": true,
"rules": [
{
"id": 0,
"color": {
"Default": "var(--dt-colors-charts-categorical-color-09-default, #649438)"
},
"comparator": "≤",
"label": "",
"value": 5
},
{
"id": 1,
"color": {
"Default": "var(--dt-colors-charts-categorical-color-14-default, #d56b1a)"
},
"comparator": ">",
"label": "",
"value": 5
},
{
"id": 2,
"color": {
"Default": "var(--dt-colors-charts-categorical-color-12-default, #cd3741)"
},
"comparator": ">",
"label": "",
"value": 9
}
]
}
],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxis": ["dt.cost.costcenter"],
"categoryAxisLabel": "dt.cost.costcenter",
"valueAxis": ["usage", "cost USD"],
"valueAxisLabel": "usage,cost USD",
"tooltipVariant": "single"
},
"truncationMode": "middle"
},
"singleValue": {
"showLabel": true,
"label": "dt.cost.product",
"prefixIcon": "",
"recordField": "dt.cost.product",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": "gibibyte",
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": { "value": "usage" },
"legend": "auto",
"displayedFields": ["dt.cost.costcenter"],
"colorMode": "color-palette",
"colorPalette": "blue"
},
"histogram": {
"dataMappings": [
{ "valueAxis": "usage", "rangeAxis": "" },
{ "valueAxis": "cost USD", "rangeAxis": "" }
],
"variant": "single",
"displayedFields": ["dt.cost.costcenter"]
},
"unitsOverrides": [
{
"identifier": "costs",
"unitCategory": "currency",
"baseUnit": "usd",
"displayUnit": null,
"decimals": 2,
"suffix": "$",
"delimiter": true,
"added": 1712838812292
}
]
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"2": {
"type": "data",
"title": "Top Costcenter",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours)\n| summarize sum(usage), alias: `usage`, by: { dt.cost.costcenter=if(isNull(dt.cost.costcenter), \"unallocated\", else:dt.cost.costcenter)}\n| sort `usage` desc\n| limit 1\n| fieldsKeep dt.cost.costcenter\n| fieldsRename `top costcenter`= dt.cost.costcenter",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "singleValue",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxisLabel": "top costcenter",
"valueAxisLabel": "",
"categoryAxis": ["top costcenter"],
"valueAxis": [],
"tooltipVariant": "single"
},
"truncationMode": "middle"
},
"singleValue": {
"showLabel": true,
"label": "top costcenter",
"prefixIcon": "",
"recordField": "top costcenter",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": {},
"legend": "auto",
"displayedFields": [],
"colorMode": "color-palette",
"colorPalette": "categorical"
},
"histogram": {
"dataMappings": [],
"variant": "single",
"displayedFields": ["top costcenter"]
}
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"5": {
"type": "data",
"title": "Top Product",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours)\n| summarize sum(usage), alias: `usage`, by: { dt.cost.product=if(isNull(dt.cost.product), \"unallocated\", else:dt.cost.product)}\n| sort `usage` desc\n| limit 1\n| fieldsKeep dt.cost.product\n| fieldsRename `top product`= dt.cost.product",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "singleValue",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxisLabel": "top product",
"valueAxisLabel": "",
"categoryAxis": ["top product"],
"valueAxis": [],
"tooltipVariant": "single"
},
"truncationMode": "middle"
},
"singleValue": {
"showLabel": true,
"label": "top product",
"prefixIcon": "",
"recordField": "top product",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": {},
"displayedFields": [],
"legend": { "hidden": false, "position": "auto" },
"colorMode": "color-palette",
"colorPalette": "categorical"
},
"histogram": {
"dataMappings": [],
"variant": "single",
"displayedFields": ["top product"]
}
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"6": {
"type": "data",
"title": "Top Costcenter",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours)\n| summarize sum(usage), alias: `usage`, by: { dt.cost.costcenter}\n| sort `usage` desc\n| limit 1\n| fieldsAdd `top costcenter`= `usage` * toDouble($Ratecard)",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "singleValue",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxis": ["dt.cost.costcenter"],
"categoryAxisLabel": "dt.cost.costcenter",
"valueAxis": ["usage", "top costcenter"],
"valueAxisLabel": "usage,top costcenter",
"tooltipVariant": "single"
},
"truncationMode": "middle"
},
"singleValue": {
"showLabel": true,
"label": "top costcenter",
"prefixIcon": "",
"recordField": "top costcenter",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": { "value": "usage" },
"displayedFields": ["dt.cost.costcenter"],
"legend": { "hidden": false, "position": "auto" },
"colorMode": "color-palette",
"colorPalette": "blue"
},
"histogram": {
"dataMappings": [
{ "valueAxis": "usage", "rangeAxis": "" },
{ "valueAxis": "top costcenter", "rangeAxis": "" }
],
"variant": "single",
"displayedFields": ["dt.cost.costcenter"]
},
"unitsOverrides": [
{
"identifier": "top costcenter",
"unitCategory": "currency",
"baseUnit": "usd",
"displayUnit": null,
"decimals": 2,
"suffix": "$",
"delimiter": true,
"added": 1712838491820
}
]
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"7": {
"type": "data",
"title": "Top Product",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours)\n| summarize sum(usage), alias: `usage`, by: { dt.cost.product}\n| sort `usage` desc\n| limit 1\n| fieldsAdd `top product`= `usage` * toDouble($Ratecard)",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "singleValue",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxis": ["dt.cost.product"],
"categoryAxisLabel": "dt.cost.product",
"valueAxis": ["usage", "top product"],
"valueAxisLabel": "usage,top product",
"tooltipVariant": "single"
},
"truncationMode": "middle"
},
"singleValue": {
"showLabel": true,
"label": "top product",
"prefixIcon": "",
"recordField": "top product",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": { "value": "usage" },
"displayedFields": ["dt.cost.product"],
"legend": { "hidden": false, "position": "auto" },
"colorMode": "color-palette",
"colorPalette": "blue"
},
"histogram": {
"dataMappings": [
{ "valueAxis": "usage", "rangeAxis": "" },
{ "valueAxis": "top product", "rangeAxis": "" }
],
"variant": "single",
"displayedFields": ["dt.cost.product"]
},
"unitsOverrides": [
{
"identifier": "top product",
"unitCategory": "currency",
"baseUnit": "usd",
"displayUnit": null,
"decimals": 2,
"suffix": "$",
"delimiter": true,
"added": 1712838641069
}
]
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"11": {
"type": "data",
"title": "",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours) \n| fieldsAdd costs = usage * toDouble($Ratecard)\n| makeTimeseries sum(costs), by:{event.type}",
"visualization": "lineChart",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"hiddenLegendFields": ["interval"],
"fieldMapping": {
"timestamp": "timeframe",
"leftAxisValues": ["sum(costs)"]
},
"categoricalBarChartSettings": {
"categoryAxis": ["event.type"],
"valueAxis": ["interval"],
"categoryAxisLabel": "event.type",
"valueAxisLabel": "interval",
"tooltipVariant": "single"
},
"truncationMode": "middle",
"valueRepresentation": "absolute",
"xAxisLabel": "timeframe",
"xAxisIsLabelVisible": false,
"leftYAxisSettings": {}
},
"singleValue": {
"showLabel": true,
"label": "billed_gibibyte_hours",
"prefixIcon": "",
"recordField": "billed_gibibyte_hours",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": true }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": [
{
"fields": ["sum(costs)"],
"value": "sparkline",
"id": 1734615873508
}
]
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": { "value": "event.type" },
"displayedFields": ["event.type"],
"legend": { "hidden": false, "position": "auto" },
"colorMode": "color-palette",
"colorPalette": "categorical"
},
"histogram": {
"dataMappings": [{ "valueAxis": "interval", "rangeAxis": "" }],
"variant": "single",
"displayedFields": ["event.type"]
},
"unitsOverrides": [
{
"identifier": "sum(costs)",
"unitCategory": "currency",
"baseUnit": "usd",
"displayUnit": null,
"decimals": 0,
"suffix": "USD",
"delimiter": false,
"added": 1713254980105
}
]
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
},
"davis": {},
"segments": { "tileSegmentsEnabled": false, "tileSegments": [] }
},
"15": {
"type": "data",
"title": "Usage",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours)\n| makeTimeseries sum(usage), by:{event.type}\n",
"visualization": "areaChart",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"hiddenLegendFields": ["interval"],
"fieldMapping": {
"timestamp": "timeframe",
"leftAxisValues": ["sum(usage)"]
},
"categoricalBarChartSettings": {
"categoryAxis": ["event.type"],
"valueAxis": ["interval"],
"categoryAxisLabel": "event.type",
"valueAxisLabel": "interval",
"tooltipVariant": "single"
},
"truncationMode": "middle",
"valueRepresentation": "absolute",
"xAxisLabel": "timeframe",
"xAxisIsLabelVisible": false,
"leftYAxisSettings": {}
},
"singleValue": {
"showLabel": true,
"label": "billed_gibibyte_hours",
"prefixIcon": "",
"recordField": "billed_gibibyte_hours",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": true }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": [
{
"fields": ["sum(usage)"],
"value": "sparkline",
"id": 1734617546639
}
]
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": { "value": "event.type" },
"legend": "auto",
"displayedFields": ["event.type"],
"colorMode": "color-palette",
"colorPalette": "categorical"
},
"histogram": {
"dataMappings": [{ "valueAxis": "interval", "rangeAxis": "" }],
"variant": "single",
"displayedFields": ["event.type"]
},
"unitsOverrides": [
{
"identifier": "interval",
"unitCategory": "time",
"baseUnit": "nanosecond",
"displayUnit": null,
"decimals": 2,
"suffix": "$",
"delimiter": false,
"added": 1713254980105
},
{
"identifier": "sum(billed_gibibyte_hours)",
"unitCategory": "data",
"baseUnit": "gibibyte",
"displayUnit": null,
"decimals": 2,
"suffix": "",
"delimiter": false,
"added": 1720169506924
}
]
},
"querySettings": {
"maxResultRecords": 10000,
"defaultScanLimitGbytes": 5000,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
},
"davis": {}
},
"16": {
"type": "data",
"title": "Usage per Product",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours)\n| makeTimeseries sum(usage), alias: `unallocated`, by:{dt.cost.product}\n| fieldsAdd dt.cost.product = if(isNull(dt.cost.product), \"unallocated\", else:dt.cost.product)",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "lineChart",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxis": ["dt.cost.product"],
"categoryAxisLabel": "dt.cost.product",
"valueAxis": ["interval"],
"valueAxisLabel": "interval",
"tooltipVariant": "single"
},
"hiddenLegendFields": ["interval"],
"fieldMapping": {
"timestamp": "timeframe",
"leftAxisValues": ["unallocated"]
},
"truncationMode": "middle",
"valueRepresentation": "absolute",
"xAxisLabel": "timeframe",
"xAxisIsLabelVisible": false,
"leftYAxisSettings": {}
},
"singleValue": {
"showLabel": true,
"label": "dt.cost.costcenter",
"prefixIcon": "",
"recordField": "dt.cost.costcenter",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": true }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": [
{
"fields": ["unallocated"],
"value": "sparkline",
"id": 1734617227642
}
]
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": { "value": "dt.cost.product" },
"legend": "auto",
"displayedFields": ["dt.cost.product"],
"colorMode": "color-palette",
"colorPalette": "categorical"
},
"histogram": {
"dataMappings": [{ "valueAxis": "interval", "rangeAxis": "" }],
"variant": "single",
"displayedFields": ["dt.cost.product"]
},
"unitsOverrides": [
{
"identifier": "interval",
"unitCategory": "time",
"baseUnit": "nanosecond",
"displayUnit": null,
"decimals": 2,
"suffix": "",
"delimiter": false,
"added": 1720169570984
},
{
"identifier": "unassigned",
"unitCategory": "data",
"baseUnit": "gibibyte",
"displayUnit": null,
"decimals": 2,
"suffix": "",
"delimiter": false,
"added": 1720169591630
}
]
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"17": {
"type": "markdown",
"title": "",
"content": "# Showback Usage Details for $Capability and configured hosts\nThis value shows the sum of all cost allocation configured hosts"
},
"19": {
"type": "data",
"title": "Usage per Product Top 15",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| summarize total= sum(coalesce(billed_host_hours, billed_gibibyte_hours)), by:{dt.cost.product}\n| sort `dt.cost.product` desc\n| limit 15\n| fieldsAdd dt.cost.product = if(isNull(dt.cost.product), \"unallocation\", else:dt.cost.product)",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "donutChart",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxis": ["dt.cost.product"],
"categoryAxisLabel": "dt.cost.product",
"valueAxis": ["total"],
"valueAxisLabel": "total",
"tooltipVariant": "single"
},
"truncationMode": "middle"
},
"singleValue": {
"showLabel": true,
"label": "dt.cost.product",
"prefixIcon": "",
"recordField": "dt.cost.product",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"legend": "auto",
"dataMappings": { "value": "total" },
"displayedFields": ["dt.cost.product"],
"colorMode": "color-palette",
"colorPalette": "blue"
},
"histogram": {
"dataMappings": [{ "valueAxis": "total", "rangeAxis": "" }],
"variant": "single",
"displayedFields": ["dt.cost.product"]
}
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"20": {
"type": "data",
"title": "Usage per Cost-Center Top 15",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| summarize total= sum (coalesce (billed_host_hours, billed_gibibyte_hours)), by:{dt.cost.costcenter}\n| sort `dt.cost.costcenter` desc\n| limit 15\n| fieldsAdd dt.cost.costcenter = if(isNull(dt.cost.costcenter), \"unallocated\", else:dt.cost.costcenter)",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "donutChart",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxis": ["dt.cost.costcenter"],
"categoryAxisLabel": "dt.cost.costcenter",
"valueAxis": ["total"],
"valueAxisLabel": "total",
"tooltipVariant": "single"
},
"truncationMode": "middle"
},
"singleValue": {
"showLabel": true,
"label": "dt.cost.costcenter",
"prefixIcon": "",
"recordField": "dt.cost.costcenter",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"legend": "auto",
"dataMappings": { "value": "total" },
"displayedFields": ["dt.cost.costcenter"],
"colorMode": "color-palette",
"colorPalette": "blue"
},
"histogram": {
"dataMappings": [{ "valueAxis": "total", "rangeAxis": "" }],
"variant": "single",
"displayedFields": ["dt.cost.costcenter"]
}
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"23": {
"type": "data",
"title": "",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fields timestamp, usage=coalesce(billed_gibibyte_hours, billed_host_hours), dt.entity.host, dt.cost.costcenter, dt.cost.product, event.type\n| summarize hostname=takeLast(entityName(dt.entity.host)),dt.cost.costcenter=takeLast(dt.cost.costcenter), dt.cost.product=takeLast(dt.cost.product),`Usage (GiB/h)`= sum(usage), by:{dt.entity.host}\n| sort `Usage (GiB/h)` desc\n| fieldsAdd `cost USD`= `Usage (GiB/h)`* toDouble($Ratecard)\n| fieldsAdd dt.cost.costcenter = if(isNull(dt.cost.costcenter), \"unassigned\", else:dt.cost.costcenter)\n| fieldsAdd dt.cost.product = if(isNull(dt.cost.product), \"unassigned\", else:dt.cost.product)",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "table",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxisLabel": "dt.entity.host,hostname,dt.cost.costcenter,dt.cost.product",
"valueAxisLabel": "Usage (GiB/h),cost USD",
"tooltipVariant": "single",
"categoryAxis": ["dt.entity.host", "hostname", "dt.cost.costcenter", "dt.cost.product"],
"valueAxis": ["Usage (GiB/h)", "cost USD"]
},
"hiddenLegendFields": [],
"truncationMode": "middle"
},
"singleValue": {
"showLabel": true,
"label": "timestamp",
"prefixIcon": "",
"recordField": "timestamp",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": { "[\"hostname\"]": 392.078125 },
"sortBy": {
"columnId": "[\"billed_gibibyte_hours\"]",
"direction": "descending"
},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"legend": "auto",
"dataMappings": { "value": "Usage (GiB/h)" },
"displayedFields": [
"dt.entity.host",
"hostname",
"dt.cost.costcenter",
"dt.cost.product"
],
"colorMode": "color-palette",
"colorPalette": "blue"
},
"histogram": {
"dataMappings": [
{ "valueAxis": "Usage (GiB/h)", "rangeAxis": "" },
{ "valueAxis": "cost USD", "rangeAxis": "" }
],
"variant": "single",
"displayedFields": ["dt.entity.host", "hostname", "dt.cost.costcenter", "dt.cost.product"]
}
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"24": {
"type": "markdown",
"title": "",
"content": "# $Capability per host usage and cost summary"
},
"28": {
"type": "data",
"title": "Hosts without Cost Center or Product allocation",
"query": "fetch dt.entity.host\n| join [\n fetch dt.system.events\n | filter event.kind == \"BILLING_USAGE_EVENT\"\n | filterOut isNull(dt.cost.costcenter) or isNull(dt.cost.product)\n | dedup dt.entity.host\n], kind:leftOuter, on:{left[id] == right[dt.entity.host]}\n| filter isNull(right.dt.entity.host)\n| fields {id, alias:hostname}, entity.name, {right.dt.cost.costcenter, alias:dt.cost.costcenter}, {right.dt.cost.product, alias:dt.cost.product}",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "table",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxisLabel": "hostname,entity.name",
"valueAxisLabel": "",
"tooltipVariant": "single",
"categoryAxis": ["hostname", "entity.name"],
"valueAxis": []
},
"truncationMode": "middle",
"hiddenLegendFields": []
},
"singleValue": {
"showLabel": true,
"label": "dt.entity.host",
"prefixIcon": "",
"recordField": "dt.entity.host",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"sortBy": {
"columnId": "[\"Usage (GiB/h)\"]",
"direction": "descending"
},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"legend": { "hidden": false, "position": "auto" },
"colorMode": "color-palette",
"colorPalette": "categorical",
"dataMappings": { "value": "hostname" },
"displayedFields": ["hostname", "entity.name"]
},
"histogram": {
"dataMappings": [],
"variant": "single",
"displayedFields": ["entity.name"]
},
"autoSelectVisualization": false
},
"querySettings": {
"maxResultRecords": 10000,
"defaultScanLimitGbytes": 5000,
"maxResultMegaBytes": 1,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"29": {
"type": "markdown",
"title": "",
"content": "# Total $Capability costs of configured hosts \nThis value shows the sum of all cost allocation configured hosts per time frame.\n"
},
"30": {
"type": "data",
"title": "$Capability Hosts with not-allowlisted fields",
"query": "\nfetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| dedup dt.entity.host, sort: {timestamp desc}\n| filter dt.cost.costcenter == \"not-allowlisted\" or dt.cost.product == \"not-allowlisted\"\n| summarize count = count(), by:{dt.entity.host, dt.cost.costcenter, dt.cost.product}\n| fields hostname=entityName(dt.entity.host),dt.entity.host, dt.cost.costcenter, dt.cost.product",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "table",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxis": ["hostname", "dt.entity.host", "dt.cost.costcenter", "dt.cost.product"],
"categoryAxisLabel": "hostname,dt.entity.host,dt.cost.costcenter,dt.cost.product",
"valueAxis": [],
"valueAxisLabel": "",
"tooltipVariant": "single"
},
"truncationMode": "middle",
"xAxisLabel": "timestamp",
"xAxisIsLabelVisible": false,
"valueRepresentation": "absolute",
"hiddenLegendFields": [],
"leftYAxisSettings": {}
},
"singleValue": {
"showLabel": true,
"label": "dt.entity.host",
"prefixIcon": "",
"recordField": "dt.entity.host",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": false }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": []
},
"honeycomb": {
"shape": "hexagon",
"legend": { "hidden": false, "position": "auto" },
"colorMode": "color-palette",
"colorPalette": "categorical",
"dataMappings": { "value": "hostname" },
"displayedFields": ["hostname", "dt.entity.host", "dt.cost.costcenter", "dt.cost.product"]
},
"histogram": {
"dataMappings": [],
"variant": "single",
"displayedFields": ["hostname", "dt.entity.host", "dt.cost.costcenter", "dt.cost.product"]
},
"autoSelectVisualization": false
},
"querySettings": {
"maxResultRecords": 10000,
"defaultScanLimitGbytes": 5000,
"maxResultMegaBytes": 1,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"31": {
"type": "markdown",
"title": "",
"content": "# Cost Details for $Capability and configured hosts\nThis value shows the cost sum of all cost allocation configured hosts"
},
"32": {
"type": "data",
"title": "Usage per Cost Center",
"query": "fetch dt.system.events\n| filter event.kind == \"BILLING_USAGE_EVENT\"\n| filter event.type == $Capability\n| fieldsAdd usage = coalesce(billed_host_hours, billed_gibibyte_hours)\n| makeTimeseries sum(usage), alias: `unallocated`, by:{dt.cost.costcenter}\n| fieldsAdd dt.cost.costcenter = if(isNull(dt.cost.costcenter), \"unallocated\", else:dt.cost.costcenter)",
"davis": {
"enabled": false,
"davisVisualization": { "isAvailable": true }
},
"visualization": "lineChart",
"visualizationSettings": {
"thresholds": [],
"chartSettings": {
"xAxisScaling": "analyzedTimeframe",
"gapPolicy": "connect",
"circleChartSettings": {
"groupingThresholdType": "relative",
"groupingThresholdValue": 0,
"valueType": "relative"
},
"categoryOverrides": {},
"categoricalBarChartSettings": {
"categoryAxis": ["dt.cost.costcenter"],
"categoryAxisLabel": "dt.cost.costcenter",
"valueAxis": ["interval"],
"valueAxisLabel": "interval",
"tooltipVariant": "single"
},
"hiddenLegendFields": ["interval"],
"fieldMapping": {
"timestamp": "timeframe",
"leftAxisValues": ["unallocated"]
},
"truncationMode": "middle",
"valueRepresentation": "absolute",
"xAxisLabel": "timeframe",
"xAxisIsLabelVisible": false,
"leftYAxisSettings": {}
},
"singleValue": {
"showLabel": true,
"label": "dt.cost.costcenter",
"prefixIcon": "",
"recordField": "dt.cost.costcenter",
"autoscale": true,
"alignment": "center",
"colorThresholdTarget": "value",
"trend": { "trendType": "auto", "isVisible": true }
},
"table": {
"rowDensity": "condensed",
"enableSparklines": false,
"hiddenColumns": [],
"lineWrapIds": [],
"columnWidths": {},
"columnTypeOverrides": [
{
"fields": ["unallocated"],
"value": "sparkline",
"id": 1734617227551
}
]
},
"honeycomb": {
"shape": "hexagon",
"dataMappings": { "value": "dt.cost.costcenter" },
"legend": "auto",
"displayedFields": ["dt.cost.costcenter"],
"colorMode": "color-palette",
"colorPalette": "categorical"
},
"histogram": {
"dataMappings": [{ "valueAxis": "interval", "rangeAxis": "" }],
"variant": "single",
"displayedFields": ["dt.cost.costcenter"]
},
"unitsOverrides": [
{
"identifier": "interval",
"unitCategory": "time",
"baseUnit": "nanosecond",
"displayUnit": null,
"decimals": 2,
"suffix": "",
"delimiter": false,
"added": 1720169570984
},
{
"identifier": "unassigned",
"unitCategory": "data",
"baseUnit": "gibibyte",
"displayUnit": null,
"decimals": 2,
"suffix": "",
"delimiter": false,
"added": 1720169591630
}
]
},
"querySettings": {
"maxResultRecords": 1000,
"defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 100,
"defaultSamplingRatio": 10,
"enableSampling": false
}
},
"33": {
"type": "markdown",
"title": "",
"content": "Dashboard version: 1.3\n\nDisclaimer: \nThis is an example dashboard to show what can be done with our DPS Cost Allocation feature\n[DPS Cost Allocation Feature](https://docs.astromkey.com/docs/manage/astromkey-platform-subscription/cost-allocation)\nPlease ensure the above listed pricing variables match with your rate card pricing."
},
"34": {
"type": "markdown",
"title": "",
"content": "# General hosts with missing Cost Allocation information\nAll hosts in the following list have not been configured for cost allocation"
}
},
"layouts": {
"0": { "x": 12, "y": 37, "w": 12, "h": 6 },
"1": { "x": 0, "y": 37, "w": 12, "h": 6 },
"2": { "x": 0, "y": 31, "w": 12, "h": 3 },
"5": { "x": 12, "y": 31, "w": 12, "h": 3 },
"6": { "x": 0, "y": 34, "w": 12, "h": 3 },
"7": { "x": 12, "y": 34, "w": 12, "h": 3 },
"11": { "x": 0, "y": 45, "w": 24, "h": 6 },
"15": { "x": 0, "y": 4, "w": 24, "h": 5 },
"16": { "x": 0, "y": 24, "w": 24, "h": 5 },
"17": { "x": 0, "y": 2, "w": 24, "h": 2 },
"19": { "x": 11, "y": 9, "w": 13, "h": 6 },
"20": { "x": 0, "y": 9, "w": 11, "h": 6 },
"23": { "x": 0, "y": 52, "w": 24, "h": 6 },
"24": { "x": 0, "y": 51, "w": 24, "h": 1 },
"28": { "x": 0, "y": 60, "w": 24, "h": 5 },
"29": { "x": 0, "y": 43, "w": 24, "h": 2 },
"30": { "x": 0, "y": 15, "w": 24, "h": 4 },
"31": { "x": 0, "y": 29, "w": 24, "h": 2 },
"32": { "x": 0, "y": 19, "w": 24, "h": 5 },
"33": { "x": 0, "y": 0, "w": 24, "h": 2 },
"34": { "x": 0, "y": 58, "w": 24, "h": 2 }
},
"importedWithCode": false,
"settings": {}
}
2. В Ключ-АСТРОМ перейдите в целевую среду и откройте Дашборды.
3. Выберите Загрузить и с помощью браузера файлов найдите JSON-файл, который вы только что сохранили.
4. Готовый дашборд теперь отображается в разделе Дашборды.
| Стоимость, отображаемая на демо-дашборде, основана на ручном назначении стоимости, как указано в запросе DQL. Она не сверяется автоматически с вашим тарифным планом. |
Используйте DQL-запросы
В этом разделе представлены различные запросы DQL, которые можно использовать для достижения конкретных целей.
Получите все события использования счетов в полном объеме (включая поля распределения затрат.
| fetch dt.system.events
| filter event.kind == "BILLING_USAGE_EVENT" |
Извлеките все события использования биллинга для всех поддерживаемых возможностей, связанных с хостом, и отобразите только поля возможностей, идентификатора хоста и распределения затрат.
| fetch dt.system.events
| filter event.kind == "BILLING_USAGE_EVENT" | fieldsKeep event.type, dt.entitiy.host, dt.cost.costcenter, dt.cost.product |
Проверьте, настроены ли уже какие-либо поля распределения затрат.
| fetch dt.system.events
| filter event.kind == "BILLING_USAGE_EVENT" | summarize count = count(), by:{event.type,dt.cost.costcenter} |
Экспорт данных о распределении затрат
Если вы хотите просмотреть данные о распределении затрат в отдельном инструменте, например Excel или Power BI, вы можете экспортировать данные.
| Лицензирование DPS и связанные с ним расходы рассчитываются на основе 15-минутных интервалов. Отчёты формируются ежедневно, поэтому вы не сможете увидеть данные об использовании за предыдущие <24 часа. |
Вы можете экспортировать данные о распределении затрат через
- Управление счетами.
- API.
Экспорт данных о распределении затрат через управление аккаунтом
В разделе Управление аккаунтом вы можете загрузить некоторые или все данные по распределению затрат из вашей текущей подписки DPS.
- Перейдите в раздел Управление аккаунтом.
- Выберите Лицензия > Управление затратами > Распределение затрат > Загрузить отчет о распределении затрат.
- Выберите период действия подписки.
- Выберите временной интервал, за который следует экспортировать данные: введите соответствующие даты в поля С и По.
- Выберите Запросить загрузку.
- На адрес электронной почты вошедшего в систему пользователя будет отправлено электронное письмо. Письмо отправляется с адреса Ключ-АСТРОМ, поэтому рекомендуем вам проверить свои настройки, чтобы убедиться, что вы можете получать письма с этого адреса. В письме содержится ссылка на скачивание CSV-файла, действующая в течение 24 часов.
Экспорт данных о распределении затрат через API
Все данные по распределению затрат можно получить через API.
Перед использованием API необходимо сгенерировать токен API управления учётными записями, как описано в разделе Аутентификация для API управления учётными записями. Кроме того, пользователю потребуется разрешение «Просмотр использования и потребления»: account-uac-read.
|
Используйте следующий API-вызов для получения данных о распределении затрат. Параметры описаны в разделе API подписки на платформу Ключ-АСТРОМ — управление распределением затрат.
GET /v1/subscriptions/{subscription-uuid}/cost-allocation?field={field}\&environment-id={environment-id}
Пример ответа приведен в блоке кода ниже.
| {
"records": [ { "date": "2024-04-01", "capability": "FULLSTACK_MONITORING","key": "department-A", "costs": 10, "usage": 2000 }, { "date": "2024-04-01", "capability": "FULLSTACK_MONITORING","key": "department-B", "costs": 40, "usage": 8000 }, { "date": "2024-04-01", "capability": "LOGS", "key": "department-A", "costs": 70, "usage": 700 }, { "date": "2024-04-01", "capability": "LOGS", "key": "department-B", "costs": 20, "usage": 200 }, { "date": "2024-04-01", "capability": "FULLSTACK_MONITORING", "key": "department-E", "costs": 10, "usage": 2000 }, { "date": "2024-04-01", "capability": "FULLSTACK_MONITORING", "key": "department-F", "costs": 50, "usage": 10000 }, { "date": "2024-04-01", "capability": "FULLSTACK_MONITORING", "key": null, "costs": 60, "usage": 12000 }, { "date": "2024-04-01", "capability": "LOGS", "key": null, "costs": 10, "usage": 100 }, { "date": "2024-04-02", "capability": "FULLSTACK_MONITORING", "key": "department-A", "costs": 10, "usage": 2000 }, { "date": "2024-04-02", "capability": "FULLSTACK_MONITORING", "key": "department-B", "costs": 40, "usage": 8000 }, { "date": "2024-04-02", "capability": "FULLSTACK_MONITORING", "key": "department-C", "costs": 70, "usage": 14000 }, { "date": "2024-04-02", "capability": "LOGS", "key": null, "costs": 500, "usage": 5000 } // more daily records ], "nextPageKey": "...", "environmentId": "tenant-A", "field": "COSTCENTER" } |
Поиск неисправностей
Если вы не можете найти данные по распределению затрат:
- Убедитесь, что у вас есть лицензия SaaS.
- Проверьте версию ЕдиногоАгента. Распределение затрат поддерживается в версиях 1.291 и выше.
- Убедитесь, что теги хоста находятся в списке разрешенных.
- Все ли названия тегов верны?
- Все ли теги в разделе Инфраструктура и управление операциями также находятся в списке разрешенных?
- Если какие-либо используемые теги отсутствуют в списке разрешённых, добавьте их, как описано в разделе Добавление тегов хоста. Убедитесь, что они установлены непосредственно в ЕдиномАгенте (т.е. через командную строку), а не в браузере.
- Выполнили ли вы перезапуск? Если сомневаетесь, перезапустите ЕдиныйАгент или модули Kubernetes. Затем подождите до 30 минут и повторите попытку.
