pipelines
pipelines copied to clipboard
Custo de armazenamento e processamento do GCP
- [ ] Descobrir quais são os indicadores relevantes
É possÃvel exportar as informações de billing para o BQ a partir desse tutorial Mais informações a respeito aqui
Esse caminho me parece interessante! Ao ter os dados no BQ conseguimos facilmente montar gráficos no Metabase!
@rdahis o que acha de exportarmos essa informação para o BQ?
Alguns pontos que li que parecem relevantes:
- Se quisermos ver o custo do GKE detalahado é necessário habilitar essa função, mais detalhes sobre isso nesse link
- Eu não sei o que o GKE mede então não sei se isso é importante. Talvez podemos olhar juntos os relatórios pela interface do google para entender melhor sobre
- Os conjuntos que contêm dados de preços coletam apenas dados de faturamento do Google Cloud incorridos a partir da data em que você configurou a exportação do Faturamento do Cloud. Ou seja, os dados do Google Cloud Billing não foram adicionados retroativamente. Sendo assim, você não verá os dados do Cloud Billing antes de ativar a exportação.
tem um tutorial que parece bem prático aqui também!
(confesso que estou confusa com a quantidade de tutoriais)
Já tÃnhamos todos os passos de setup feitos! Só não tenho certeza se está exportando dados de todos os projetos (em particular o basedosdados-dev
) ou só o basedosdados
.
Já viu esse conjunto basedosdados.br_bd_indicadores.gcp_billing_export_v1_01709D_1C0CEE_6E40BF
? E esse basedosdados.br_bd_indicadores.gcp_billing_export_resource_v1_01709D_1C0CEE_6E40BF
.
opa! Não tinha visto, vou ver!
Algumas anotações aqui:
- Por enquanto não temos nenhuma tag
aparentemente tags são ferramentas para gerenciar acessos de usuários, labels é o que precisamos usar aqui
- As labels podem me ajudar a entender os custos, mas com certeza precisamos melhorar como elas estão sendo gravadas, por enquanto elas nao me ajudam em quase nada
- Parece que os custos com k8 estão todos em dev, mas confesso que não entendo muito dessa parte de processamento
- A tabela de dados detalhadas por recurso pode detalha os seguintes recursos: Compute Engine Google Kubernetes Engine (GKE) Cloud Functions Cloud Run Cloud SQL Cloud Spanner App Engine Firestore e Datastore
- Os 2 recursos que temos contato direto em dados são Cloud Storage e BigQuery. Ambos não estão na lista e para melhor gerenciá-los vamos ter que usar labels
- Ainda assim podemos ver se temos como entender melhor como funciona o Compute Engine e Kubernetes Engine pq são 2 custos importantes pra gente.
- O próximo passo é ver se consigo entender de onde estão vindo as labels. Já temos algumas tabelas com labels, mas elas nao estão aparecendo do jeito que eu imaginei
- Inclui algumas labels para ver sse segunda já consigo usar essas labels para montar um plano de acompanhamento
- Seria interessante entender se temos como usar a label
dbt_invocation_id
para rastrear custos com o dbt
Query para visualizar os custos por projeto e por tipo de recurso:
SELECT
invoice.month,
service.description,
project.name,
SUM(cost) as cost
FROM `basedosdados.br_bd_indicadores.gcp_billing_export_resource_v1_01709D_1C0CEE_6E40BF`
group by 1,2,3
order by 1 desc, 4 desc
Query para quais labels temos atualmente e os custos associados a elas mes a mes:
SELECT
invoice.month,
labels.key,
labels.value,
SUM(cost) as cost
FROM `basedosdados.br_bd_indicadores.gcp_billing_export_resource_v1_01709D_1C0CEE_6E40BF`
LEFT JOIN UNNEST(labels) as labels
GROUP BY 1,2,3
ORDER BY invoice.month desc, cost desc
Query de todas as contas e labels que possuem a chave de dbt_invocation_id
SELECT
invoice.month,
service.description,
project.name,
TO_JSON_STRING(labels),
SUM(cost) as cost
FROM `basedosdados.br_bd_indicadores.gcp_billing_export_resource_v1_01709D_1C0CEE_6E40BF`
WHERE TO_JSON_STRING(labels) LIKE ("%dbt_invocation_id%")
GROUP BY 1,2,3,4
ORDER BY invoice.month desc, cost desc
Eu entendi certo que parece possÃvel visualizar o custo de cada dbt run
com labels?
Parece, mas confesso que não entendi muito bem como que esse id é gerado e como podemos saber o que se relaciona com o que
Aparentemente na parte de custos do BigQuery só aparecem as labels de conjunto, não de tabela, o que é uma pena pq é bem mais fácil gerenciar as labels de tabela com o dbt.
Próximos passos:
- Pensar num modelo de colocar labels que facilite o gerenciamento de custos
Primeira proposta de labels (já implementada no conjunto do cnpj)
- dataset:dataset_slug
- bdpro:true/false
- environment:production/development/staging
- pipeline:true/false
- update-frequency:daily/weekly/monthly/yearly
- size:small/medium/large
- owner:owner_name
- query-optimization: true
Descobri como usar a label dbt_invocation_id para monitorar custos do dbt: é necessário cruzar com a tabela INFORMATION_SCHEMA.JOBS