Docs Menu
Docs Home
/ /

Guía para el monitoreo y las alertas del Atlas

MongoDB Atlas cuenta con un sólido conjunto de métricas, telemetría y registros integrados que puede aprovechar de Atlas o integrar en su plataforma de observabilidad y alertas de terceros. Esto le permite supervisar y gestionar sus implementaciones de Atlas y responder a incidentes de forma 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

  • Descubra si su hardware tiene recursos limitados

  • Realizar la optimización de la carga de trabajo y de las 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 puede ver diversas métricas del clúster, supervisar el rendimiento de su base de datos, configurar alertas y notificaciones, y descargar registros de actividad.

Métricas

Las métricas de implementación brindan información sobre el rendimiento del hardware y la eficiencia operativa de la base de datos. Atlas recopila métricas de sus 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 nivel de granularidad inmediatamente superior. Muchas métricas tienen un equivalente de reporte de ráfagas.

Puede supervisar las métricas en la interfaz de usuario de Atlas mediante la vista Métricas, el Panel de Rendimiento en Tiempo Real, el Generador de Perfiles de Consultas, el Asesor de Rendimiento y la página Información del Espacio de Nombres. También puede usar la CLI de Atlas o la API de Administración de Atlas para canalizar las métricas a la herramienta que prefiera.

La siguiente vista de métricas de la interfaz de usuario de Atlas muestra la variedad de métricas disponibles para monitorear para un conjunto de réplicas de muestra de tres nodos:

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

Alertas

Atlas proporciona alertas para más de 200 tipos de eventos, lo que le permite personalizar las alertas para una monitorización precisa. Atlas emite alertas para las condiciones de la base de datos y del servidor que configure en su 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 monitorización de Atlas ofrecen información sobre diversas métricas clave, como el rendimiento del hardware y la eficiencia operativa de la base de datos. Herramientas como paneles de rendimiento en tiempo real para la visibilidad de la red y la operación, perfiladores de consultas para el seguimiento de tendencias de eficiencia y sugerencias de índices automatizadas permiten supervisar y solucionar problemas de forma más eficaz, lo que impulsa una mayor eficiencia operativa. Por ejemplo, estos gráficos pueden ayudarle a comprender el impacto de los reinicios y las elecciones del servidor en el rendimiento 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 Orientación para auditoría y registro de Atlas.

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

Las implementaciones de una sola región no tienen consideraciones específicas para la integración con herramientas de alerta de terceros,como Datadog y Prometheus. Consulte todas las recomendaciones de Paradigma de Implementación.

Recomendaciones que se aplican únicamente a implementaciones en múltiples regiones o 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 rendimiento de su clúster o base de datos, puede consultar las métricas del clúster, como el historial de rendimiento, el rendimiento y la utilización. La siguiente tabla enumera algunas (pero no todas) categorías importantes de métricas que debe supervisar:

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

  • Opcounters

  • Tiempos de ejecución de la operación

  • Ejecutores de consultas y segmentación de consultas

  • Conexiones

  • Queues

  • Escanear y ordenar

Métricas de Hardware

  • CPU del sistema normalizado

  • CPU de proceso normalizado

  • Latencia del disco

  • IOPS de disco

  • Espacio libre en disco

  • Memoria del sistema

  • Uso de swap

Métricas de replicación

  • Retraso de replicación

  • Ventana del registro de operaciones de replicación

  • Margen de replicación

  • Oplog GB/hora

  • Contadores de operaciones -repl

Puede usar la interfaz de usuario de Atlas, la API de administración de Atlas y la CLI de Atlas para ver las métricas del clúster de Atlas. Además, Atlas ofrece integraciones integradas con herramientas de terceros como Datadog y Prometheus, y también puede aprovechar la API de administración de Atlas para integrarse con otras herramientas de métricas personalizadas.

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

Atlas se integra con su conjunto de observabilidad existente para que pueda recibir alertas y tomar decisiones basadas en datos sin reemplazar sus herramientas actuales ni modificar sus flujos de trabajo. Atlas puede enviar notificaciones de alerta con herramientas de terceros como Microsoft Teams, PagerDuty, DataDog, Opsgenie, Splunk On-Call y otras, para brindarle visibilidad del rendimiento de la base de datos y del conjunto completo en un solo lugar.

Configure alertas y notificaciones para eventos de seguridad, como intentos fallidos de inicio de sesión, patrones de acceso inusuales y filtraciones de datos. En entornos de desarrollo y pruebas, recomendamos configurar alertas para clústeres que hayan estado inactivos durante siete días o más para ayudarle a identificar qué clústeres pueden desactivarse y ahorrar costos.

Cuando vea alertas en la interfaz de usuario de Atlas, le recomendamos que utilice los filtros disponibles para limitar los resultados por host, conjunto de réplicas, clúster, fragmento y más para 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 de forma predeterminada. Para obtener más información sobre la configuración de alertas predeterminada, consulte Configuración de alertas predeterminada.

Condición
Umbral de alerta recomendada: Prioridad baja
Umbral de alerta recomendado: Alta prioridad
Ideas claves

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.

Escribir 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 durante 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 escritura

> 20ms durante 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 primaria

5 minutos

5 minutos

Supervise el estado de sus conjuntos de réplicas para identificar instancias sin nodo principal. La ausencia de un nodo principal 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.

Fallos de página

> 50/segundo durante 5 minutos

> 100/segundo durante 5 minutos

Monitoree los fallos de página para determinar si es necesario aumentar la memoria. Esta métrica muestra la tasa promedio de fallos de página por segundo en este proceso durante el período de muestra seleccionado. En entornos que no sean Windows, esto solo se aplica a fallos de página graves.

Retraso de replicación

> 240 segundo durante 5 minutos

> 1 hora por 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

Realice un seguimiento de las copias de seguridad para garantizar la integridad de los datos. Una copia de seguridad fallida puede comprometer la disponibilidad de los datos.

Copia de seguridad restaurada

Cualquier ocurrencia

Ninguno

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

La instantánea de respaldo falló

Cualquier ocurrencia

Ninguno

Supervisar las operaciones de instantáneas de respaldo para garantizar la redundancia de datos y la capacidad de recuperación.

Programación de copias de seguridad atrasada

> 12 horas

> 12 horas

Revise los programas de copias de seguridad para asegurarse de que estén al día. Retrasarse puede provocar 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+

Monitoree las escrituras en cola para mantener un procesamiento de datos eficiente. Un alto nivel de escrituras en cola puede indicar limitaciones de recursos o cuellos de botella en el rendimiento, lo que requiere optimización para mantener la capacidad de respuesta del sistema.

Reinicios de ú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 garantizar la estabilidad del funcionamiento del clúster. Las elecciones frecuentes pueden indicar problemas de red o limitaciones de recursos, lo que podría afectar la disponibilidad y el rendimiento de la base de datos.

Ya no es necesario el mantenimiento

Cualquier ocurrencia

Ninguno

Revise las 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

Supervisar el mantenimiento programado para prepararse para posibles impactos en el sistema.

> 5% durante 5 minutos

> 20% durante 5 minutos

Monitorea el robo de CPU en clústeres de AWS EC2 con Rendimiento Expansible para identificar cuándo el uso de CPU excede el límite garantizado debido a núcleos compartidos. Un alto porcentaje de robo indica que el saldo de crédito de CPU está agotado, lo que afecta el rendimiento.

CPU

> 75% durante 5 minutos

> 75% durante 5 minutos

Supervise 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, consulte Configurar y resolver alertas.

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

El Panel de Rendimiento en Tiempo Real (RTPP) de la interfaz de usuario de Atlas proporciona información sobre el tráfico de red actual, las operaciones de la base de datos y las estadísticas de hardware de los hosts con una precisión de un segundo en la interfaz de usuario de Atlas. Recomendamos usar RTPP para:

  • Identificar visualmente las operaciones de base de datos relevantes

  • Evaluar los tiempos de ejecución de consultas

  • Evaluar la proporción de documentos escaneados con respecto a los documentos devueltos

  • Supervisar la carga y el rendimiento de la red

  • Descubra el posible retraso en la replicación de los miembros secundarios de los conjuntos de réplicas

  • Eliminar operaciones antes de que se completen para liberar recursos valiosos

El RTPP no está disponible para monitorear desde la API de administración de Atlas, pero puede habilitarlo y deshabilitarlo desde la API de administración de Atlas con Actualizar una configuración de proyecto.

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

El Analizador de Consultas identifica consultas lentas y cuellos de botella, y sugiere mejoras en el índice y la reestructuración de consultas para mejorar el rendimiento de su base de datos. Proporciona visibilidad de las operaciones más lentas durante un período de 24horas en la interfaz de usuario de Atlas, lo que facilita la identificación de tendencias y valores atípicos en la eficiencia de las consultas. Le recomendamos utilizar estos datos para identificar y solucionar problemas de consultas con bajo rendimiento, reduciendo así la sobrecarga de rendimiento.

Puede devolver líneas de registro para consultas lentas que el Generador de perfiles de consultas identifica desde la API de administración de Atlas con Devolver consultas lentas.

Para obtener más información,consulte Supervisar el rendimiento de las consultas con el generador de perfiles de consultas.

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.

Puede utilizar la interfaz de usuario de Atlas, la CLI de Atlas y la API de administración de Atlas para ver consultas lentas y sugerencias para mejorar el rendimiento de sus consultas desde el Asesor de rendimiento.

Puede devolver líneas de registro para consultas lentas que el Asesor de Rendimiento identifica desde la API de Administración de Atlas con la función "Devolver Consultas Lentas". Para devolver índices sugeridos y más información con la API de Administración de Atlas,consulte Asesor de Rendimiento.

Para obtener más información,consulte Supervisar y mejorar consultas lentas con el Asesor de rendimiento.

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 obtener más información,consulte Supervisar la latencia de consultas a nivel de colección con Namespace Insights.

El Feed de Actividades de la Organización y el Feed de Actividades del Proyecto en la interfaz de usuario de Atlas enumeran todos los eventos que ocurren para una organización o proyecto de Atlas, respectivamente. Puede filtrar cada feed de actividades 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, etc. Esto le permite revisar los registros de actividades de su organización o proyecto con el nivel de detalle 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 un3 bucket de AWS S. Al configurar esta función, Atlas exporta mongod desde, mongos y los registros de auditoría a un bucket de AWS S3 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 usado y libre en el disco especificado. Esta métrica permite 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 \

Ejecute el siguiente comando para crear una notificación de alerta a una dirección de correo electrónico cuando su implementación no tenga una dirección principal.

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 habilitar el umbral de operación lenta administrado por Atlas para su proyecto.

atlas performanceAdvisor slowOperationThreshold enable --projectId 56fd11f25f23b33ef4c2a331

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

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

Vea todos los ejemplos de Atlas Architecture Center Go SDK en un solo proyecto en el repositorio de GitHub de Atlas Architecture Go SDK.

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

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.

monitoreo/proceso_de_métricas/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:

monitoreo/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 ver ejemplos de Terraform que aplican nuestras recomendaciones en todos los pilares, consulte uno de los siguientes ejemplos en GitHub:

Antes de poder crear recursos con Terraform, debes:

  • Cree su organización pagadora y genere una clave API para ella. Guarde su 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 su entorno.

Los siguientes ejemplos muestran cómo configurar alertas y notificaciones de alertas. Debe crear los siguientes archivos para cada ejemplo. Coloque los archivos de cada ejemplo en su propio directorio. Cambie los ID y los 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 GROUP_CLUSTER_MANAGER rol cuando haya un retraso en la replicación, lo que podría generar inconsistencias en los 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"
}
}

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

  • COLA DE BLOQUEO GLOBAL: supervisa la cantidad de operaciones de lectura y escritura que están actualmente en cola y esperando el bloqueo de lectura y escritura, y garantiza 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 según la cantidad 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

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

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

Vea todos los ejemplos de Atlas Architecture Center Go SDK en un solo proyecto en el repositorio de GitHub de Atlas Architecture Go SDK.

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.

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

  • COLA DE BLOQUEO GLOBAL: supervisa la cantidad de operaciones de lectura y escritura que están actualmente en cola y esperando el bloqueo de lectura y escritura, y garantiza 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:

monitoreo/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 ver ejemplos de Terraform que aplican nuestras recomendaciones en todos los pilares, consulte uno de los siguientes ejemplos en GitHub:

Antes de poder crear recursos con Terraform, debes:

  • Cree su organización pagadora y genere una clave API para ella. Guarde su 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 su entorno.

Los siguientes ejemplos muestran cómo configurar alertas y notificaciones de alertas. Debe crear los siguientes archivos para cada ejemplo. Coloque estos archivos en su propio directorio y reemplace solo el archivo main.tf. Cambie los ID y los 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 }

2Ejemplo: utilice lo siguiente para enviar una notificación de alerta a servicios de terceros como Datadog y Prometheus cuando no haya ningún servidor principal en el conjunto 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"
}
}

3Ejemplo: utilice lo siguiente para enviar una notificación de alerta por correo electrónico a los usuarios con el GROUP_CLUSTER_MANAGER rol cuando haya un retraso en la replicación, lo que podría generar inconsistencias en los 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