Modelo de hub FinOps
Este documento fornece um resumo detalhado do que está incluído no modelo de implantação de hubs FinOps. Você pode usar isso como um guia para ajustar sua implantação ou para informar personalizações que você pode fazer no modelo para atender às suas necessidades organizacionais. Este documento explica os pré-requisitos necessários para implantar o modelo, os parâmetros de entrada que você pode personalizar, os recursos que serão implantados e as saídas do modelo. As saídas de modelo podem ser usadas para se conectar às instâncias do hub no Power BI, no Data Explorer ou em outras ferramentas.
Os hubs FinOps incluem muitos recursos para oferecer uma plataforma FinOps segura e escalável. Os principais recursos com os quais irá interagir incluem:
- Data Explorer (Kusto) como um armazenamento de dados escalável para análise avançada (opcional).
- Conta de armazenamento (Data Lake Storage Gen2) como uma área de preparo para ingestão de dados.
- Instância do Data Factory para gerenciar a ingestão e a limpeza de dados.
Importante
Para usar o modelo, você precisa criar exportações do Gerenciamento de Custos para publicar dados no contêiner de msexports
na conta de armazenamento incluída. Para obter mais informações, consulte Criar um novo hub.
Pré-requisitos
Certifique-se de que os seguintes pré-requisitos sejam atendidos antes de implantar o modelo:
Você deve ter as seguintes permissões para criar os recursos implantados.
Recurso RBAC mínimo do Azure Implantar e configurar o Data Factory¹ Colaborador do Data Factory Implantar o Key Vault¹ Contribuidor do Key Vault Configurar segredos do Cofre da Chave¹ Administrador do Cofre de Chaves Criar identidade gerenciada¹ Contribuidor de identidade gerenciada Implantar e configurar o armazenamento¹ Contribuidor de Conta de Armazenamento Atribuir identidade gerenciada a recursos¹ Operador de identidade gerenciada Criar scripts de implantação¹ Função personalizada contendo apenas as Microsoft.Resources/deploymentScripts/write
Microsoft.ContainerInstance/containerGroups/write
e permissões como ações permitidas ou, alternativamente, Colaborador, que inclui essas permissões e todas as funções acimaAtribuir permissões a identidades gerenciadas¹ Administrador de Controle de Acesso Baseado em Função ou, alternativamente, Proprietário, que inclui essa função e todas as funções acima Criar uma assinatura ou exportação de custo de grupo de recursos² Colaborador de Gestão de Custos Criar uma exportação de custo de faturamento EA² Enterprise Reader, Department Reader ou Proprietário da Conta de Inscrição (Saiba mais) Criar uma exportação de custo de faturamento MCA² Contribuinte Ler dados de blob no armazenamento³ Contribuidor de Dados de Blobs de Armazenamento ¹ É suficiente atribuir permissões de implantação de recursos de hubs no escopo do grupo de recursos.
² As permissões de Gerenciamento de Custos devem ser atribuídas no escopo de onde você deseja exportar seus custos.
³ As permissões de dados de Blob são necessárias para acessar dados de custo exportados do Power BI ou de outras ferramentas de cliente.O provedor de recursos Microsoft.EventGrid deve estar registrado em sua assinatura. Para obter mais informações, consulte Registrar um provedor de recursos.
Importante
Se você esquecer essa etapa, a implantação será bem-sucedida, mas o gatilho de pipeline não será iniciado e os dados não estarão prontos. Para obter mais informações, consulte Solução de problemas de relatórios do Power BI.
Parâmetros
Aqui estão os parâmetros que você pode usar para personalizar a implantação:
Parâmetro | Tipo | Description | Default value |
---|---|---|---|
Nome do hub | String | Opcional. Nome do hub. Usado para garantir nomes de recursos exclusivos. | "Finops-Hub" |
localização | String | Opcional. Local do Azure onde todos os recursos devem ser criados. Consulte https://aka.ms/azureregions. | O mesmo que a implantação |
storageSku | String | Opcional. SKU de armazenamento para usar. LRS = Menor custo, ZRS = Alta disponibilidade. Observação: SKUs Standard não estão disponíveis para armazenamento Data Lake gen2. Permitido: Premium_LRS , Premium_ZRS . |
"Premium_LRS" |
dataExplorerName | String | Opcional. Nome do cluster do Azure Data Explorer a ser usado para análises avançadas. Se estiver vazio, o Azure Data Explorer não será implantado. Necessário usar com o Power BI se tiver mais de 2-5 milhões de dólares por mês em custos sob monitorização. Padrão: "" (não usar). | |
dataExplorerSkuName | String | Opcional. Nome da SKU do Azure Data Explorer. Padrão: "Dev(No SLA)_Standard_E2a_v4". | |
dataExplorerSkuTier | String | Opcional. Nível de SKU para o cluster do Azure Data Explorer. Utilize o Basic para o menor custo sem SLA, devido à presença de um único nó. Use Standard para alta disponibilidade e melhor desempenho. Valores permitidos: Básico, Padrão. Padrão: "Básico". | |
dataExplorerSkuCapacity | Int | Opcional. Número de nós a serem usados no cluster. Valores permitidos: 1 para a camada SKU Básica e 2-1000 para Standard. Padrão: 1. | |
etiquetas | Objeto | Opcional. Tags para aplicar a todos os recursos. Também adicionaremos a tag cm-resource-parent para roll-ups de custos aprimorados no Gerenciamento de Custos. |
|
tagsByResource | Objeto | Opcional. Tags a serem aplicadas a recursos com base em seu tipo de recurso. As tags específicas do tipo de recurso serão mescladas com as tags para todos os recursos. | |
escoposToMonitor | Matriz | Opcional. Lista de IDs de escopo para monitorar e ingerir custo. | |
exportRetentionInDays | Int | Opcional. Número de dias de dados a serem retidos no contêiner msexports. | 0 |
ingestãoRetençãoInMeses | Int | Opcional. Número de meses de dados a reter no recipiente de ingestão. | 13 |
retençãoDeRegistoDoExploradorDeDadosEmDias | Int | Opcional. Número de dias de dados a reter nas tabelas do Data Explorer *_log. | 0 |
dataExplorerFinalRetentionInMonths | Int | Opcional. Número de meses de dados a reter nas tabelas do Data Explorer *_final_v*. | 13 |
remoteHubStorageUri | String | Opcional. Conta de armazenamento para enviar dados por push para ingestão em um hub remoto. | |
remoteHubStorageKey | String | Opcional. Chave de conta de armazenamento a ser usada ao enviar dados por push para um hub remoto. | |
ativarAcessoPúblico | string | Opcional. Desative o acesso público ao datalake (firewall de armazenamento). | Falso |
prefixoDeEndereçoDaRedeVirtual | String | Opcional. Intervalo de endereços de IP para a rede virtual privada utilizada pelos hubs FinOps.
/26 é recomendado para evitar o desperdício de IPs. Internamente, as seguintes sub-redes serão criadas: /28 para pontos de extremidade privados, outra sub-rede /28 para scripts de implantação temporários (instâncias de contêiner) e /27 para o Azure Data Explorer, se habilitado. |
'10.20.30.0/26' |
Recursos
Os recursos a seguir são criados no grupo de recursos de destino durante a implantação.
Os recursos usam a seguinte convenção de nomenclatura: <hubName>-<purpose>-<unique-suffix>
. Os nomes são ajustados para levar em conta as restrições de comprimento e caracteres. O é usado para garantir que os nomes de recursos sejam globalmente exclusivos, <unique-suffix>
quando necessário.
-
<hubName>store<unique-suffix>
conta de armazenamento (Data Lake Storage Gen2)- Recipientes de blob:
-
msexports
– Armazena temporariamente as exportações de Gestão de Custos. -
ingestion
– Armazena dados ingeridos.Nota
No futuro, usaremos esse contêiner para preparar dados externos fora do Gerenciamento de Custos. -
config
– Armazena metadados de hub e definições de configuração. Ficheiros:-
settings.json
– Configurações do Hub. -
schemas/focuscost_1.0.json
– Definição do esquema FOCUS 1.0 para conversão de parquet. -
schemas/focuscost_1.0-preview(v1).json
– Definição de esquema FOCUS 1.0-preview para conversão de parquet. -
schemas/pricesheet_2023-05-01_ea.json
– Tabela de preços Versão da definição do esquema EA 2023-05-01 para conversão para parquet. -
schemas/pricesheet_2023-05-01_mca.json
– Definição do esquema de folha de preços MCA versão 2023-05-01 para conversão em parquet. -
schemas/reservationdeatils_2023-03-01.json
– Definição do esquema de detalhes da reserva versão 2023-03-01 para conversão de parquet. -
schemas/reservationrecommendations_2023-05-01_ea.json
– Recomendações de reserva Definição do esquema EA versão 2023-05-01 para conversão em parquet. -
schemas/reservationrecommendations_2023-05-01_mca.json
– Recomendações de reserva para a definição do esquema MCA, versão 2023-05-01, para conversão em parquet. -
schemas/reservationtransactions_2023-05-01_ea.json
– Definição do esquema EA de transações de reserva versão 2023-05-01 para conversão para parquet. -
schemas/reservationtransactions_2023-05-01_mca.json
– Transações de reserva, definição de esquema MCA versão 2023-05-01 para conversão parquet.
-
-
- Recipientes de blob:
-
<hubName>script<unique-suffix>
conta de armazenamento (Data Lake Storage Gen2) para scripts de implementação. -
<hubName>-engine-<unique-suffix>
Instância do Data Factory- Gasodutos:
-
config_InitializeHub
– Inicializa (ou atualiza) a instância do hub FinOps após a implantação. -
config_ConfigureExports
– Cria exportações de Gestão de Custos para todos os escopos. -
config_StartBackfillProcess
– Executa o trabalho de backfill para cada mês com base nas configurações de retenção. -
config_RunBackfillJob
– Cria e aciona exportações para todos os escopos definidos para o intervalo de datas especificado. -
config_StartExportProcess
– Obtém uma lista de todas as exportações do Cost Management configuradas para este hub com base nos escopos definidos em settings.json e, em seguida, executa cada exportação usando o pipeline de config_RunExportJobs. -
config_RunExportJobs
– Executa as exportações de Gestão de Custos especificadas. -
msexports_ExecuteETL
– Enfileira o pipeline para levar em conta os limites de gatilhomsexports_ETL_ingestion
do pipeline do Data Factory. -
msexports_ETL_ingestion
– Converte as exportações de Gestão de Custos em parquet e remove dados históricos duplicados na exportação de cada dia. -
ingestion_ExecuteETL
– Enfileira o pipeline para levar em conta os limites de gatilhoingestion_ETL_dataExplorer
do pipeline do Data Factory. -
ingestion_ETL_dataExplorer
– Ingere dados de parquet em um cluster do Azure Data Explorer.
-
- Gatilhos:
-
config_SettingsUpdated
– Aciona oconfig_ConfigureExports
pipeline quando settings.json é atualizado. -
config_DailySchedule
– Aciona oconfig_RunExportJobs
pipeline diariamente para os dados de custo do mês atual. -
config_MonthlySchedule
– Aciona oconfig_RunExportJobs
pipeline mensalmente para os dados de custo do mês anterior. -
msexports_ManifestAdded
– Aciona o pipeline quando asmsexports_ExecuteETL
exportações do Gerenciamento de Custos são concluídas. -
ingestion_ManifestAdded
– Aciona o pipelineingestion_ExecuteETL
quando ficheiros manifest.json são adicionados (manipulados pelo pipelinemsexports_ETL_ingestion
).
-
- Pontos de extremidade privados gerenciados
-
<hubName>store<unique-suffix>
- Ponto de extremidade privado gerido para conta de armazenamento. -
<hubName>-vault-<unique-suffix>
- Ponto de extremidade privado gestido para o Azure Key Vault.
-
- Gasodutos:
-
<hubName>-vault-<unique-suffix>
Instância do Cofre da Chave- Segredos:
- Identidade gerenciada do sistema Data Factory
- Segredos:
-
<dataExplorerName>
cluster de Data Explorer-
Hub
banco de dados – Funções voltadas para o público para abstrair internos.- Inclui 2 conjuntos de funções:
- Funções específicas do conjunto de dados para a versão FOCUS suportada mais recente (por exemplo,
Costs
,Prices
). - Funções específicas do conjunto de dados para cada versão suportada do FOCUS (por exemplo,
Costs_v1_0
para o FOCUS 1.0). Essas funções são fornecidas para compatibilidade com versões anteriores. Todas as funções retornam todos os dados alinhados à versão FOCUS de destino.
- Funções específicas do conjunto de dados para a versão FOCUS suportada mais recente (por exemplo,
- Os conjuntos de dados incluem:
Costs
,Prices
. - As versões FOCUS suportadas incluem:
v1_0
.
- Inclui 2 conjuntos de funções:
-
Ingestion
banco de dados – Armazena dados ingeridos.- Configurações:
-
HubSettingsLog
tabela – Armazena um histórico de alterações de configuração de alto nível (por exemplo, versões, escopos). - Função
HubSettings
– Obtém a versão mais recente das configurações da instância do hub. - Função
HubScopes
– Obtém os escopos atualmente configurados para esta instância de hub.
-
- Dados abertos:
-
PricingUnits
tabela – ficheiro de mapeamento PricingUnits do kit de ferramentas FinOps. Usado para normalização e limpeza de dados. -
Regions
tabela – arquivo de mapeamento de regiões do kit de ferramentas FinOps. Usado para normalização e limpeza de dados. -
ResourceTypes
tabela – arquivo de mapeamento ResourceTypes do kit de ferramentas FinOps. Usado para normalização e limpeza de dados. -
Services
tabela – arquivo de mapeamento de Serviços do conjunto de ferramentas FinOps. Usado para normalização e limpeza de dados.
-
- Conjuntos de dados:
- Tabela
<dataset>_raw
– Dados brutos diretamente da fonte de aquisição. Usa um esquema de união para dados de várias fontes. - Função
<dataset>_transform_vX_Y
– Normaliza e limpa dados brutos para alinhar à versão FOCUS de destino usando tabelas de dados abertos, conforme necessário. -
<dataset>_final_vX_Y
table – Versão limpa da tabela bruta correspondente alinhada à versão FOCUS de destino. Preenchido por meio de uma política de atualização que usa a função de transformação correspondente quando os dados são ingeridos em tabelas brutas.
- Tabela
- Configurações:
-
Além das informações anteriores, os recursos a seguir são criados para automatizar o processo de implantação. Os scripts de implantação devem ser excluídos automaticamente. No entanto, não exclua as identidades gerenciadas, pois isso pode causar erros ao atualizar para a próxima versão.
- Identidades gerenciadas:
-
<storage>_blobManager
(Storage Blob Data Contributor) – Carrega o arquivo settings.json. -
<datafactory>_triggerManager
(Colaborador do Data Factory) – Interrompe os gatilhos antes da implantação e os inicia após a implantação.
-
- Scripts de implantação (excluídos automaticamente após uma implantação bem-sucedida):
-
<datafactory>_deleteOldResources
– Exclui recursos não utilizados de implantações anteriores de hubs FinOps. -
<datafactory>_stopTriggers
– Para todos os gatilhos no hub usando a identidade triggerManager. -
<datafactory>_startTriggers
– Inicia todos os gatilhos no hub usando a identidade triggerManager. -
<storage>_uploadSettings
– Carrega o arquivo settings.json usando a identidade blobManager.
-
Saídas
Aqui estão as saídas geradas pela implantação:
Saída | Tipo | Description | Valor |
---|---|---|---|
Designação | String | Nome do grupo de recursos. | |
localização | String | Os recursos de localização de recursos do Azure foram implantados em. | |
dataFactorytName | String | Nome do Data Factory. | |
storageAccountId | String | ID do recurso da conta de armazenamento implantada. | |
storageAccountName | String | Nome da conta de armazenamento criada para a instância do hub. Isso deve ser usado ao conectar relatórios do Power BI do kit de ferramentas FinOps aos seus dados. | |
storageUrlForPowerBI | String | URL a ser usada ao conectar relatórios personalizados do Power BI aos seus dados. | |
clusterId | String | ID do recurso do cluster do Data Explorer. | |
clusterUri | String | URI do cluster do Data Explorer. | |
ingestionDbName | String | Nome do banco de dados do Data Explorer usado para ingerir dados. | |
hubDbName | String | Nome do banco de dados do Data Explorer usado para consultar dados. | |
managedIdentityId | String | ID do objeto da identidade gerenciada do Data Factory. Isso será necessário ao configurar exportações gerenciadas. | |
managedIdentityTenantId | String | ID do inquilino do Azure AD. Isso será necessário ao configurar exportações gerenciadas. |