Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Orientación para la supervisión y alertas de Atlas

MongoDB Atlas cuenta con un sólido conjunto de métricas integradas, telemetría y registros que puedes aprovechar desde Atlas o integrar en tu pila de observabilidad y alertas de terceros. Esto permite supervisar y administrar las implementaciones de Atlas y responder a los incidentes de manera proactiva y en tiempo real.

La supervisión de tu implementación te permite:

  • Comprenda la salud y el estado de su clúster

  • Aprende cómo las operaciones que se ejecutan en el clúster impactan en la base de datos

  • Aprende si tu hardware tiene recursos limitados

  • Realizar optimización de carga de trabajo y consultas

  • Detecte y reaccione ante problemas en tiempo real para mejorar su pila de aplicaciones

Atlas proporciona varias métricas para la monitorización y las alertas. Puede realizar un seguimiento del estado, la disponibilidad, el consumo y el rendimiento de sus implementaciones en paneles visuales y mediante... API. También puedes ver varias métricas de clúster, supervisar el rendimiento de tu base de datos, configurar alertas y notificaciones de alertas, y descargar los registros de actividad.

Métricas

Las métricas de implementación proporcionan perspectiva sobre el rendimiento del hardware y la eficiencia de la operación de la base de datos. Atlas recopila las métricas de tus servidores, bases de datos y procesos de MongoDB, y almacena los datos de las métricas en varios niveles de granularidad. Para cada nivel de granularidad, Atlas calcula las métricas como promedios de las métricas reportadas en el siguiente nivel de granularidad más fino. Muchas métricas tienen un equivalente en reporte de ráfaga.

Puedes supervisar métricas en la Interfaz de Usuario de Atlas utilizando la vista de Métricas, el Real-Time Performance Panel, el perfilador del query, el Performance Advisor y la página de Namespace Insights. También puedes usar la CLI de Atlas o la API de Administración de Atlas para canalizar métricas en una herramienta de tu elección.

La siguiente vista de Métricas de la Interfaz de Usuario de Atlas muestra la variedad de métricas disponibles para supervisar un set de réplicas de muestra de tres nodos:

Una imagen que muestra un ejemplo de vista de métricas de un set de réplicas de nodos 3.
haga clic para ampliar

Alertas

Atlas ofrece alertas para más de 200 tipos de eventos, lo que te permite personalizar alertas para una supervisión precisa. Atlas emite alertas para la base de datos y las condiciones del servidor que configures en la configuración de alertas. Cuando una condición activa una alerta, Atlas muestra un símbolo de advertencia en el clúster y envía notificaciones de alerta.

Puede utilizar la interfaz de usuario de Atlas, la API de administración de Atlas, la CLI de Atlas y el recurso Terraform integrado para configurar alertas y notificaciones de alertas.

Monitoring

Las visualizaciones de supervisión de Atlas ofrecen perspectivas sobre varias métricas clave, incluyendo el rendimiento del hardware y la eficiencia de las operaciones de la base de datos. Herramientas como los paneles de rendimiento en tiempo real para la visibilidad de la red y la operación, perfiladores del query para el seguimiento de tendencias de eficiencia y sugerencias automáticas de índices te permiten supervisar y solucionar problemas de manera más eficaz, impulsando una mayor eficiencia operativa. Por ejemplo, estas gráficas pueden ayudarte a entender el impacto de los reinicios y elecciones del servidor en el desempeño de la base de datos.

Registros

Atlas proporciona registros para cada proceso del clúster. Cada proceso registra su actividad en su propio archivo de registro.

Puede descargar registros mediante la interfaz de usuario de Atlas, la CLI de Atlas y la API de administración de Atlas. Para obtener más información, consulte Orientaciones para la auditoría y el registro en Atlas.

Recomendaciones que se aplican solo a implementaciones en una sola región

Las implementaciones en una sola región no tienen consideraciones especiales para integraciones con herramientas de alertas de terceros, como Datadog y Prometheus. Vea Todas las recomendaciones de paradigma de implementación.

Recomendaciones que se aplican únicamente a implementaciones a través de múltiples regiones o de múltiples proveedores de nube

En clústeres multirregionales, considere los posibles costos de transferencia de datos asociados con el envío de registros y métricas entre regiones. Le recomendamos configurar su sistema de registro y auditoría para minimizar las transferencias de datos entre regiones, posiblemente manteniendo los registros locales en la región donde se generan.

Las siguientes recomendaciones se aplican a todos los paradigmas de implementación.

Para supervisar el desempeño de tu clúster o base de datos, puedes visualizar las métricas del clúster, como el rendimiento histórico, el rendimiento y las métricas de utilización. La siguiente tabla enumera algunas (pero no todas) categorías importantes de métricas para supervisar:

Operaciones del clúster Atlas y métricas de conexión

  • opcounters

  • Tiempos de Ejecución de la Operación

  • Query Executors y Query Targeting

  • Conexiones

  • Queues

  • Escanea y pide

Métricas de Hardware

  • CPU del sistema normalizado

  • CPU de proceso normalizado

  • Latencia de disco

  • IOPS de disco

  • Espacio libre en disco

  • Memoria del sistema

  • Uso de swap

Métricas de replicación

  • atraso de la replicación

  • Replication Oplog Window

  • Margen de replicación

  • Oplog GB/hora

  • Opcounters -repl

Puedes usar la interfaz de usuario de Atlas, la API de Administración de Atlas y el Atlas CLI para ver las métricas del clúster de Atlas. Además, Atlas proporciona integraciones con funcionalidad incorporada con herramientas de terceros como Datadog y Prometheus, y también puedes aprovechar la API de administración de Atlas para integrarte con otras herramientas de métricas personalizadas.

Para obtener más información, consulta Revisar métricas del clúster.

Atlas se extiende a tu pila de observabilidad existente, permitiéndote recibir alertas y tomar decisiones basadas en datos sin tener que reemplazar tus herramientas actuales ni modificar tus flujos de trabajo. Atlas puede enviar notificaciones de alertas con herramientas de terceros como Microsoft Teams, PagerDuty, DataDog, Opsgenie, Splunk On-Call y otras herramientas para brindarte visibilidad tanto del rendimiento de la base de datos como de la pila completa en el mismo lugar.

Configura alertas y notificaciones para eventos de seguridad, como intentos fallidos de inicio de sesión, patrones de acceso inusuales y violaciones de datos. En entornos de desarrollo y pruebas, recomendamos configurar alertas para clústeres que han estado inactivos por siete días o más para ayudarte a identificar qué clústeres se pueden apagar para ahorrar costos.

Cuando se consulten las alertas en la Interfaz de Usuario de Atlas, se recomienda usar los filtros disponibles para limitar los resultados por host, set de réplicas, clúster, partición, y así ayudar a centrarse en las alertas más críticas.

Como mínimo, recomendamos configurar las siguientes alertas. Estas recomendaciones de alertas proporcionan una base, pero debe ajustarlas según las características de su carga de trabajo. Si se especifican condiciones de "alta prioridad" en la siguiente tabla, le recomendamos configurar varias alertas para la misma condición: una para un nivel de gravedad bajo y otra para uno alto. Esto le permite configurar las notificaciones de alerta para cada una por separado.

Atlas configura algunas alertas por defecto. Para aprender sobre la configuración por defecto de alertas, consulte Configuración por defecto de Alertas.

Condición
Umbral de alerta recomendada: Prioridad baja
Umbral de alerta recomendado: Alta prioridad
Principales perspectivas

Oplog window

< 24h durante 5 minutos

< 1h durante 10 minutos

Supervisa el oplog window, junto con el margen de replicación, para determinar si el secundario puede necesitar pronto una resincronización completa. La oplog window de replicación suele ayudar a determinar de antemano la resiliencia de las secundarias ante interrupciones del servicio planificadas e imprevistas.

> 3 durante 5 minutos

> 30 durante 5 minutos

Monitoree los eventos de elección, que ocurren cuando un nodo principal se desactiva y un nodo secundario se elige como el nuevo principal. Los eventos de elección frecuentes pueden interrumpir las operaciones y afectar la disponibilidad, causando indisponibilidad temporal de escritura y una posible reversión de datos. Minimizar los eventos de elección garantiza operaciones de escritura consistentes y un rendimiento estable del clúster.

> 4000 durante 2 minutos

> 9000 durante 5 minutos

Supervisar si las IOPS del disco se acercan al máximo aprovisionamiento de IOPS. Determinar si el clúster puede gestionar cargas de trabajo futuras.

guardar IOPS

> 4000 durante 2 minutos

> 9000 durante 5 minutos

Supervisar si las IOPS del disco se acercan al máximo aprovisionamiento de IOPS. Determinar si el clúster puede gestionar cargas de trabajo futuras.

Latencia de lectura

> 20ms por 5 minutos

> 50 s por 5 minutos

Supervisa la latencia del disco para rastrear la eficiencia de leer y escribir en el disco.

Latencia de guardar

> 20ms por 5 minutos

> 50ms durante más de 5 minutos

Supervisa la latencia del disco para rastrear la eficiencia de leer y escribir en el disco.

Uso de intercambio

> 2GB por 15 minutos

> 2GB por 15 minutos

Supervisa la memoria para determinar si debes actualizar a un nivel de clúster superior. Esta métrica representa el valor promedio durante el período de tiempo especificado por la granularidad de la métrica.

Host caído

minutos de 15

24 horas

Monitorea tus hosts para detectar tiempos de inactividad rápidamente. Un host inactivo durante más de 15 minutos puede afectar la disponibilidad, mientras que un tiempo de inactividad superior a 24 horas es crítico, poniendo en riesgo la accesibilidad a los datos y el rendimiento de las aplicaciones.

Sin primario

5 minutos

5 minutos

Supervisa el estado de tus set de réplicas para identificar instancias donde no haya un nodo primario. La falta de un primario durante más de 5 minutos puede detener las operaciones de escritura y afectar la funcionalidad de la aplicación.

Falta activo mongos

minutos de 15

minutos de 15

Supervise el estado de los procesos mongos activos para garantizar un enrutamiento de consultas eficaz en clústeres fragmentados. La falta de un mongos puede interrumpir el enrutamiento de consultas.

Errores de página

> 50/segundo durante 5 minutos

> 100/segundo durante 5 minutos

Supervisa los fallos de página para determinar si debes aumentar tu memoria. Esta métrica muestra la tasa promedio de fallos de página en este proceso por segundo durante el período de muestra seleccionado. En entornos distintos de Windows esto solo se aplica a fallos de página graves.

atraso de la replicación

> 240 segundo durante 5 minutos

> 1 horas con 5 minutos

Supervisa el atraso de la replicación para determinar si el secundario podría caerse del oplog.

Copia de seguridad fallida

Cualquier ocurrencia

Ninguno

Rastrea las operaciones de copia de seguridad para garantizar la integridad de los datos. Una copia de seguridad fallida puede comprometer la disponibilidad de datos.

Copia de seguridad restaurada

Cualquier ocurrencia

Ninguno

Verificar las copias de seguridad restauradas para garantizar la integridad de los datos y el funcionamiento del sistema.

La snapshot de fallback falló

Cualquier ocurrencia

Ninguno

Supervisa las operaciones de recuperación de snapshots de respaldo para garantizar la redundancia de los datos y la capacidad de recuperación.

Cronograma de copia de seguridad retrasada

> 12 horas

> 12 horas

Comprueba los cronogramas de copia de seguridad para asegurarte de que están en marcha. Quedarse atrás puede arriesgarse a la pérdida de datos y comprometer los planes de recuperación.

Lecturas en cola

> 0-10

> 10+

Supervisa las lecturas en cola para asegurar una recuperación de datos eficiente. Altos niveles de lecturas en cola pueden indicar restricciones de recursos o cuellos de botella en el rendimiento, requiriendo optimización para mantener la capacidad de respuesta del sistema.

Escrituras en cola

> 0-10

> 10+

Supervise las escrituras en cola para mantener un procesamiento eficiente de los datos. Los niveles altos de guardados en cola pueden indicar restricciones de recursos o cuellos de botella en el rendimiento, lo que requiere optimización para mantener la capacidad de respuesta del sistema.

Reinicios última hora

> 2

> 2

Realice un seguimiento del número de reinicios en la última hora para detectar inestabilidad o problemas de configuración. Los reinicios frecuentes pueden indicar problemas subyacentes que requieren una investigación inmediata para mantener la fiabilidad y el tiempo de actividad del sistema.

Cualquier ocurrencia

Ninguno

Supervise las elecciones primarias para asegurar operaciones estables del clúster. Las elecciones frecuentes pueden indicar problemas de red o restricciones de recursos, lo que podría afectar la disponibilidad y el rendimiento de la base de datos.

Mantenimiento ya no necesario

Cualquier ocurrencia

Ninguno

Revisa tareas de mantenimiento innecesarias para optimizar recursos y minimizar interrupciones.

Mantenimiento iniciado

Cualquier ocurrencia

Ninguno

Monitoree el inicio de las tareas de mantenimiento para garantizar que las actividades planificadas se desarrollen sin problemas. Una supervisión adecuada ayuda a mantener el rendimiento del sistema y a minimizar el tiempo de inactividad durante el mantenimiento.

Mantenimiento programado

Cualquier ocurrencia

Ninguno

Supervise el mantenimiento programado para prepararse ante posibles impactos en el sistema.

> 5% durante 5 minutos

> 20% durante 5 minutos

Supervise el robo de CPU en los clústeres de AWS EC2 con Rendimiento Aumentable para identificar cuándo el uso de CPU supera la línea base garantizada debido a núcleos compartidos. Los altos porcentajes de robo indican que el saldo de créditos de CPU está agotado, lo que afecta el rendimiento.

CPU

> 75% durante 5 minutos

> 75% durante 5 minutos

Supervisa el uso de la CPU para determinar si los datos se recuperan del disco en lugar de la memoria.

Uso de la partición del disco

> 90%

> 95% durante 5 minutos

Supervisar el uso de la partición de disco para garantizar la disponibilidad suficiente de almacenamiento. Los altos niveles de uso pueden conducir a una degradación del rendimiento y posibles interrupciones del servicio.

Para obtener más información, consulta Configura y resuelve alertas.

Atlas proporciona varias herramientas que le permiten supervisar y mejorar de forma proactiva el rendimiento de su base de datos.

El Real-Time Performance Panel (RTPP) en la Interfaz de Usuario de Atlas proporciona perspectivas sobre el tráfico actual de la red, las operaciones de la base de datos y estadísticas de hardware sobre los hosts a una granularidad de un segundo en la Interfaz de Usuario de Atlas. Recomendamos utilizar RTPP para:

  • Identificar visualmente las operaciones relevantes de la base de datos.

  • Evalúe los tiempos de ejecución de las consultas

  • Evaluar la proporción de documentos escaneados frente a documentos devueltos

  • Supervisar la carga y el rendimiento de la red

  • Descubre una posible atraso de la replicación en los miembros secundarios de conjuntos de réplicas

  • Cancelar las operaciones antes de que se completen para liberar recursos valiosos.

El RTPP no está disponible para supervisar desde la API de Administración de Atlas, pero puedes activar y desactivar el RTPP desde la API de Administración de Atlas con Actualizar la configuración de un proyecto.

Para obtener más información, consulte Supervisar el rendimiento en tiempo real.

El Query Profiler identifica las consultas lentas y los cuellos de botella, y sugiere el perfeccionamiento de índices y la reestructuración de consultas para mejorar el rendimiento de la base de datos. Proporciona visibilidad de las operaciones más lentas durante una ventana de 24horas en la Interfaz de Usuario de Atlas, facilitando la identificación de tendencias y valores atípicos en la eficiencia de las queries. Te recomendamos que utilices estos datos para detectar y solucionar consultas con bajo rendimiento, reduciendo la sobrecarga de rendimiento.

Puedes devolver líneas de registro para queries lentas que el perfilador del query identifica desde la API de administración de Atlas con Devolver queries lentas.

Para obtener más información, consulte Supervise el rendimiento de las query con el perfilador del query.

El Asesor de Rendimiento analiza automáticamente los registros para detectar consultas lentas y recomienda crear y eliminar índices. Analiza las consultas lentas y ofrece sugerencias de índices para colecciones individuales, clasificadas según una puntuación de impacto calculada y adaptadas a su carga de trabajo. Esto le ofrece una forma sencilla e instantánea de implementar mejoras de rendimiento significativas. Le recomendamos que supervise periódicamente, se centre en las consultas lentas y active el generador de perfiles de forma selectiva para minimizar la sobrecarga.

Puedes usar la Interfaz de Usuario de Atlas, la Atlas CLI y la API de administración de Atlas para ver slow queries y sugerencias para mejorar el rendimiento de tus queries del Performance Advisor.

Puedes devolver las líneas del registro para las slow queries que el Performance Advisor identifica desde la API de Administración de Atlas con Return Slow Queries. Para devolver los índices sugeridos y más con la API de administración Atlas, consulta Performance Advisor.

Para aprender más, consulta Supervisar y mejorar queries lentas con el Performance Advisor.

La página Información del espacio de nombres en la interfaz de usuario de Atlas le permite supervisar el rendimiento y las métricas de uso a nivel de colección. Muestra métricas (como el número de operaciones CRUD en la colección) y estadísticas (como el tiempo promedio de ejecución de consultas) para ciertos hosts y tipos de operaciones de las colecciones que ha fijado para su supervisión. Esto le proporciona una visibilidad más detallada del rendimiento a nivel de colección, que puede utilizar para optimizar el rendimiento de la base de datos, resolver problemas y tomar decisiones sobre el escalado, la indexación y el ajuste de consultas.

Para aprender más, consulta Supervisa la latencia de las query a nivel de colección con Namespace Insights.

La fuente de actividad de la organización y la fuente de actividad del proyecto en la Interfaz de Usuario de Atlas enumeran todos los eventos que se producen para una organización o proyecto de Atlas determinados, respectivamente. Puedes filtrar cada fuente de actividad por tipo de evento y rango de tiempo para supervisar eventos como actualizaciones de acceso a la API, cambios en la configuración de alertas, y más. Esto le permite revisar los registros de actividad de su organización o proyecto con el nivel de profundidad que desee.

Utilice la interfaz de usuario de Atlas, la CLI de Atlas y la API de administración de Atlas para recuperar eventos de cada fuente de actividad. Para obtener más información, consulte Ver fuente de actividad.

Atlas conserva los últimos 30 días de mensajes de registro y de auditoría de eventos del sistema. Puede descargar los registros de Atlas en cualquier momento hasta el final de sus periodos de retención mediante la interfaz de usuario de Atlas, la API de administración de Atlas y la CLI de Atlas.

Para obtener más información, se debe consultar Ver y descargar los registros de MongoDB.

También puede exportar registros a un bucket AWS S3 . Cuando se configura esta funcionalidad, Atlas exporta desde mongod, mongos y los registros de auditoría a un bucket S3 de AWS cada minuto.

Los siguientes ejemplos demuestran cómo habilitar la supervisión usando Atlas herramientas para automatización.

Ejecute el siguiente comando para recuperar la cantidad de espacio utilizado y libre en el disco especificado. Esta métrica se puede utilizar para determinar si el sistema se está quedando sin espacio libre.

atlas metrics disks describe atlas-lnmtkm-shard-00-00.ajlj3.mongodb.net:27017 data \
--granularity P1D \
--period P1D \
--type DISK_PARTITION_SPACE_FREE,DISK_PARTITION_SPACE_USED \
--projectId 6698000acf48197e089e4085 \

Ejecuta el siguiente comando para crear una notificación de alerta a una dirección de correo electrónico cuando tu implementación no tenga una primaria.

atlas alerts settings create \
--enabled \
--event "NO_PRIMARY" \
--matcherFieldName CLUSTER_NAME \
--matcherOperator EQUALS \
--matcherValue ftsTest \
--notificationType EMAIL \
--notificationEmailEnabled \
--notificationEmailAddress "myName@example.com" \
--notificationIntervalMin 5 \
--projectId 6698000acf48197e089e4085

Ejecute el siguiente comando para activar el umbral de operaciones lentas gestionadas por Atlas para tu proyecto.

atlas performanceAdvisor slowOperationThreshold enable --projectId 56fd11f25f23b33ef4c2a331

Ejecuta el siguiente comando para descargar un archivo comprimido que contiene los registros de MongoDB para el host especificado en tu proyecto.

atlas logs download cluster0-shard-00-00.a1b2c.mongodb.net mongodb.gz

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.

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"
    }

El siguiente script de ejemplo muestra cómo recuperar la cantidad de espacio usado y libre en el disco especificado. Esta métrica permite determinar si el sistema se está quedando sin espacio libre.

supervisión/metrics_proceso/main.go
// See entire project at https://github.com/mongodb/atlas-architecture-go-sdk
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"atlas-sdk-examples/internal/auth"
"atlas-sdk-examples/internal/config"
"atlas-sdk-examples/internal/metrics"
"github.com/joho/godotenv"
"go.mongodb.org/atlas-sdk/v20250219001/admin"
)
func main() {
envFile := ".env.development"
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)
}
// Fetch disk metrics with the provided parameters
p := &admin.GetDiskMeasurementsApiParams{
GroupId: cfg.ProjectID,
ProcessId: cfg.ProcessID,
PartitionName: "data",
M: &[]string{"DISK_PARTITION_SPACE_FREE", "DISK_PARTITION_SPACE_USED"},
Granularity: admin.PtrString("P1D"),
Period: admin.PtrString("P1D"),
}
view, err := metrics.FetchDiskMetrics(ctx, client.MonitoringAndLogsApi, p)
if err != nil {
log.Fatalf("Failed to fetch disk metrics: %v", err)
}
// Output metrics
out, err := json.MarshalIndent(view, "", " ")
if err != nil {
log.Fatalf("Failed to format metrics data: %v", err)
}
fmt.Println(string(out))
}

El siguiente script de ejemplo demuestra cómo descargar y descomprimir un archivo comprimido que contiene los registros de MongoDB para el host especificado en su proyecto Atlas:

supervisión/registros/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/config"
"atlas-sdk-examples/internal/fileutils"
"atlas-sdk-examples/internal/logs"
"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)
}
// Fetch logs with the provided parameters
p := &admin.GetHostLogsApiParams{
GroupId: cfg.ProjectID,
HostName: cfg.HostName,
LogName: "mongodb",
}
fmt.Printf("Request parameters: GroupID=%s, HostName=%s, LogName=%s\n",
cfg.ProjectID, cfg.HostName, p.LogName)
rc, err := logs.FetchHostLogs(ctx, client.MonitoringAndLogsApi, p)
if err != nil {
log.Fatalf("Failed to fetch logs: %v", err)
}
defer fileutils.SafeClose(rc)
// Prepare output paths
// If the ATLAS_DOWNLOADS_DIR env variable is set, it will be used as the base directory for output files
outDir := "logs"
prefix := fmt.Sprintf("%s_%s", p.HostName, p.LogName)
gzPath, err := fileutils.GenerateOutputPath(outDir, prefix, "gz")
if err != nil {
log.Fatalf("Failed to generate GZ output path: %v", err)
}
txtPath, err := fileutils.GenerateOutputPath(outDir, prefix, "txt")
if err != nil {
log.Fatalf("Failed to generate TXT output path: %v", err)
}
// Save compressed logs
if err := fileutils.WriteToFile(rc, gzPath); err != nil {
log.Fatalf("Failed to save compressed logs: %v", err)
}
fmt.Println("Saved compressed log to", gzPath)
// Decompress logs
if err := fileutils.DecompressGzip(gzPath, txtPath); err != nil {
log.Fatalf("Failed to decompress logs: %v", err)
}
fmt.Println("Uncompressed log to", txtPath)
}

Tip

Para ejemplos de Terraform que aplican nuestras recomendaciones en todos los pilares, consulta uno de los siguientes ejemplos en GitHub:

Antes de poder crear recursos con Terraform, debe:

  • Crea tu organización pagadora y crea una clave de API para la organización pagadora. Almacena tu clave API como variables de entorno ejecutando el siguiente comando en la terminal:

    export MONGODB_ATLAS_PUBLIC_KEY="<insert your public key here>"
    export MONGODB_ATLAS_PRIVATE_KEY="<insert your private key here>"
  • Instalar Terraform

También recomendamos crear un espacio de trabajo para tu entorno.

Los siguientes ejemplos demuestran cómo configurar alertas y notificaciones de alertas. Debe crear los siguientes archivos para cada ejemplo. Coloca los archivos de cada ejemplo en su propio directorio. Cambie los IDs y nombres para usar sus valores:

variable "atlas_org_id" {
type = string
description = "MongoDB Atlas Organization ID"
}
variable "atlas_project_name" {
type = string
description = "The MongoDB Atlas Project Name"
}
variable "atlas_project_id" {
description = "MongoDB Atlas project id"
type = string
}
variable "atlas_cluster_name" {
description = "MongoDB Atlas Cluster Name"
default = "datadog-test-cluster"
type = string
}
atlas_org_id = "32b6e34b3d91647abb20e7b8"
atlas_project_name = "Customer Portal - Prod"
atlas_project_id = "67212db237c5766221eb6ad9"
atlas_cluster_name = "myCluster"

ejemplo: Utilice lo siguiente para enviar una notificación de alerta por correo electrónico a los usuarios con el rol GROUP_CLUSTER_MANAGER cuando haya un atraso de la replicación, lo que podría resultar en inconsistencias de datos.

resource "mongodbatlas_alert_configuration" "test" {
project_id = var.atlas_project_id
event_type = "REPLICATION_OPLOG_WINDOW_RUNNING_OUT"
enabled = true
notification {
type_name = "GROUP"
interval_min = 10
delay_min = 0
sms_enabled = false
email_enabled = true
roles = ["GROUP_CLUSTER_MANAGER"]
}
matcher {
field_name = "CLUSTER_NAME"
operator = "EQUALS"
value = "myCluster"
}
threshold_config {
operator = "LESS_THAN"
threshold = 1
units = "HOURS"
}
}

Ejecuta el comando de muestra para recuperar las siguientes métricas:

  • OPCOUNTERS: supervisa la cantidad de consultas, actualizaciones, inserciones y eliminaciones que ocurren durante la carga máxima y garantiza que la carga no aumente inesperadamente.

  • CONEXIONES - Asegúrese de que la cantidad de sockets utilizados para los latidos y la replicación entre miembros no supere el límite establecido.

  • ORIENTACIÓN DE CONSULTAS: asegúrese de que la cantidad de claves y documentos escaneados en relación con la cantidad de documentos devueltos, promediados por segundo, no sean demasiado altos.

  • CPU DEL SISTEMA: asegúrese de que el uso de la CPU sea estable.

  • COLA DE BLOQUEO GLOBAL - Supervisa la cantidad de operaciones de lectura y escritura que están actualmente en la cola y esperando por el bloqueo de lectura y escritura, y asegúrate de que la carga no aumente inesperadamente.

atlas metrics processes atlas-lnmtkm-shard-00-00.ajlj3.mongodb.net:27017 \
--projectId 56fd11f25f23b33ef4c2a331 \
--granularity PT1H \
--period P7D \
--type
OPCOUNTER_DELETE,OPCOUNTER_INSERT,OPCOUNTER_QUERY,OPCOUNTER_UPDATE,CONNECTIONS,QUERY_TARGETING_SCANNED_OBJECTS_PER_RETURNED,QUERY_TARGETING_SCANNED_PER_RETURNED,SYSTEM_CPU_GUEST,SYSTEM_CPU_IOWAIT,SYSTEM_CPU_IRQ,SYSTEM_CPU_KERNEL,SYSTEM_CPU_NICE,SYSTEM_CPU_SOFTIRQ,SYSTEM_CPU_STEAL,SYSTEM_CPU_USER,GLOBAL_LOCK_CURRENT_QUEUE_TOTAL,GLOBAL_LOCK_CURRENT_QUEUE_READERS,GLOBAL_LOCK_CURRENT_QUEUE_WRITERS \
--output json

Ejecute el siguiente comando para enviar alertas a un grupo por correo electrónico cuando haya posibles tormentas de conexiones en función del número de conexiones en su proyecto.

atlas alerts settings create \
--enabled \
--event "OUTSIDE_METRIC_THRESHOLD" \
--metricName CONNECTIONS \
--metricOperator LESS_THAN \
--metricThreshold 1 \
--metricUnits RAW \
--notificationType GROUP \
--notificationRole "GROUP_DATA_ACCESS_READ_ONLY","GROUP_CLUSTER_MANAGER","GROUP_DATA_ACCESS_ADMIN" \
--notificationEmailEnabled \
--notificationEmailAddress "user@example.com" \
--notificationIntervalMin 5 \
--projectId 6698000acf48197e089e4085

Ejecute el siguiente comando para recuperar los índices sugeridos para las colecciones que experimentan consultas lentas.

atlas performanceAdvisor suggestedIndexes list \
--projectId 56fd11f25f23b33ef4c2a331 \
--processName atlas-zqva9t-shard-00-02.2rnul.mongodb.net:27017

Ejecuta el siguiente comando para descargar un archivo comprimido que contiene los registros de MongoDB para el host especificado en tu proyecto.

atlas logs download cluster0-shard-00-00.a1b2c.mongodb.net mongodb.gz

Consulta todos los ejemplos de Atlas Architecture Center Go SDK en un único proyecto en el repositorio de Atlas Architecture Go SDK en GitHub.

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.

El siguiente script de ejemplo demuestra cómo recuperar las siguientes métricas:

  • OPCOUNTERS: supervisa la cantidad de consultas, actualizaciones, inserciones y eliminaciones que ocurren durante la carga máxima y garantiza que la carga no aumente inesperadamente.

  • CONEXIONES - Asegúrese de que la cantidad de sockets utilizados para los latidos y la replicación entre miembros no supere el límite establecido.

  • ORIENTACIÓN DE CONSULTAS: asegúrese de que la cantidad de claves y documentos escaneados en relación con la cantidad de documentos devueltos, promediados por segundo, no sean demasiado altos.

  • CPU DEL SISTEMA: asegúrese de que el uso de la CPU sea estable.

  • COLA DE BLOQUEO GLOBAL - Supervisa la cantidad de operaciones de lectura y escritura que están actualmente en la cola y esperando por el bloqueo de lectura y escritura, y asegúrate de que la carga no aumente inesperadamente.

monitoreo/metrics_disk/main.go
// See entire project at https://github.com/mongodb/atlas-architecture-go-sdk
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"atlas-sdk-examples/internal/auth"
"atlas-sdk-examples/internal/config"
"atlas-sdk-examples/internal/metrics"
"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)
}
// Fetch process metrics with the provided parameters
p := &admin.GetHostMeasurementsApiParams{
GroupId: cfg.ProjectID,
ProcessId: cfg.ProcessID,
M: &[]string{
"OPCOUNTER_INSERT", "OPCOUNTER_QUERY", "OPCOUNTER_UPDATE", "TICKETS_AVAILABLE_READS",
"TICKETS_AVAILABLE_WRITE", "CONNECTIONS", "QUERY_TARGETING_SCANNED_OBJECTS_PER_RETURNED",
"QUERY_TARGETING_SCANNED_PER_RETURNED", "SYSTEM_CPU_GUEST", "SYSTEM_CPU_IOWAIT",
"SYSTEM_CPU_IRQ", "SYSTEM_CPU_KERNEL", "SYSTEM_CPU_NICE", "SYSTEM_CPU_SOFTIRQ",
"SYSTEM_CPU_STEAL", "SYSTEM_CPU_USER",
},
Granularity: admin.PtrString("PT1H"),
Period: admin.PtrString("P7D"),
}
view, err := metrics.FetchProcessMetrics(ctx, client.MonitoringAndLogsApi, p)
if err != nil {
log.Fatalf("Failed to fetch process metrics: %v", err)
}
// Output metrics
out, err := json.MarshalIndent(view, "", " ")
if err != nil {
log.Fatalf("Failed to format metrics data: %v", err)
}
fmt.Println(string(out))
}

El siguiente script de ejemplo demuestra cómo descargar y descomprimir un archivo comprimido que contiene los registros de MongoDB para el host especificado en su proyecto Atlas:

supervisión/registros/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/config"
"atlas-sdk-examples/internal/fileutils"
"atlas-sdk-examples/internal/logs"
"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)
}
// Fetch logs with the provided parameters
p := &admin.GetHostLogsApiParams{
GroupId: cfg.ProjectID,
HostName: cfg.HostName,
LogName: "mongodb",
}
fmt.Printf("Request parameters: GroupID=%s, HostName=%s, LogName=%s\n",
cfg.ProjectID, cfg.HostName, p.LogName)
rc, err := logs.FetchHostLogs(ctx, client.MonitoringAndLogsApi, p)
if err != nil {
log.Fatalf("Failed to fetch logs: %v", err)
}
defer fileutils.SafeClose(rc)
// Prepare output paths
// If the ATLAS_DOWNLOADS_DIR env variable is set, it will be used as the base directory for output files
outDir := "logs"
prefix := fmt.Sprintf("%s_%s", p.HostName, p.LogName)
gzPath, err := fileutils.GenerateOutputPath(outDir, prefix, "gz")
if err != nil {
log.Fatalf("Failed to generate GZ output path: %v", err)
}
txtPath, err := fileutils.GenerateOutputPath(outDir, prefix, "txt")
if err != nil {
log.Fatalf("Failed to generate TXT output path: %v", err)
}
// Save compressed logs
if err := fileutils.WriteToFile(rc, gzPath); err != nil {
log.Fatalf("Failed to save compressed logs: %v", err)
}
fmt.Println("Saved compressed log to", gzPath)
// Decompress logs
if err := fileutils.DecompressGzip(gzPath, txtPath); err != nil {
log.Fatalf("Failed to decompress logs: %v", err)
}
fmt.Println("Uncompressed log to", txtPath)
}

Tip

Para ejemplos de Terraform que aplican nuestras recomendaciones en todos los pilares, consulta uno de los siguientes ejemplos en GitHub:

Antes de poder crear recursos con Terraform, debe:

  • Crea tu organización pagadora y crea una clave de API para la organización pagadora. Almacena tu clave API como variables de entorno ejecutando el siguiente comando en la terminal:

    export MONGODB_ATLAS_PUBLIC_KEY="<insert your public key here>"
    export MONGODB_ATLAS_PRIVATE_KEY="<insert your private key here>"
  • Instalar Terraform

También recomendamos crear un espacio de trabajo para tu entorno.

Los siguientes ejemplos demuestran cómo configurar alertas y notificaciones de alertas. Debe crear los siguientes archivos para cada ejemplo. Coloca estos archivos para cada ejemplo en su propio directorio y reemplaza solo el archivo main.tf. Cambie los IDs y nombres para usar sus valores:

variable "atlas_org_id" {
type = string
description = "MongoDB Atlas Organization ID"
}
variable "atlas_project_name" {
type = string
description = "The MongoDB Atlas Project Name"
}
variable "atlas_project_id" {
description = "MongoDB Atlas project id"
type = string
}
variable "atlas_cluster_name" {
description = "MongoDB Atlas Cluster Name"
default = "datadog-test-cluster"
type = string
}
variable "datadog_api_key" {
description = "Datadog api key"
type = string
}
variable "datadog_region" {
description = "Datadog region"
default = "US5"
type = string
}
variable "prometheus_user_name" {
type = string
description = "The Prometheus User Name"
default = "puser"
}
variable "prometheus_password" {
type = string
description = "The Prometheus Password"
default = "ppassword"
}
atlas_org_id = "32b6e34b3d91647abb20e7b8"
atlas_project_name = "Customer Portal - Prod"
atlas_project_id = "67212db237c5766221eb6ad9"
atlas_cluster_name = "myCluster"
datadog_api_key = "1234567890abcdef1234567890abcdef"
datadog_region = "US5"
prometheus_user_name = "prometheus_user"
prometheus_password = "secure_prometheus_password"

1Ejemplo: utilice lo siguiente para integrarse con servicios de terceros como Datadog y Prometheus para notificaciones de alertas.

resource "mongodbatlas_third_party_integration" "test_datadog" {
project_id = var.atlas_project_id
type = "DATADOG"
api_key = var.datadog_api_key
region = var.datadog_region
}
resource "mongodbatlas_third_party_integration" "test_prometheus" {
project_id = var.atlas_project_id
type = "PROMETHEUS"
user_name = var.prometheus_user_name
password = var.prometheus_password
service_discovery = "http"
enabled = true
}
output "datadog.id" { value = mongodbatlas_third_party_integration.test_datadog.id }
output "prometheus.id" { value = mongodbatlas_third_party_integration.test_prometheus.id }

Ejemplo 2: Use lo siguiente para enviar una notificación de alerta a servicios de terceros como DataDog y Prometheus cuando no haya un nodo principal en el set de réplicas durante más de 5 minutos.

resource "mongodbatlas_alert_configuration" "test_alert_notification" {
project_id = var.atlas_project_id
event_type = "NO_PRIMARY"
enabled = true
notification {
type_name = "PROMETHEUS"
integration_id = mongodbatlas_third_party_integration.test_datadog.id # ID of the Atlas Prometheus integration
}
notification {
type_name = "DATADOG"
integration_id = mongodbatlas_third_party_integration.test_prometheus.id # ID of the Atlas Datadog integration
}
matcher {
field_name = "REPLICA_SET_NAME"
operator = "EQUALS"
value = "myReplSet"
}
threshold_config {
operator = "GREATER_THAN"
threshold = 5
units = "MINUTES"
}
}

ejemplo 3: Usa lo siguiente para enviar una notificación de alerta por correo electrónico a los usuarios con el rol GROUP_CLUSTER_MANAGER cuando haya un atraso de la replicación, lo que podría resultar en inconsistencias de datos.

resource "mongodbatlas_alert_configuration" "test_replication_lag_alert" {
project_id = var.atlas_project_id
event_type = "OUTSIDE_METRIC_THRESHOLD"
enabled = true
notification {
type_name = "GROUP"
interval_min = 10
delay_min = 0
sms_enabled = false
email_enabled = true
roles = ["GROUP_CLUSTER_MANAGER"]
}
matcher {
field_name = "CLUSTER_NAME"
operator = "EQUALS"
value = "myCluster"
}
metric_threshold_config {
metric_name = "OPLOG_SLAVE_LAG_MASTER_TIME"
operator = "GREATER_THAN"
threshold = 1
units = "HOURS"
}
}

Volver

Automatización

Obtén una insignia de habilidad

Domine “Herramientas de supervisión de MongoDB” gratis

Más información

En esta página