Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Funcionalidades para los datos de facturación de Atlas

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:

  • 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.

Se pueden 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, lo que proporciona una vista clara y organizada de cómo los distintos equipos o proyectos contribuyen al gasto total en la nube. Para obtener más información, consulta Resource Tags.

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 Devolver todas las facturas pendientes para una organización de API. El cuerpo de respuesta de los puntos finales contiene el results.lineItems.tags campo, que reflejan las etiquetas que aplicaste a los recursos (como organizaciones y clústeres). Luego, puedes introducir estos datos de facturación a nivel de partida en herramientas externas de FinOps e informes para rastrear tus gastos en Atlas por entorno, equipo u otros valores de etiqueta.

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.

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 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.

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.

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.

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.

Ejemplo de tablero de facturación de Atlas.
haga clic para ampliar

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.

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 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.

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.

billing/historical/main.go
// 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
}

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.

billing/line-items/main.go
// 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
}

El siguiente script de ejemplo demuestra cómo recuperar una lista de organizaciones vinculadas y sus ID de la organización de facturación.

billing/linked-orgs/main.go
// 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)
}
}

Volver

Configuraciones de Ahorro de Costos