Realizar un seguimiento y gestionar los gastos en la nube puede ser complicado en una organización grande. Mientras que Las configuraciones de ahorro de costos le ayudan a gestionar proactivamente el gasto. Atlas también proporciona herramientas para ver y analizar el gasto. Usted puede:
Clasifique los recursos de Atlas según las necesidades de facturación de su 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, aprenda a utilizar las herramientas integradas de Atlas y los datos de facturación de Atlas para realizar un seguimiento de sus gastos en la nube.
Apply Resource Tags
Puede aplicar etiquetas de recursos en Atlas para una asignación precisa de costos al categorizar los recursos por departamentos, proyectos o centros de costos. También puede agrupar y analizar recursos etiquetados en informes financieros, lo que proporciona una visión clara y organizada de cómo los distintos equipos o proyectos contribuyen al gasto total en la nube. Para obtener más información, consulte Resource Tags.
Acceder a datos de facturación programáticamente
La API de Administración de Atlas proporciona un Interfaz RESTful que te permite acceder programáticamente a tus datos de facturación para su uso con herramientas y reportes externos. Combine esta funcionalidad con etiquetas de recursos para categorizar fácilmente su gasto en Atlas.
Puedes recuperar todas tus facturas pendientes con el endpoint de API Devolver todas las facturas pendientes de una organización. El cuerpo de respuesta de los endpoints contiene el results.lineItems.tags Campo, que refleja las etiquetas que aplicó a sus recursos (como organizaciones y clústeres). Puede introducir estos datos de facturación a nivel de partida en herramientas externas de FinOps y generar informes que registren sus gastos de Atlas por entorno, equipo u otros valores de etiqueta.
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 ver los datos de facturación mensualmente, navegue hasta el Cost Explorer página. 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 un Usage gráfico con columnas apiladas que representan el costo total incurrido cada mes. Debajo, hay una Usage By Month tabla que muestra los datos de facturación del gráfico. Para obtener más información, consulte el 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 sus datos de facturación como factura, haga clic en el Invoice Date o el Invoice Period que desee ver. Esta página muestra los costos generados por el uso de Atlas durante el período de facturación mediante los gráficos Total Usage y By Deployment.
En el gráfico Total Usage, puede filtrar su consumo por servicio para ver los cargos generados por un servicio de Atlas específico. En el gráfico By Deployment, puede ver la proporción de consumo generado por cada uno de sus clústeres en todos sus 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
Vea todos los ejemplos del SDK de Go del Atlas Architecture Center en un solo proyecto en el repo de GitHub del SDK de Go de Atlas Architecture.
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 obtener más información sobre cómo autenticar y crear un cliente, consulte el proyecto de ejemplo completo 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) } }