Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Alertas recomendadas para mongot

Esta página proporciona un conjunto de alertas de Prometheus recomendadas para implementaciones autogestionadas de mongot. Las definiciones de alerta son puntos de partida. Puede copiar, adaptar y ajustar estas definiciones de alerta para que se ajusten a su carga de trabajo.

Cada entrada de alerta incluye los siguientes campos:

Campo
Descripción

Gravedad

Para obtener más información, consulte Niveles de alerta.

Qué le dice

Significado operativo de la alerta.

PromQL

Ejemplos de expresiones. Adapta los nombres de las métricas a tu entorno.

Lógica de umbral

Motivo del umbral dado.

Primera respuesta

Acciones que el ingeniero de guardia debe tomar.

Configure las alertas para el nivel de página primero. Ejecute estas alertas durante una semana y ajuste los umbrales de falsos positivos para las alertas. Más tarde, agregue alertas de ticket y de observación.

Nivel
Cuándo alertar

Página

El impacto visible para el cliente está ocurriendo o ya ocurrió o está a punto de ocurrir. Aborde esta alerta lo antes posible.

ticket

Degradación operativa. Abordar en cuestión de horas.

reloj

Útil en tableros o para análisis de tendencias. No se requiere ninguna acción inmediata.

Las siguientes alertas indican un impacto visible para el cliente y requieren atención inmediata.

mongot no responde a las recuperaciones de métricas de Prometheus. La búsqueda y la búsqueda vectorial no funcionan correctamente.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

up{job="mongot"} == 0

Establezca la duración en un minuto.

Una breve interrupción podría ser un error de red transitorio. Una ausencia sostenida de más de un minuto es una interrupción del servicio.

Responda a esta alerta ejecutando uno de los siguientes comandos según cómo ejecute su mongot:

  • Para las implementaciones que utilizan Kubernetes, ejecute kubectl get pods.

  • Para las implementaciones que utilizan systemd, ejecuta systemctl status mongot.

  • Para implementaciones que utilizan Docker, ejecute docker ps.

Compruebe los registros para conocer la causa del bloqueo. Para conocer los pasos de solución de problemas, consulte registros de mongot y FTDC.

El proceso se reinicia repetidamente. La implementación es inestable.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

changes(mongot_process_start_time_seconds[10m]) > 3

Más de tres reinicios en 10 minutos es un bucle de bloqueo. Los bucles de bloqueo no son un error temporal y deben abordarse.

Responda a esta alerta realizando las siguientes acciones:

  • Capture registros de la ventana de bloqueo más reciente.

  • Suspenda los reinicios automáticos para poder inspeccionar un pod o proceso detenido.

  • Abra una captura de FTDC.

mongot no puede seguir el ritmo de mongod. Los resultados de la búsqueda están cada vez más desactualizados. Si el atraso de la replicación no se corrige, el cursor se cae del oplog y fuerza una resincronización completa.

Utilice una de las siguientes expresiones de PromQL para alertar sobre esta condición:

max(mongot_index_stats_indexing_replicationLagMs) > 60000

O, para detectar una tendencia creciente antes de que se alcance el umbral absoluto, utilice:

deriv(max(mongot_index_stats_indexing_replicationLagMs)[15m:1m]) > 500

Esta métrica es por índice y en milisegundos. No divida la métrica por 1000 en PromQL. El retraso en estado estable es inferior a un segundo. Un minuto de retraso es aceptable para escenarios de recuperación. Un retraso en constante crecimiento es la condición de alarma.

La familia de métricas mongot_index_stats_* solo está presente una vez que existe al menos un índice de búsqueda. En una implementación nueva sin índices, esta alerta no aparece porque la serie aún no existe. Este es un comportamiento esperado.

Responda a esta alerta realizando las siguientes acciones:

  • Comprueba la tasa de mongod de guardar para detectar un pico repentino.

  • Compruebe la CPU y la E/S de disco de mongot para ver si hay saturación.

Para obtener orientación, consulte Referencia de métricas para mongot.

mongot está encontrando errores durante la sincronización. Las excepciones repetidas fuerzan una resincronización. Los índices no están disponibles temporalmente o no están actualizados durante la resincronización.

Utilice una de las siguientes expresiones de PromQL para alertar sobre esta condición.

Para alertar en función de los errores durante la sincronización, utilice:

increase(mongot_index_stats_indexing_steadyStateExceptions_total[10m]) > 0

Para detectar excepciones de sincronización inicial, utilice:

increase(mongot_index_stats_indexing_initialSyncExceptions_total[10m]) > 0

Cualquier excepción de estado estable en producción es un problema. El oplog se ha transferido, lo que significa que el oplog mongod es demasiado pequeño o mongot es demasiado lento, o se ha producido un error posterior.

Responda a esta alerta realizando las siguientes acciones:

  • Capture los registros mongot alrededor de la excepción.

  • Comprueba el tamaño del oplog de mongod.

  • Abra una captura FTDC inmediatamente. Es más difícil determinar la causa raíz después del hecho.

El montón de JVM está cerca de su límite. Está a punto de producirse un OutOfMemoryError.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

sum(mongot_jvm_memory_used_bytes{area="heap"})
/ sum(mongot_jvm_memory_max_bytes{area="heap"} > 0) > 0.85

Establezca la duración en cinco minutos.

El uso sostenido del montón por encima del 85% puede causar problemas. El siguiente pico de asignación puede causar un error de falta de memoria. mongot utiliza la recolección de elementos no utilizados Garbage-First (G1) por defecto. La siguiente expresión es una versión post-GC más precisa de la expresión PromQL anterior:

mongot_jvm_gc_live_data_size_bytes
/ mongot_jvm_gc_max_data_size_bytes > 0.85

Responde a esta alerta comprobando las operaciones de indexación activas y la carga de queries. Si se está compilando un índice grande, la condición puede resolverse cuando finalice la compilación. De lo contrario, aumenta la configuración del montón -Xmx o reduce el número de operaciones simultáneas.

mongot aplica tres umbrales en el uso del disco en el volumen dataPath. Estos umbrales se aplican en el propio binario mongot. Los umbrales surten efecto tanto si está supervisión como si no. Establezca alertas en los tres umbrales para que el ingeniero de guardia vea la cascada y pueda actuar antes de que se cruce el umbral final.

Disco utilizado
Qué hace mongot
Impacto visible para el cliente
Gravedad

85% (15% libre)

mongot deshabilita la sincronización inicial. Las nuevas creaciones de índices permanecen en PENDING. Los índices existentes siguen funcionando.

Solo visible si se crea un nuevo índice. La búsqueda existente y la búsqueda vectorial continúan con normalidad.

ticket

90% (10% libre)

mongot deshabilita la replicación de estado estable. Los índices existentes dejan de recibir eventos de cambio de mongod. Los resultados de la búsqueda se vuelven cada vez más obsoletos.

Los resultados de la búsqueda no están actualizados con mongod. Los usuarios ven resultados obsoletos para los datos escritos recientemente.

Página

95% (5% libre)

mongot se bloquea. La recuperación requiere liberar el disco antes de que mongot pueda reiniciarse correctamente.

Toda la búsqueda y la búsqueda vectorial no están disponibles.

Página

Esta alerta tiene tres reglas. La gravedad aumenta en cada umbral.

Utilice las siguientes expresiones de PromQL para alertar sobre estas condiciones:

85% - Nivel de ticket:

(1 - mongot_system_disk_space_data_path_free_bytes
/ mongot_system_disk_space_data_path_total_bytes) >= 0.85

90% — Nivel de página:

(1 - mongot_system_disk_space_data_path_free_bytes
/ mongot_system_disk_space_data_path_total_bytes) >= 0.90

95% — Nivel de página (interrupción del servicio):

(1 - mongot_system_disk_space_data_path_free_bytes
/ mongot_system_disk_space_data_path_total_bytes) >= 0.95

El punto de conexión mongot /metrics expone _free_bytes y _total_bytes. Calcule el porcentaje utilizado como 1 - free/total.

Responda a esta alerta realizando las siguientes acciones:

  • Al 85%: audite y descarte los índices no utilizados a través de la API de gestión de índices de búsqueda. Nunca borre archivos en dataPath manualmente. Los índices nuevos no se compilan hasta que el uso del disco caiga por debajo del 85%.

  • En 90%: Alerta a tu equipo de operación o SRE de que el clúster se encuentra en estado de replicación deshabilitada. Descarte los índices no utilizados o amplíe el almacenamiento para restaurar la replicación.

  • Al 95%: Esto es una interrupción del servicio. Libere espacio en disco y, a continuación, reinicie mongot. mongot se niega a reiniciarse limpiamente hasta que se libere el disco.

Las siguientes alertas indican una degradación operativa y deben abordarse en cuestión de horas.

Los usuarios experimentan búsquedas lentas.

Utilice una de las siguientes expresiones de PromQL para alertar sobre esta condición:

Índice cruzado:

max(mongot_command_searchCommandTotalLatency_seconds{quantile="0.99"})
> <your-SLO-threshold>

Desglose por índice:

max(mongot_index_stats_query_searchResultBatchLatencies_seconds{quantile="0.99"})
by (indexId_logString) > <your-SLO-threshold>

El umbral depende de su objetivo de nivel de servicio. Un punto de partida común es tener el percentil 99en 500 milisegundos para $search y un segundo para $vectorSearch. Estas series son resúmenes con etiquetas quantile predefinidas, no histogramas.

Responda a esta alerta investigando lo siguiente:

  • Profundidad de la cola del ejecutor.

  • Tiempo de pausa de la recolección de basura de JVM.

  • Almacenamiento de IOPS para identificar el cuello de botella.

Los trabajadores están saturados y las tareas se están poniendo en cola. La latencia de las query está a punto de aumentar.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

max({__name__=~"mongot_.+_executor_queued_tasks"}) > 10

Establezca la duración en cinco minutos.

Una cola pequeña y breve es normal bajo picos de carga. Una cola sostenida significa que la capacidad del trabajador es insuficiente. Los grupos de puntos de acceso comunes son:

  • mongot_decoding_executor

  • mongot_change_stream_sync_dispatcher_executor

  • mongot_indexing_work_executor

  • mongot_indexing_lifecycle_executor

  • mongot_index_commit_executor

El trabajo de indexación se divide en varios grupos especializados. No hay mongot_indexing_executor combinado.

Responda a esta alerta identificando qué grupo está en cola:

topk(5, sum by (__name__) ({__name__=~"mongot_.+_executor_queued_tasks"}))

Escale o aumente el tamaño del grupo. La rampa de profundidad de la cola proporciona una advertencia temprana antes de que aumente la latencia de la query.

El volumen de almacenamiento se está acercando a la saturación. La latencia de Lucene está cada vez más ligada al disco.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

rate(mongot_system_disk_reads_events{name="<dataPath device>"}[5m]) > 1000

Establezca la duración en 15 minutos.

El umbral de IOPS 1,000 es el indicador de recomendación de clase de almacenamiento. Sin embargo, no es un límite estricto. El número correcto depende de su dispositivo. Identifique su dispositivo dataPath con df o inspeccionando los valores de la etiqueta mongot_system_disk_*.

Responda a esta alerta comprobando si hay una fusión o una sincronización inicial en curso. Si el nivel de IOPS alto se mantiene, es probable que la clase de almacenamiento sea demasiado pequeña. Vuelva a revisar la configuración de almacenamiento.

El sistema operativo extrae repetidamente páginas de índice del disco porque se han expulsado de la caché. La memoria es la restricción, no la capacidad de almacenamiento.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

rate(mongot_system_process_majorPageFaults_operations[5m]) > 1000

1,000 fallos importantes por segundo es el umbral canónico para la presión de la memoria en la ruta crítica. Junto con las IOPS sostenidas, esta es la señal de escasez de memoria en relación con el conjunto de trabajo.

Responda a esta alerta agregando memoria porque Lucene asigna archivos de índice a la memoria.

Un índice específico encontró un error de indexación no trivial.

Utilice una de las siguientes expresiones de PromQL para alertar sobre esta condición:

increase(mongot_lifecycle_failedInitializationIndexes_total[10m]) > 0

O:

increase(mongot_indexing_steadyStateChangeStream_unexpectedBatchFailures_total[10m]) > 0

O:

increase(mongot_index_stats_indexing_invalidGeometryField_total[10m]) > 0

Estos contadores no se incrementan con una carga normal. Un aumento indica un problema de datos como:

  • Una explosión de mapeo.

  • Un documento de gran tamaño.

  • Un documento no válido.

Un aumento en estos contadores también podría indicar un problema de ruta de código.

Responda a esta alerta realizando las siguientes acciones:

  • Inspeccione las etiquetas del índice afectado y el motivo.

  • Compruebe los registros mongot para ver la excepción subyacente.

La incrustación automatizada está experimentando problemas. El proceso de indexación se detiene para los nuevos documentos en los índices afectados.

Utilice una de las siguientes expresiones de PromQL para alertar sobre esta condición:

increase(mongot_indexing_steadyStateChangeStream_rescheduledEmbeddingGetMores_total[10m]) > 0

O:

increase(mongot_initialsync_queue_requeuedEmbeddingInitialSyncs_total[10m]) > 0

La reprogramación o la nueva puesta en cola sostenidas indican que la ruta de incrustación no se está drenando correctamente. Las causas más comunes son:

  • An invalid API key.

  • Un punto de conexión de red inalcanzable.

  • Límite de velocidad de Voyage AI.

Responda a esta alerta realizando las siguientes acciones:

  • Compruebe los registros de mongot para ver el error HTTP en el endpoint de incrustación.

  • Verifique la validez y la conectividad de la clave de API.

  • Compruebe el estado de Voyage AI.

Uno o más índices pasaron del estado STEADY a un estado de recuperación, obsoleto o fallido.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

count by (status) (mongot_index_stats_indexStatusCode{status!="STEADY"} == 1) > 0

Un único índice en RECOVERING_TRANSIENT durante unos segundos durante la implementación es normal. Un recuento sostenido superior a cero en cualquiera de los siguientes estados indica un problema:

  • FAILED.

  • RECOVERING_NON_TRANSIENT.

  • STALE.

Responda a esta alerta identificando el indexId_logString afectado y verificando las líneas de registro de mongot correspondientes.

El pipeline de captura de diagnósticos está fallando. mongot está sano, pero ha perdido la observabilidad de ese nodo.

Nota

Esta métrica está protegida por la funcionalidad ftdcExecutorMetricsToPrometheus. Confirme si su implementación expone esta métrica antes de agregar esta alerta. La métrica está ausente de los scrapes mongodb/mongodb-community-search por defecto. Por defecto, esta funcionalidad está desactivada para las implementaciones autogestionadas.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

mongot_mongot_ftdc_executor_failure_total > 0

Establezca la duración en cinco minutos.

Si su implementación expone esta métrica, trátela como una señal grave de que la observabilidad descendente está degradada.

Responda a esta alerta reiniciando mongot.

Las siguientes métricas son útiles en los tableros para el análisis de tendencias. Ninguna de estas métricas requiere paginación.

Esta métrica muestra la utilización del montón después de la colección de elementos no utilizados a lo largo del tiempo.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

sum(mongot_jvm_gc_live_data_size_bytes) / sum(mongot_jvm_gc_max_data_size_bytes)

Responda a esta alerta investigando si la métrica aumenta durante semanas.

Esta métrica muestra la peor pausa reciente en todos los recopiladores.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

max(mongot_jvm_gc_pause_seconds_max)

Responda a esta alerta investigando si esta métrica se mantiene durante 100 ms.

La métrica muestra el margen con respecto al límite flexible para los descriptores de archivos abiertos.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

mongot_process_*

Responda a esta alerta investigando si esta métrica supera el 80%.

Esta métrica muestra el número de clientes que tienen cursores más allá del tiempo de espera.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

rate(mongot_cursorManager_trackedCursors[5m])

No es necesario establecer un umbral de alerta para esta métrica. Puramente informativo.

Esta métrica muestra el número de subprocesos que esperan una conexión.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

mongot_mongoClient_connectionPool_connectionsCheckedOut approaching _maxSize

Responda a esta alerta investigando si la métrica es sostenida y mayor que cero.

Esta métrica muestra la capacidad de almacenamiento.

Utiliza la siguiente expresión PromQL para alertar sobre esta condición:

mongot_system_disk_space_data_path_free_bytes / mongot_system_disk_space_data_path_total_bytes

Si esta métrica cae por debajo del 30% libre, considere tener una conversación de planificación para aumentar el almacenamiento.