Rastrear y gestionar el gasto en la nube puede ser complicado en una organización grande. Mientras que las configuraciones de ahorro de costos te ayudan a gestionar proactivamente el gasto, Atlas también proporciona herramientas para visualizar y analizar el gasto. Puedes:
Categoriza los recursos de Atlas según las necesidades de facturación de tu organización.
Aproveche los datos de facturación para visualizar y comprender su gasto en Atlas.
Extraiga datos de facturación de forma programática para integrarlos con sus herramientas de FinOps con fines de reembolso y contabilidad dentro de cada departamento y aplicación.
En esta página, aprende a usar las herramientas con funcionalidad incorporada de Atlas y los datos de facturación de Atlas para rastrear los gastos en la nube.
Apply Resource Tags
Puedes aplicar etiquetas de recursos en Atlas para una asignación precisa de costos categorizando los recursos según departamentos, proyectos o centros de costos. También se pueden agrupar y analizar los recursos etiquetados en informes financieros, proporcionando una visión clara y organizada de cómo diversos equipos o proyectos contribuyen al gasto general en la nube. Para aprender más, véase Etiquetas de recursos.
Acceder a datos de facturación programáticamente
La API de administración de Atlas ofrece una interfaz RESTque te permite acceder de manera programática a tus datos de facturación para utilizar con herramientas y reportes externos. Combina esta funcionalidad con las etiquetas de recursos para categorizar fácilmente tus gastos en Atlas.
Puedes recuperar todas tus facturas pendientes mediante el extremo Devolver todas las facturas pendientes de una organización API. El cuerpo de respuesta de los endpoints contiene el campo results.lineItems.tags, que refleja las etiquetas que aplicaste a tus recursos (como organizaciones y clústeres). Luego, puedes alimentar estos datos de facturación a nivel de ítem de línea en herramientas externas de FinOps e informes para rastrear tu gasto en Atlas por entorno, equipo u otros valores de etiquetas.
Habilitar la facturación entre organizaciones
Atlas te permite compartir una suscripción de facturación entre varias organizaciones y pagar una sola factura por ellas. Permite la facturación cruzada entre organizaciones para facilitar la visibilidad del gasto de Atlas en todas tus organizaciones.
Después de configurar una organización pagadora, pagará las facturas de la organización pagadora que incluyen una lista de los cargos incurridos por todas las organizaciones vinculadas. Para obtener más información, consulta Facturación entre organizaciones.
Después de habilitar la facturación entre organizaciones, puedes ver las facturas vinculadas si tienes el rol Organization Billing Admin o el rol Organization Owner para la organización que paga.
Revisa tu visualización de costos mensuales
Para consultar los datos de facturación mensuales, accede a la página Cost Explorer. El Explorador de Costos proporciona una vista granular del gasto en la nube en forma de gráficos y tablas, lo que permite a los usuarios analizar los costos por clústeres, proyectos o equipos. Los datos históricos de gastos y los filtros personalizables ayudan a identificar tendencias e ineficiencias, permitiendo una mejor toma de decisiones financieras y la optimización de recursos. Puedes ver tu uso durante los últimos seis meses y acceder a tus datos de facturación hasta los últimos 18 meses. Si tu organización utiliza la facturación entre organizaciones, puedes ver los datos de facturación en todas las organizaciones vinculadas.
El Explorador de Costos de Facturación filtra y agrupa los datos de uso por organización, proyecto, clúster y servicio. Cada filtro contiene una gráfica Usage con columnas apiladas que representan el costo total incurrido cada mes. Debajo hay una tabla Usage By Month que muestra los datos de facturación que aparecen en la gráfica. Para aprender más, consulta Explorador de Costos de Facturación.
Revise su Visualización de Costos Anuales
Para ver tus datos de facturación anualmente, navega a la página Billing Overview. Esta página te ayuda a entender los costes que supone el uso de Atlas por parte de tu organización, desglosados por servicio, implementación y proyecto. Cada categoría contiene una gráfica Usage con columnas apiladas que representan el costo total incurrido cada mes. Para aprender más, consulta gráfica de uso desde el inicio del año.
Revisar la visualización del costo de su factura
Para ver tus datos de facturación como una factura, haz clic en el Invoice Date o Invoice Period que deseas ver. Esta página te muestra los costos incurridos por el uso de Atlas durante el periodo de facturación a través de las gráficas Total Usage y By Deployment.
Para la gráfica Total Usage, puedes filtrar el uso por servicio para ver los cargos asociados a un servicio específico de Atlas. Para la gráfica By Deployment, puedes ver la proporción de tu uso incurrido por cada uno de tus clústeres en todos tus proyectos.
Para ver los cargos por partida, consulte Ver y pagar sus facturas anteriores.
Crear tableros de facturación
Puedes visualizar los datos de facturación en un tablero de facturación de MongoDB Charts para ayudar a optimizar el gasto en Atlas. Los tableros de facturación contienen gráficos preconstruidos que ayudan a supervisar el uso de Atlas en una organización a través de diferentes categorías y periodos de tiempo, y MongoDB Charts se integra con Atlas para ingerir datos de facturación sin inconvenientes.

Por defecto, los tableros de facturación incluyen las siguientes métricas y gráficos:
Gasto total en toda la organización
Los mayores gastadores de la organización
Gasto total por tamaño de instancia, proyecto, clúster, categoría de producto o SKU
Costo total por categoría de producto
También puede personalizar su tablero de facturación aplicando filtros de tablero y agregando nuevos gráficos, incluidos los gráficos que utilizan etiquetas que ha aplicado a sus datos de facturación.
Para crear o administrar un Crear y administrar tableros de facturación.
Ejemplos de automatización: Atlas Billing
Consulta todos los ejemplos de Atlas Architecture Center Go SDK en un único proyecto en el repositorio de Atlas Architecture Go SDK en GitHub.
Los siguientes ejemplos muestran cómo recuperar y descargar datos de facturación utilizando las herramientas para la automatizaciónde Atlas.
Antes de poder autenticarse y ejecutar los scripts de ejemplo utilizando el SDK Atlas Go, debe:
Crea una cuenta de servicio de Atlas. Almacena tu ID y secreto de cliente como variables de entorno ejecutando el siguiente comando en la terminal:
export MONGODB_ATLAS_SERVICE_ACCOUNT_ID="<insert your client ID here>" export MONGODB_ATLAS_SERVICE_ACCOUNT_SECRET="<insert your client secret here>" Establezca las siguientes variables de configuración en su proyecto de Go:
configs/config.json{ "MONGODB_ATLAS_BASE_URL": "https://cloud.mongodb.com", "ATLAS_ORG_ID": "32b6e34b3d91647abb20e7b8", "ATLAS_PROJECT_ID": "67212db237c5766221eb6ad9", "ATLAS_CLUSTER_NAME": "myCluster", "ATLAS_PROCESS_ID": "myCluster-shard-00-00.ajlj3.mongodb.net:27017" }
Para aprender más sobre cómo autenticar y crear un cliente, se puede consultar el proyecto de ejemplo completo de Atlas SDK para Go en GitHub.
Obtener datos históricos de facturación
El siguiente script de ejemplo demuestra cómo recuperar datos históricos de facturación de una organización y, luego, descargar las facturas a un archivo CSV o JSON para su posterior análisis.
// See entire project at https://github.com/mongodb/atlas-architecture-go-sdk package main import ( "context" "fmt" "log" "time" "atlas-sdk-examples/internal/auth" "atlas-sdk-examples/internal/billing" "atlas-sdk-examples/internal/config" "atlas-sdk-examples/internal/data/export" "atlas-sdk-examples/internal/fileutils" "atlas-sdk-examples/internal/orgutils" "github.com/joho/godotenv" "go.mongodb.org/atlas-sdk/v20250219001/admin" ) func main() { envFile := ".env.production" if err := godotenv.Load(envFile); err != nil { log.Printf("Warning: could not load %s file: %v", envFile, err) } secrets, cfg, err := config.LoadAllFromEnv() if err != nil { log.Fatalf("Failed to load configuration %v", err) } ctx := context.Background() client, err := auth.NewClient(ctx, cfg, secrets) if err != nil { log.Fatalf("Failed to initialize authentication client: %v", err) } p := &admin.ListInvoicesApiParams{ OrgId: cfg.OrgID, } fmt.Printf("Fetching historical invoices for organization: %s\n", p.OrgId) // Fetch invoices from the previous six months with the provided options invoices, err := billing.ListInvoicesForOrg(ctx, client.InvoicesApi, p, billing.WithViewLinkedInvoices(true), billing.WithIncludeCount(true), billing.WithDateRange(time.Now().AddDate(0, -6, 0), time.Now())) if err != nil { log.Fatalf("Failed to retrieve invoices: %v", err) } if invoices.GetTotalCount() > 0 { fmt.Printf("Total count of invoices: %d\n", invoices.GetTotalCount()) } else { fmt.Println("No invoices found for the specified date range") return } // Get organization name for more user-friendly filenames orgName, err := orgutils.GetOrganizationName(ctx, client.OrganizationsApi, p.OrgId) if err != nil { // Non-critical error, continue with orgID as name fmt.Printf("Warning: %v\n", err) orgName = p.OrgId } sanitizedOrgName := orgutils.SanitizeForFilename(orgName) // Export invoice data to be used in other systems or for reporting outDir := "invoices" prefix := fmt.Sprintf("historical_%s", sanitizedOrgName) err = exportInvoicesToJSON(invoices, outDir, prefix) if err != nil { log.Fatalf("Failed to export invoices to JSON: %v", err) } err = exportInvoicesToCSV(invoices, outDir, prefix) if err != nil { log.Fatalf("Failed to export invoices to CSV: %v", err) } } func exportInvoicesToJSON(invoices *admin.PaginatedApiInvoiceMetadata, outDir, prefix string) error { jsonPath, err := fileutils.GenerateOutputPath(outDir, prefix, "json") if err != nil { return fmt.Errorf("failed to generate JSON output path: %v", err) } if err := export.ToJSON(invoices.GetResults(), jsonPath); err != nil { return fmt.Errorf("failed to write JSON file: %v", err) } fmt.Printf("Exported invoice data to %s\n", jsonPath) return nil } func exportInvoicesToCSV(invoices *admin.PaginatedApiInvoiceMetadata, outDir, prefix string) error { csvPath, err := fileutils.GenerateOutputPath(outDir, prefix, "csv") if err != nil { return fmt.Errorf("failed to generate CSV output path: %v", err) } // Set the headers and mapped rows for the CSV export headers := []string{"InvoiceID", "Status", "Created", "AmountBilled"} err = export.ToCSVWithMapper(invoices.GetResults(), csvPath, headers, func(invoice admin.BillingInvoiceMetadata) []string { return []string{ invoice.GetId(), invoice.GetStatusName(), invoice.GetCreated().Format(time.RFC3339), fmt.Sprintf("%.2f", float64(invoice.GetAmountBilledCents())/100.0), } }) if err != nil { return fmt.Errorf("failed to write CSV file: %v", err) } fmt.Printf("Exported invoice data to %s\n", csvPath) return nil }
Obtener facturas pendientes
El siguiente script de ejemplo muestra cómo recuperar las facturas pendientes de una organización y, a continuación, descargar las facturas en un archivo CSV o JSON para un análisis adicional.
// See entire project at https://github.com/mongodb/atlas-architecture-go-sdk package main import ( "context" "fmt" "log" "atlas-sdk-examples/internal/auth" "atlas-sdk-examples/internal/billing" "atlas-sdk-examples/internal/config" "atlas-sdk-examples/internal/data/export" "atlas-sdk-examples/internal/fileutils" "atlas-sdk-examples/internal/orgutils" "github.com/joho/godotenv" "go.mongodb.org/atlas-sdk/v20250219001/admin" ) func main() { envFile := ".env.production" if err := godotenv.Load(envFile); err != nil { log.Printf("Warning: could not load %s file: %v", envFile, err) } secrets, cfg, err := config.LoadAllFromEnv() if err != nil { log.Fatalf("Failed to load configuration %v", err) } ctx := context.Background() client, err := auth.NewClient(ctx, cfg, secrets) if err != nil { log.Fatalf("Failed to initialize authentication client: %v", err) } p := &admin.ListInvoicesApiParams{ OrgId: cfg.OrgID, } fmt.Printf("Fetching pending invoices for organization: %s\n", p.OrgId) details, err := billing.CollectLineItemBillingData(ctx, client.InvoicesApi, client.OrganizationsApi, p.OrgId, nil) if err != nil { log.Fatalf("Failed to retrieve pending invoices for %s: %v", p.OrgId, err) } if len(details) == 0 { fmt.Printf("No pending invoices found for organization: %s\n", p.OrgId) return } fmt.Printf("Found %d line items in pending invoices\n", len(details)) // Use organization name from the returned details for more user-friendly filenames orgName := details[0].Org.Name sanitizedOrgName := orgutils.SanitizeForFilename(orgName) // Export invoice data to be used in other systems or for reporting outDir := "invoices" prefix := fmt.Sprintf("pending_%s", sanitizedOrgName) err = exportInvoicesToJSON(details, outDir, prefix) if err != nil { log.Fatalf("Failed to export invoices to JSON: %v", err) } err = exportInvoicesToCSV(details, outDir, prefix) if err != nil { log.Fatalf("Failed to export invoices to CSV: %v", err) } } func exportInvoicesToJSON(details []billing.Detail, outDir, prefix string) error { jsonPath, err := fileutils.GenerateOutputPath(outDir, prefix, "json") if err != nil { return fmt.Errorf("failed to generate JSON output path: %v", err) } if err := export.ToJSON(details, jsonPath); err != nil { return fmt.Errorf("failed to write JSON file: %v", err) } fmt.Printf("Exported billing data to %s\n", jsonPath) return nil } func exportInvoicesToCSV(details []billing.Detail, outDir, prefix string) error { csvPath, err := fileutils.GenerateOutputPath(outDir, prefix, "csv") if err != nil { return fmt.Errorf("failed to generate CSV output path: %v", err) } // Set the headers and mapped rows for the CSV export headers := []string{"Organization", "OrgID", "Project", "ProjectID", "Cluster", "SKU", "Cost", "Date", "Provider", "Instance", "Category"} err = export.ToCSVWithMapper(details, csvPath, headers, func(item billing.Detail) []string { return []string{ item.Org.Name, item.Org.ID, item.Project.Name, item.Project.ID, item.Cluster, item.SKU, fmt.Sprintf("%.2f", item.Cost), item.Date.Format("2006-01-02"), item.Provider, item.Instance, item.Category, } }) if err != nil { return fmt.Errorf("failed to write CSV file: %v", err) } fmt.Printf("Exported billing data to %s\n", csvPath) return nil }
Obtener organizaciones vinculadas
El siguiente script de ejemplo demuestra cómo recuperar una lista de organizaciones vinculadas y sus ID de la organización de facturación.
// See entire project at https://github.com/mongodb/atlas-architecture-go-sdk package main import ( "context" "fmt" "log" "atlas-sdk-examples/internal/auth" "atlas-sdk-examples/internal/billing" "atlas-sdk-examples/internal/config" "github.com/joho/godotenv" "go.mongodb.org/atlas-sdk/v20250219001/admin" ) func main() { envFile := ".env.production" if err := godotenv.Load(envFile); err != nil { log.Printf("Warning: could not load %s file: %v", envFile, err) } secrets, cfg, err := config.LoadAllFromEnv() if err != nil { log.Fatalf("Failed to load configuration %v", err) } ctx := context.Background() client, err := auth.NewClient(ctx, cfg, secrets) if err != nil { log.Fatalf("Failed to initialize authentication client: %v", err) } p := &admin.ListInvoicesApiParams{ OrgId: cfg.OrgID, } fmt.Printf("Fetching linked organizations for billing organization: %s\n", p.OrgId) invoices, err := billing.GetCrossOrgBilling(ctx, client.InvoicesApi, p) if err != nil { log.Fatalf("Failed to retrieve cross-organization billing data for %s: %v", p.OrgId, err) } displayLinkedOrganizations(invoices, p.OrgId) } func displayLinkedOrganizations(invoices map[string][]admin.BillingInvoiceMetadata, primaryOrgID string) { var linkedOrgs []string for orgID := range invoices { if orgID != primaryOrgID { linkedOrgs = append(linkedOrgs, orgID) } } if len(linkedOrgs) == 0 { fmt.Println("No linked organizations found for the billing organization") return } fmt.Printf("Found %d linked organizations:\n", len(linkedOrgs)) for i, orgID := range linkedOrgs { fmt.Printf(" %d. Organization ID: %s\n", i+1, orgID) } }