El seguimiento y la gestión del gasto en la nube pueden ser difíciles en una organización grande. Las configuraciones de ahorro le ayudan a gestionar sus gastos de forma proactiva. Atlas también le proporciona herramientas para visualizar y analizar sus gastos. 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 sus gastos de Atlas.
Extraiga datos de facturación mediante programación para integrarlos con sus herramientas FinOps para fines de contabilidad y contracargos 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 Etiquetas de recursos.
Acceder a los datos de facturación mediante programación
La API de administración de Atlas proporciona una InterfazREST que le permite acceder programáticamente a sus datos de facturación para usarlos con herramientas e informes externos. Combine esta función con etiquetas de recursos para categorizar fácilmente sus gastos en Atlas.
Puede recuperar todas sus facturas pendientes con el punto final de la API "Devolver todas las facturas pendientes para una organización". El cuerpo de la respuesta del punto final contiene 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 le permite compartir una suscripción de facturación entre varias organizaciones y pagar una sola factura. Active la facturación entre organizaciones para obtener una fácil visibilidad de los gastos de Atlas en todas sus 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, puede ver las facturas vinculadas si tiene el rol Organization Billing Admin Organization Owner o el rol para la organización que paga.
Revise su visualización de costos mensuales
Para ver sus datos de facturación mensual, navegue hasta la Cost Explorer Página. El Explorador de Costos ofrece una vista detallada 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, lo que facilita la toma de decisiones financieras y la optimización de recursos. Puede consultar su consumo de los últimos seis meses y acceder a sus datos de facturación hasta los últimos 18 meses. Si su organización utiliza la facturación interorganizacional, puede ver los datos de facturación de 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.
Revise 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 paneles de facturación
Puede visualizar sus datos de facturación en un panel de facturación de MongoDB Charts para optimizar sus gastos de Atlas. Los paneles de facturación contienen gráficos prediseñados que le ayudan a supervisar el uso de Atlas en una organización en diferentes categorías y periodos. MongoDB Charts se integra con Atlas para procesar los datos de facturación sin problemas.

De forma predeterminada, los paneles 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 panel de facturación, consulte Crear y administrar paneles de facturación.
Ejemplos de automatización: Facturación Atlas
Vea todos los ejemplos de Atlas Architecture Center Go SDK en un solo proyecto en el repositorio de GitHub de Atlas Architecture Go SDK.
Los siguientes ejemplos muestran cómo recuperar y descargar datos de facturación utilizando herramientas Atlas para la automatización.
Antes de poder autenticar y ejecutar los scripts de ejemplo utilizando el SDK Atlas Go, debe:
Cree una cuenta de servicio Atlas. Guarde su ID de cliente y su secreto 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 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 de facturación históricos 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 demuestra cómo recuperar facturas pendientes de una organización y luego descargarlas 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" "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 }
Obtenga 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) } }