Modelo de hub FinOps
Nos bastidores, dê uma olhada no que compõe o modelo de hub FinOps, incluindo entradas e saídas.
Este modelo cria uma nova instância do hub FinOps.
Os hubs FinOps incluem:
- Data Lake Storage para hospedar dados de custo.
- Data Factory para processamento e orquestração de dados.
- Key Vault para armazenar segredos.
Importante
Para usar o modelo, você precisa criar uma exportação do Gerenciamento de Custos que publique dados de custo no msexports
contêiner na conta de armazenamento incluída. Para obter mais informações, consulte Criar um novo hub.
Pré-requisitos
Verifique se os seguintes pré-requisitos foram 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 da fábrica de dados Implantar o Key Vault¹ Colaborador do Key Vault Configurar segredos do Key Vault¹ Administrador do Key Vault Criar identidade gerenciada¹ Colaborador de Identidade Gerenciada Implantar e configurar o armazenamento¹ Colaborador da Conta de Armazenamento Atribuir identidade gerenciada aos recursos¹ Operador de Identidade Gerenciada Criar scripts de implantação¹ Função personalizada contendo apenas as Microsoft.Resources/deploymentScripts/write
permissões eMicrosoft.ContainerInstance/containerGroups/write
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 exportação de custo de assinatura ou grupo de recursos² Colaborador do Gerenciamento de Custos Criar uma exportação de custo de faturamento do EA² Leitor Corporativo, Leitor de Departamento ou Proprietário da Conta de Inscrição (Saiba mais) Criar uma exportação de custo de faturamento de MCA² Colaborador Ler dados de blob no armazenamento³ Colaborador de dados de blob de armazenamento ¹ É suficiente atribuir permissões de implantação de recursos de hubs no escopo do grupo de recursos.
² As permissões do 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 ser 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 do 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 | Descrição | Valor padrão |
---|---|---|---|
hubName | string | Opcional. Nome do hub. Usado para garantir nomes de recursos exclusivos. | "finops-hub" |
local | string | Opcional. Local do Azure onde todos os recursos devem ser criados. Consulte https://aka.ms/azureregions. | O mesmo que implantação |
skipEventGridRegistration | bool | Indica se o provedor de recursos da Grade de Eventos já foi registrado (por exemplo, em uma implantação de hub anterior). O registro de RP da Grade de Eventos é necessário. Se não for definido, um namespace temporário da Grade de Eventos será criado para registrar automaticamente o provedor de recursos. | false (registrar RP) |
EventGridLocation | string | Opcional. Local do Azure a ser usado para um namespace temporário da Grade de Eventos para registrar o provedor de recursos Microsoft.EventGrid se não houver suporte para o local primário. O namespace é excluído e não é usado para operação do hub. | Mesmo que location |
armazenamentoSku | String | Opcional. SKU de armazenamento a ser usado. LRS = Menor custo, ZRS = Alta disponibilidade. Os SKUs Standard não estão disponíveis para o armazenamento do Data Lake gen2. Permitido: Premium_LRS , Premium_ZRS . |
"Premium_LRS" |
marcas | objeto | Opcional. Tags a serem aplicadas a todos os recursos. A cm-resource-parent tag também é adicionada para acúmulos de custos aprimorados no Gerenciamento de Custos. |
|
tagsByResource | objeto | Opcional. Tags a serem aplicadas aos recursos com base em seu tipo de recurso. As tags específicas do tipo de recurso são mescladas com tags para todos os recursos. | |
scopesToMonitor | matriz | Opcional. Lista de IDs de escopo para monitorar e ingerir custos. | |
exportRetentionInDays | int | Opcional. Número de dias de dados de custo a serem retidos no contêiner ms-cm-exports. | 0 |
ingestionRetentionInMonths | int | Opcional. Número de meses de dados de custo a serem retidos no contêiner de ingestão. | 13 |
remoteHubStorageUri | string | Opcional. Conta de armazenamento para a qual enviar dados por push para ingestão em um hub remoto. | |
remoteHubStorageKey | string | Opcional. Chave da conta de armazenamento a ser usada ao enviar dados por push para um hub remoto. |
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 <unique-suffix>
é usado para garantir que os nomes de recursos sejam globalmente exclusivos quando necessário.
<hubName>store<unique-suffix>
conta de armazenamento (Data Lake Storage Gen2)- Contêineres de blob:
msexports
– Armazena temporariamente as exportações do Gerenciamento de Custos.ingestion
– Armazena os dados ingeridos.Observação
No futuro, usaremos esse contêiner para preparar dados externos fora do Gerenciamento de Custos. -
config
– Armazena metadados do hub e definições de configuração. Arquivos:settings.json
– Configurações do hub.schemas/focuscost_1.0.json
– Definição de esquema FOCUS 1.0 para conversão de parquet.schemas/focuscost_1.0-preview(v1).json
– Definição de esquema de visualização do FOCUS 1.0 para conversão de parquet.
- Contêineres de blob:
<hubName>-engine-<unique-suffix>
Instância do Data Factory- Pipelines:
msexports_ExecuteETL
– Enfileira o pipeline para levar em conta os limites de gatilho domsexports_ETL_ingestion
pipeline do Data Factory.msexports_ETL_transform
– Converte as exportações do Gerenciamento de Custos em parquet e remove dados históricos duplicados na exportação de cada dia.config_ConfigureExports
– Cria exportações de Gerenciamento de Custos para todos os escopos.config_StartBackfillProcess
– Executa o trabalho de aterramento 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 Gerenciamento de Custos configuradas para esse hub com base nos escopos definidos no settings.json e executa cada exportação usando o pipeline config_RunExportJobs.config_RunExportJobs
– Executa as exportações especificadas do Gerenciamento de custos.msexports_ExecuteETL
– Dispara o processo de ingestão para exportações do Gerenciamento de Custos para considerar os limites de gatilho de pipeline do Data Factory.msexports_ETL_transform
– Converte as exportações do Gerenciamento de Custos em parquet e remove dados históricos duplicados na exportação de cada dia.
- 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_FileAdded
– Aciona o pipeline quando asmsexports_ExecuteETL
exportações do Gerenciamento de custos são concluídas.
- Pipelines:
<hubName>-vault-<unique-suffix>
Instância do Key Vault- Segredos:
- Identidade gerenciada pelo sistema Data Factory
- Segredos:
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
(Colaborador de Dados do Blob de Armazenamento) – 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
– Interrompe 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 | Descrição | Valor |
---|---|---|---|
name | String | Nome da instância do hub implantada. | |
local | String | Os recursos de localização de recursos do Azure foram implantados. | location |
dataFactorytName | String | Nome do Data Factory. | dataFactory.name |
storageAccountId | String | ID do recurso da conta de armazenamento criada para a instância do hub. Ele deve ser usado ao criar a exportação do Gerenciamento de custos. | storage.outputs.resourceId |
storageAccountName | String | Nome da conta de armazenamento criada para a instância do hub. Ele deve ser usado ao conectar relatórios do Power BI do kit de ferramentas FinOps aos seus dados. | storage.outputs.name |
storageUrlForPowerBI | String | URL a ser usada ao conectar relatórios personalizados do Power BI aos seus dados. | 'https://${storage.outputs.name}.dfs.${environment().suffixes.storage}/${storage.outputs.ingestionContainer}' |
managedIdentityId | String | ID do objeto da identidade gerenciada do Data Factory. Essa saída é necessária ao configurar exportações gerenciadas. | dataFactory.identity.principalId |
managedIdentityTenantId | String | ID de locatário do Microsoft Entra. Essa saída é necessária ao configurar exportações gerenciadas. | tenant().tenantId |