O blog da AWS

Visualize os custos do Amazon QuickSight usando AWS CUR e tags de alocação de custos

Por Ramon Lopez e Ashok Dasineni

O Amazon QuickSight é uma solução de business intelligence (BI) que qualquer organização pode utilizar para compartilhar dados e insights com qualquer pessoa. Como uma ferramenta de BI serverless, ela oferece um conjunto abrangente de recursos de análise avançada, e um dos principais benefícios é que os preços são baseados no consumo. Dito isso, o Quicksight pode ser usado para diferentes casos de uso e cada variante pode exigir um método diferente para rastrear e relatar o custo de execução do QuickSight. Por exemplo, talvez você tenha implantado o QuickSight como sua principal ferramenta corporativa de BI com milhares de usuários em dezenas de departamentos e gostaria de cobrar por departamento. Ou talvez você tenha integrado os recursos visuais do QuickSight em seu aplicativo de software como serviço (SaaS) usando namespaces para separar seus clientes por tenant e fornecer insights a milhares ou milhões de usuários. Nesse caso, você deseja rastrear o custo por tenant. Em qualquer cenário, é importante tratar a plataforma como qualquer outro ativo corporativo e otimizar os custos, rastrear o uso por recurso/usuário, implementar as melhores práticas de governança e buscar a excelência operacional.

A alocação eficaz de custos e o gerenciamento de recursos são uma responsabilidade fundamental no espaço da infraestrutura em nuvem. Os relatórios de custo e uso da AWS (AWS CUR) servem como base para qualquer relatório sobre custos na AWS. Ele fornece uma lista abrangente dos custos incorridos nessa conta em todos os serviços da AWS. Além disso, as tags de alocação de custos da AWS são um recurso importante que o AWS Billing oferece. Você pode usar essas tags no AWS CUR, atuando como rótulos para recursos e oferecendo informações detalhadas sobre as tendências de consumo do ambiente. Eles podem transformar a forma como as despesas são alocadas e gerenciadas nas infraestruturas de nuvem, ao mesmo tempo em que permitem mecanismos de cobrança interna e externa.

Nesta postagem, exploramos como você pode usar o AWS CUR e as tags da AWS para monitorar como usuários específicos estão usando o QuickSight. Também discutimos como essas tags podem ajudar as organizações a implementar controles de custos na nuvem, fornecendo os dados necessários para apoiar relatórios personalizados de estorno.

Visão geral da solução

Vamos pegar a AnyCompany Inc., uma fornecedora independente de software (ISV) fictícia, como exemplo. A AnyCompany usa o QuickSight para fornecer análises a seus clientes em seu serviço baseado em nuvem. Com o AWS CUR, eles obtêm informações detalhadas sobre o uso por namespace e são capazes de produzir relatórios de custos abrangentes por tenant. Eles podem personalizar ainda mais usando as tags QuickSight para rastrear despesas e fazer cobranças em seus departamentos internos, centros de custos, projetos ou clientes.

Pré-requisitos

Antes de começar a aplicar tags e criar painéis do QuickSight, conclua as seguintes etapas de pré-requisito:

  1. Implante o AWS CUR aproveitando o AWS Data Exports. O AWS CUR legado ou padrão funcionará com essa abordagem. Observe que, no momento em que este artigo foi escrito, os relatórios de custo e uso implantados no console de faturamento da AWS não contêm IDs de recursos e não fornecem o nível de detalhes que desejamos.
  2. Como parte da etapa anterior, um trabalho é criado para exportar o arquivo CUR para o Amazon Simple Storage Service (Amazon S3).
  3. Como estamos usando o Amazon Athena para consultar os relatórios, os dados do CUR devem ser rastreados e disponibilizados no catálogo de dados do AWS Glue e/ou por meio do AWS Lake Formation.
  4. Contrate o QuickSight Enterprise, caso ainda não tenha feito isso.
  5. Configure o acesso no QuickSight ao Athena e ao Amazon S3 para que você possa consultar o arquivo CUR. Para obter mais informações, consulte Como acessar os recursos da AWS.

Uma alternativa para esses pré-requisitos é implementar a solução CUDOS. Isso implantará o AWS CUR e disponibilizará dados no Amazon S3 e no Athena. Para obter mais informações, consulte Cloud Intelligence Dashboards.

Tag para os usuários

A primeira etapa é ter tags para os usuários do QuickSight e atribuir rótulos de chave-valor, que serão usados nos dados do CUR. Usamos a AWS Command Line Interface (AWS CLI) e o comando tag-resource. Conclua as seguintes etapas:

  1. Na CLI da AWS instalada localmente ou usando o AWS CloudShell, marque um usuário com o seguinte código:

aws quicksight tag-resource --resource-arn arn:aws:quicksight:<Region>:<AWS-Account-ID>:user/default/Admin/<QuickSight-User-Name> --tags Key=<key-name>,Value=<Value>

Neste exemplo, usamos costcenter como nossa chave de tag.

  1. 2. Na página inicial do AWS Management Console, pesquise por “Billing and Cost Management” e escolha-o na lista de serviços.
  2. No console Billing and Cost Management, em Cost Organization no painel de navegação, escolha Tags de Allocation tags.
  3. A chave de tag que você criou será preenchida (pode levar algumas horas para ser listada). Por padrão, a tag estará inativa.

  1. 3. Selecione sua tag e escolha Activate.
  1. Pode levar de 24 a 48 horas para preencher as tags recém-ativadas na tabela do Athena para gerar relatórios de CUR.
    1.  4. Dada a alteração no esquema dos dados CUR com a adição de uma nova tag, o esquema na tabela precisa ser atualizado. Se estiver usando o AWS Data Exports, após 24 a 48 horas, o crawler deverá ser executado novamente para capturar a nova coluna. Isso não é necessário com o CUDOS, pois o pipeline e o crawler são executados de acordo com um cronograma.
    2. Para validar se a tag está disponível, podemos executar uma consulta simples no AWS Athena. No editor de consultas do Athena, escolha sua fonte de dados, banco de dados e tabela para confirmar a localização dos dados CUR. Atualize o SQL abaixo com os nomes corretos do banco de dados e da tabela. Neste exemplo, usamos o banco de dados athenacurcfn_aws_cost_and_usage_report e a tabela ad_aws_cost_and_usage_report. Edite e, em seguida, execute o script SQL básico no editor do Athena para confirmar se a tag está nos dados e veja o detalhamento do custo para o usuário, que pode ser filtrado usando a coluna resource_tags_user_costcenter para o usuário do QuickSight marcado com o valor Finance.
      select * FromDatabase.”Tablename” where line_item_product_code = 'AmazonQuickSight'

Crie uma análise de custos do QuickSight

Com o CUR implantado e os usuários com as tags, podemos criar um painel do QuickSight que fornece informações sobre o consumo de custos do QuickSight. Você pode usar as etapas desta seção como ponto de partida para criar um painel de custos personalizado, adaptado às necessidades da sua organização.

É importante destacar a origem de determinados dados importantes. Com a seguinte instrução SQL, estamos construindo uma fatia da tabela CUR básica para fins de nossa análise. Você pode personalizar ainda mais essa instrução SQL para atender às necessidades específicas da sua organização. A seguir estão os termos-chave extraídos pelo CUR por meio do SQL personalizado:

  • Recurso QuickSight — Essa coluna é criada por uma declaração de caso em SQL e agrupa os elementos de custo do QuickSight por recurso. Ele divide os custos nas seguintes categorias: cobranças de autor e administrador, cobranças de leitores, custos adicionais do Amazon Q no QuickSight, alertas, SPICE e relatórios.
  • ID do recurso — Essa coluna é originária do CUR e inclui o ID do recurso responsável pelo custo. Nos dados do QuickSight, ele pode representar um ARN de usuário ou ARN de painel.
  • Categoria de ID do recurso — Essa coluna é criada pela instrução SQL e categoriza os recursos com base no tipo de recurso.
  • Namespace do usuário — Essa coluna é criada pela instrução SQL e extrai o namespace do usuário do ID do recurso.
  • Nome de usuário — Essa coluna é criada pela instrução SQL e extrai o nome do usuário da ID do recurso.
  • ID do painel — Essa coluna é criada pela instrução SQL e extrai o ID do painel do ID do recurso.

Conclua as etapas a seguir para criar seu conjunto de dados e sua análise:

  1. No console do QuickSight, escolha Datasets no painel de navegação.
  2. Escolha Create new dataset.
  3. Escolha o Athena como sua fonte de dados.
  4. Insira um nome para sua fonte de dados e escolha Create data source.

5. Escolha Use custom SQL para inserir seu exemplo de SQL.

Atualize o nome do esquema e o nome da tabela na instrução SQL Select a seguir para corresponder ao esquema e a tabela do Catálogo de Dados. Se houver alguma tag, a coluna deverá ser adicionada na instrução SQL.

SELECT 
  bill_payer_account_id as "Bill Payer Account ID", 
  line_item_usage_account_id as "Usage Account ID", 
  bill_billing_period_start_date as "Billing period", 
  line_item_usage_start_date as "Usage Date", 
  line_item_resource_id as "Resource ID", 
  TAG NAME as tag,
  (
    CASE WHEN (
      LOWER(line_item_resource_id) LIKE '%analysis%'
    ) THEN 'Analysis' WHEN (
      LOWER(line_item_resource_id) LIKE '%dashboard%'
    ) THEN 'Dashboard' WHEN (
      LOWER(line_item_resource_id) LIKE '%user%'
    ) THEN 'User' WHEN (
      LOWER(line_item_resource_id) is null
    ) THEN 'No Resource' ELSE 'other' END
  ) as "Resource ID Category", 
  line_item_usage_type as "Line Item Usage type", 
  line_item_line_item_description as "Line Item Description", 
  Case when (
    LOWER(line_item_resource_id) LIKE '%user%'
  ) 
  or (
    LOWER(line_item_resource_id) LIKE '%anonymousUser%'
  ) then SPLIT_PART(line_item_resource_id, '/', 2) else NULL end as "User namespace", 
  Case when (
    LOWER(line_item_resource_id) LIKE '%user%'
  ) 
  or (
    LOWER(line_item_resource_id) LIKE '%anonymousUser%'
  ) then ELEMENT_AT(
    SPLIT(line_item_resource_id, '/'), 
    -1
  ) else '' end AS Username, 
  Case WHEN (
    LOWER(line_item_resource_id) LIKE '%dashboard%'
  ) 
  or (
    LOWER (line_item_resource_id) LIKE '%alert%'
  ) then ELEMENT_AT(
    SPLIT(line_item_resource_id, '/'), 
    -1
  ) else NULL end AS DashboardID, 
  (
    CASE WHEN (
      LOWER(line_item_usage_type) LIKE '%spice%'
    ) THEN 'SPICE' WHEN (
      LOWER(line_item_usage_type) LIKE '%alerts%'
    ) THEN 'QuickSight Alerts' WHEN (
      LOWER(line_item_usage_type) LIKE '%-q%'
    ) THEN 'QuickSight Q' WHEN (
      (
        LOWER(line_item_usage_type) LIKE 'qs-user-enterprise%'
      ) 
      OR (
        LOWER(line_item_usage_type) = 'qs-user-standard'
      )
    ) THEN 'Authors' WHEN (
      LOWER(line_item_usage_type) LIKE 'qs-reader%'
    ) THEN 'Readers' WHEN (
      LOWER(line_item_usage_type) LIKE '%spice'
    ) THEN 'SPICE' WHEN (
      LOWER(line_item_usage_type) LIKE '%alerts%'
    ) THEN 'Alerts' WHEN (
      LOWER(line_item_usage_type) LIKE '%qs-report%'
    ) THEN 'Reporting' ELSE line_item_usage_type END
  ) QuickSightFeatures, 
  line_item_usage_amount as "usage amount", 
  line_item_unblended_cost as "unblended cost", 
  line_item_blended_cost as "blended cost" 
FROM 
  [DATABASE NAME].[Table Name] c 
WHERE 
  (
    (
      line_item_product_code = 'AmazonQuickSight'
    ) 
    AND (
      line_item_line_item_type IN (
        'DiscountedUsage', 'Usage', 'BundledDiscount'
      )
    )
  )
  1. Salve e publique o conjunto de dados.

Com o conjunto de dados preparado e disponível, podemos criar nossa análise e painel. Veja a seguir alguns exemplos de visualizações que você pode criar com alguns cliques.

  1. 8. Primeiro, visualizamos os custos mensais do QuickSight:
    1. Adicione um novo visual de KPI ao painel.
    2. Adicione o line item cost como um valor e a line item usage start date ao trend group.
    3. Altere a agregação para mensal.

  1. Em seguida, visualizamos o custo por característica do produto:
    1. Adicione um visual de gráfico circular.
    2. Adicione o line item cost como um valor.

Opcionalmente, filtre pelo mês mais recente.

  1. Também podemos visualizar o custo mensal por usuário para autores e leitores:
      1. Adicione um visual de tabela dinâmica.
      2. Adicione o Username ao Rows e a Usage Date (por mês) e o custo não combinado como valor.
      3. Para filtrar os custos não relacionados ao usuário, adicione um filtro e exclua o nome de usuário null.
      4. Adicione o campo QuickSight Features às linhas para diferenciar entre autores, leitores e outras categorias de custo.

Para preços baseados em sessões, o uso será o número de sessões. Para preços baseados no usuário, o uso representa o custo incorrido no mês.

  1. 11. A seguir, vamos visualizar o custo mensal por namespace:
    1. Adicione um visual de gráfico de barras empilhadas.
    2. Adicione a usage date por mês ao eixo x, o unblended cost como valor e o namespace ao grupo/cor.
    3. Filtre namespaces null para garantir que vejamos apenas os custos relacionados ao namespace e ao usuário.

O namespace é capturado no SQL personalizado anterior analisando o ID do recurso para recursos do tipo username.

Por fim, visualizamos o custo mensal para os usuários por tag:

      1. Precisamos adicionar uma coluna de tag ao SQL personalizado, com base no nome da tag e na tabela definidos no AWS Glue pelo crawler. Por exemplo, se sua tag estiver como cost_center, você adicionaria o seguinte como uma coluna na instrução SELECT: Resource_tags_user_cost_center como cost_center_tag
      2. Adicione um visual de tabela dinâmica ao painel.
      3. Adicione tag name e username no Rows, a data e o mês de uso no Columns e o unblended cost como valor.
      4. Para calcular mês a mês, altere o campo calculado para capturar a diferença percentual usando a seguinte fórmula: periodOverPeriodPercentDifference(sum({blended cost}),{Usage Date})

A captura de tela a seguir mostra nosso painel final.

Limpeza

Para limpar seus recursos quando você terminar de usar essa solução. No AWS QuickSight, exclua o conjunto de dados, a análise e todos os painéis que você criou. No AWS Glue, exclua tabelas ou crawlers criados. No AWS Billing, desative a exportação de dados. No AWS S3, exclua os dados CUR.

Conclusão

Neste post, mostramos como configurar tags, conectar dados CUR ao Amazon S3 e criar um painel do QuickSight que fornece informações detalhadas sobre os custos do QuickSight.

Para muitos clientes, isso é apenas o começo do que é possível com essa solução. Por exemplo, como administrador de análise ou BI, agora você tem uma maneira de enviar relatórios mensais paginados para a liderança do departamento com o custo e o uso detalhados do QuickSight para os departamentos que você gerencia. Além disso, a liderança pode criar alertas que rastreiem seus custos em comparação com os orçamentos. Como proprietário do produto em um ISV, agora você tem ferramentas mais precisas para estornar ou monetizar sua oferta de BI. Essas possibilidades fornecem aos administradores de BI os detalhes necessários para monitorar e otimizar o custo de todos os seus produtos de dados QuickSight.

Comece implementando com relatórios de custo e uso e comece a usar o QuickSight!

Este conteúdo é uma tradução do blog original em inglês (Link aqui).


Sobre os autores

Ramon Lopez é arquiteto lider de soluções do Amazon QuickSight. Com muitos anos de experiência na criação de soluções de BI e experiência em contabilidade, ele adora trabalhar com clientes, criar soluções e oferecer serviços de classe mundial. Quando não está trabalhando, ele prefere ficar ao ar livre no oceano ou no alto de uma montanha.

 

 

Ashok Dasineni é arquiteto de soluções do Amazon QuickSight. Antes de ingressar na AWS, a Ashok trabalhou com clientes e organizações no domínio bancário e financeiro, com foco na pesquisa e prevenção de fraudes. Ele projetou e implementou soluções inovadoras para melhorar os processos de negócios, reduzir custos e aumentar a receita, permitindo que empresas em todo o mundo alcancem seu maior potencial por meio de dados.

Sobre o tradutor

Eduardo Pereira é Arquiteto de Soluções. Atua ajudando clientes do setor Enterprise da industria Financeira durante a sua jornada na nuvem da AWS. Tem grande interesse na área de Analytics, observabilidade e serverless.