Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Alertas recomendados para mongot

Esta página fornece um conjunto de alertas Prometheus recomendados para implantações mongot autogerenciadas. As definições de alerta são pontos de partida. Você pode copiar, adaptar e ajustar essas definições de alerta para se adequar à sua carga de trabalho.

Cada entrada de alerta inclui os seguintes campos:

Campo
Descrição

Gravidade

Para obter detalhes, consulte Alerta Tier.

O que ele diz a você

Significado operacional do alerta.

PromQL

Expressões de exemplo. Adapte os nomes das métricas ao seu ambiente.

Justificativa do limite

Motivo para o limite dado.

Primeira resposta

Ações que o engenheiro de plantão deve tomar.

Configure os alertas para o tier Page primeiro. Execute esses alertas por uma semana e ajuste os limites de falso positivo para os alertas. Mais tarde, adicione alertas de ticket e de observação.

Nível
Quando alerta

página

O impacto visível para o cliente está ou já está ocorrendo ou está prestes a ocorrer. Resolva este alerta o mais rápido possível.

ticket

Degradação operacional. Endereço em algumas horas.

assistir

Útil em dashboards ou para análise de tendências. Nenhuma ação imediata necessária.

Os seguintes alertas indicam impacto visível para o cliente e exigem atenção imediata.

mongot não está respondendo a buscas de métricas do Prometheus. A pesquisa e a pesquisa vetorial não estão funcionando corretamente.

Use a seguinte expressão PromQL para alertar sobre esta condição:

up{job="mongot"} == 0

Defina a duração para um minuto.

Uma breve falha pode ser um erro de rede transitório. Uma ausência sustentada por mais de um minuto é uma interrupção.

Responda a este alerta executando um dos seguintes comandos, dependendo de como você executa seu mongot:

  • Para implantações que usam Kubernetes, execute kubectl get pods.

  • Para implantações usando systemd, execute systemctl status mongot.

  • Para implantações que usam o Docker, execute docker ps.

Verifique o log para ver a causa da falha. Para etapas de solução de problemas, consulte mongot Logs e FTDC.

O processo está reiniciando repetidamente. A implantação está instável.

Use a seguinte expressão PromQL para alertar sobre esta condição:

changes(mongot_process_start_time_seconds[10m]) > 3

Mais de três reinícios em 10 minutos é um loop de falha. Os loops de falha não são uma falha temporária e precisam ser resolvidos.

Responda a este alerta executando as seguintes ações:

  • Capture logs da janela de falha mais recente.

  • Suspenda as reinicializações automatizadas para que você possa inspecionar um pod ou processo interrompido.

  • Abra uma captura FTDC.

mongot não consegue acompanhar mongod. Os resultados da pesquisa ficam cada vez mais desatualizados. Se o atraso de replicação não for corrigido, o cursor sairá do oplog e forçará uma re-sincronização completa.

Use uma das seguintes expressões PromQL para alertar sobre esta condição:

max(mongot_index_stats_indexing_replicationLagMs) > 60000

Ou, para capturar uma tendência crescente antes que o limite absoluto seja atingido, use:

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

Essa métrica é por índice e em milissegundos. Não divida a métrica por 1000 no PromQL. O atraso em estado estacionário é inferior a um segundo. Um minuto de atraso é aceitável para cenários de recuperação. Um atraso que cresce constantemente é a condição de alarme.

A família de métricas mongot_index_stats_* só está presente uma vez que pelo menos um índice de pesquisa exista. Em uma nova implantação sem índices, este alerta não aparece porque a série ainda não existe. Este é o comportamento esperado.

Responda a este alerta executando as seguintes ações:

  • Verifique a taxa de gravação mongod para um aumento repentino.

  • Verifique a saturação da CPU e do I/O do disco do mongot.

Para obter orientações, consulte Referência de métricas para mongot.

mongot está encontrando erros durante a sincronização. Exceções repetidas forçam uma ressincronização. Os índices ficam temporariamente indisponíveis ou desatualizados durante a ressincronização.

Use uma das seguintes expressões PromQL para alertar sobre esta condição.

Para alertar com base em erros durante a sincronização, use:

increase(mongot_index_stats_indexing_steadyStateExceptions_total[10m]) > 0

Para capturar exceções de sincronização inicial, use:

increase(mongot_index_stats_indexing_initialSyncExceptions_total[10m]) > 0

Qualquer exceção de estado estacionário na produção é um problema. Ou o oplog foi transferido, o que significa que o oplog mongod é muito pequeno ou mongot é muito lento, ou ocorreu um erro a jusante.

Responda a este alerta executando as seguintes ações:

  • Capture mongot logs em torno da exceção.

  • Verifique o tamanho do oplog mongod.

  • Abra uma captura FTDC imediatamente. É mais difícil determinar a causa raiz após o fato.

O heap da JVM está perto do limite. Um OutOfMemoryError está prestes a ocorrer.

Use a seguinte expressão PromQL para alertar sobre esta condição:

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

Defina a duração para cinco minutos.

O uso sustentado de heap acima de 85% pode causar problemas. O próximo pico de alocação pode causar um erro de falta de memória. mongot usa a coleção de lixo Garbage-First (G1) por padrão. A expressão a seguir é uma versão pós-GC mais precisa da expressão PromQL acima:

mongot_jvm_gc_live_data_size_bytes
/ mongot_jvm_gc_max_data_size_bytes > 0.85

Responda a este alerta verificando as operações de indexação ativas e a carga de query. Se um índice grande estiver sendo criado, a condição poderá ser resolvida quando a criação for concluída. Caso contrário, aumente a configuração de heap -Xmx ou reduza o número de operações simultâneas.

mongot força três limites no uso do disco no volume dataPath. Esses limites são aplicados no próprio binário mongot. Os limites entram em vigor independentemente de você estar monitorando ou não. Defina alertas em todos os três limites para que o engenheiro de plantão veja a cascata e possa agir antes que o limite final seja ultrapassado.

Disco usado
O que mongot faz
Impacto visível para o cliente
Gravidade

85% (15% livre)

mongot desativa a sincronização inicial. Novas construções de índice permanecem em PENDING. Os índices existentes continuam operando.

Visível apenas se um novo índice for criado. A pesquisa existente e a pesquisa vetorial continuam normalmente.

ticket

90% (10% livre)

mongot desativa a replicação de estado estacionário. Os índices existentes param de receber eventos de alteração de mongod. Os resultados da pesquisa ficam cada vez mais desatualizados.

Os resultados da pesquisa estão desatualizados com mongod. Os usuários veem resultados desatualizados para dados gravados recentemente.

página

95% (5% livre)

mongot falhas. A recuperação exige a liberação do disco antes que mongot possa reiniciar de forma limpa.

Toda a pesquisa e a pesquisa vetorial ficam indisponíveis.

página

Este alerta tem três regras. A gravidade aumenta em cada limite.

Use as seguintes expressões PromQL para alertar sobre essas condições:

85% - Nível do ticket:

(1 - mongot_system_disk_space_data_path_free_bytes
/ mongot_system_disk_space_data_path_total_bytes) >= 0.85

90% — Nível da página:

(1 - mongot_system_disk_space_data_path_free_bytes
/ mongot_system_disk_space_data_path_total_bytes) >= 0.90

95% — Nível da página (interrupção):

(1 - mongot_system_disk_space_data_path_free_bytes
/ mongot_system_disk_space_data_path_total_bytes) >= 0.95

O ponto de extremidade mongot /metrics expõe _free_bytes e _total_bytes. Calcule a porcentagem usada como 1 - free/total.

Responda a este alerta executando as seguintes ações:

  • Em 85%: audite e descarte índices não utilizados por meio da API de gerenciamento de índice de pesquisa. Nunca exclua arquivos em dataPath manualmente. Novos índices não são criados até que o uso do disco caia abaixo de 85%.

  • Em 90%: Alerte sua equipe de operações ou SRE de que o cluster está no estado de replicação desabilitada. Descarte índices não utilizados ou expanda o armazenamento para restaurar a replicação.

  • Em 95%: Esta é uma interrupção. Libere espaço em disco e reinicie mongot. mongot se recusa a reiniciar de forma limpa até que o disco seja liberado.

Os seguintes alertas indicam degradação operacional e devem ser resolvidos em algumas horas.

Os usuários estão enfrentando pesquisas lentas.

Use uma das seguintes expressões PromQL para alertar sobre esta condição:

Cross-index:

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

Detalhes por índice:

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

O limite depende do seu objetivo de nível de serviço. Um ponto de partida comum é ter o percentil 99em 500 milissegundos para $search e um segundo para $vectorSearch. Essas séries são resumos com rótulos quantile pré-definidos, não histogramas.

Responda a este alerta investigando o seguinte:

  • Profundidade da fila do executor.

  • Tempo de pausa da coleta de lixo da JVM.

  • IOPS de armazenamento para identificar o gargalo.

Os trabalhadores estão saturados e as tarefas estão enfileiradas. A latência da query está prestes a aumentar.

Use a seguinte expressão PromQL para alertar sobre esta condição:

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

Defina a duração para cinco minutos.

Uma fila pequena e breve é normal sob picos de carga. Uma fila sustentada significa que a capacidade do trabalhador é insuficiente. Os pools de hotspot comuns são:

  • mongot_decoding_executor

  • mongot_change_stream_sync_dispatcher_executor

  • mongot_indexing_work_executor

  • mongot_indexing_lifecycle_executor

  • mongot_index_commit_executor

O trabalho de indexação é dividido em vários pools especializados. Não há mongot_indexing_executor combinado.

Responda a este alerta identificando qual pool está enfileirando:

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

Dimensionar ou aumentar o tamanho do pool. A rampa de profundidade da fila fornece aviso antecipado antes que a latência da query aumente.

O volume de armazenamento está se aproximando da saturação. A latência do Lucene está cada vez mais vinculada ao disco.

Use a seguinte expressão PromQL para alertar sobre esta condição:

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

Defina a duração para 15 minutos.

O limite de IOPS 1,000 é o sinalizador de recomendação da classe de armazenamento. No entanto, não é um limite estrito. O número certo depende do seu dispositivo. Identifique seu dispositivo dataPath com df ou inspecionando os valores de rótulo mongot_system_disk_*.

Responda a este alerta verificando se uma fusão ou sincronização inicial está em andamento. Se o alto nível de IOPS for mantido, a classe de armazenamento provavelmente estará subdimensionada. Revise sua configuração de armazenamento.

O sistema operacional está puxando repetidamente páginas de índice do disco porque elas foram removidas do cache. A memória é a restrição, não a capacidade de armazenamento.

Use a seguinte expressão PromQL para alertar sobre esta condição:

rate(mongot_system_process_majorPageFaults_operations[5m]) > 1000

1,000 falhas graves por segundo é o limite canônico para pressão de memória no caminho crítico. Juntamente com IOPS sustentados, este é o sinal de escassez de memória em relação ao conjunto de trabalho.

Responda a este alerta adicionando memória porque o Lucene mapeia arquivos de índice na memória.

Um índice específico encontrou uma falha de indexação não trivial.

Use uma das seguintes expressões PromQL para alertar sobre esta condição:

increase(mongot_lifecycle_failedInitializationIndexes_total[10m]) > 0

Ou:

increase(mongot_indexing_steadyStateChangeStream_unexpectedBatchFailures_total[10m]) > 0

Ou:

increase(mongot_index_stats_indexing_invalidGeometryField_total[10m]) > 0

Esses contadores não incrementam sob carga normal. Um aumento indica um problema de dados, como:

  • Uma explosão de mapeamento.

  • Um documento superdimensionado.

  • Um documento inválido.

Um aumento nesses contadores também pode indicar um problema de caminho de código.

Responda a este alerta executando as seguintes ações:

  • Inspecione os rótulos para o índice afetado e o motivo.

  • Verifique os logs mongot para a exceção subjacente.

O embedding automatizado está encontrando problemas. O processo de indexação trava para novos documentos nos índices afetados.

Use uma das seguintes expressões PromQL para alertar sobre esta condição:

increase(mongot_indexing_steadyStateChangeStream_rescheduledEmbeddingGetMores_total[10m]) > 0

Ou:

increase(mongot_initialsync_queue_requeuedEmbeddingInitialSyncs_total[10m]) > 0

O reagendamento ou a requeueing sustentados indicam que o caminho de embedding não está drenando de forma limpa. As causas mais comuns são:

  • An invalid API key.

  • Um ponto de extremidade de rede inacessível.

  • Limitação de taxa do Voyage AI.

Responda a este alerta executando as seguintes ações:

  • Verifique os logs mongot para o erro HTTP em relação ao ponto de extremidade de embedding.

  • Verifique a validade e a conectividade da chave da API.

  • Verifique o status do Voyage AI.

Um ou mais índices fizeram a transição do estado STEADY para um estado de recuperação, obsoleto ou com falha.

Use a seguinte expressão PromQL para alertar sobre esta condição:

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

Um único índice em RECOVERING_TRANSIENT por alguns segundos durante a implantação é normal. Uma contagem sustentada maior que zero em qualquer um dos seguintes estados indica um problema:

  • FAILED.

  • RECOVERING_NON_TRANSIENT.

  • STALE.

Responda a este alerta identificando o indexId_logString afetado e verificando as linhas de log mongot correspondentes.

O pipeline de captura de diagnóstico está falhando. mongot está saudável, mas você perdeu a observabilidade desse nó.

Observação

Essa métrica está protegida pelo sinalizador de recurso ftdcExecutorMetricsToPrometheus. Confirme se sua implantação expõe essa métrica antes de adicionar este alerta. A métrica está ausente das raspagens padrão mongodb/mongodb-community-search. Por padrão, esse sinalizador está desativado para implantações autogerenciadas.

Use a seguinte expressão PromQL para alertar sobre esta condição:

mongot_mongot_ftdc_executor_failure_total > 0

Defina a duração para cinco minutos.

Se sua implantação expuser essa métrica, trate-a como um sinal sério de que a observabilidade downstream está degradada.

Responda a este alerta reiniciando mongot.

As métricas a seguir são úteis em dashboards para análise de tendências. Nenhuma dessas métricas requer paginação.

Essa métrica mostra a utilização do heap após a coleta de lixo ao longo do tempo.

Use a seguinte expressão PromQL para alertar sobre esta condição:

sum(mongot_jvm_gc_live_data_size_bytes) / sum(mongot_jvm_gc_max_data_size_bytes)

Responda a este alerta investigando se a métrica aumenta ao longo das semanas.

Essa métrica mostra a pior pausa recente em todos os coletores.

Use a seguinte expressão PromQL para alertar sobre esta condição:

max(mongot_jvm_gc_pause_seconds_max)

Responda a este alerta investigando se esta métrica é mantida por mais de 100 ms.

A métrica mostra a margem de manobra em relação ao limite flexível para descritores de arquivo abertos.

Use a seguinte expressão PromQL para alertar sobre esta condição:

mongot_process_*

Responda a este alerta investigando se esta métrica está acima de 80%.

Essa métrica mostra o número de clientes que mantêm cursores após o tempo limite.

Use a seguinte expressão PromQL para alertar sobre esta condição:

rate(mongot_cursorManager_trackedCursors[5m])

Não há necessidade de definir um limite de alerta para essa métrica. Puramente informativo.

Essa métrica mostra o número de threads aguardando uma conexão.

Use a seguinte expressão PromQL para alertar sobre esta condição:

mongot_mongoClient_connectionPool_connectionsCheckedOut approaching _maxSize

Responda a este alerta investigando se a métrica é sustentada e maior que zero.

Essa métrica mostra a capacidade de armazenamento.

Use a seguinte expressão PromQL para alertar sobre esta condição:

mongot_system_disk_space_data_path_free_bytes / mongot_system_disk_space_data_path_total_bytes

Se essa métrica cair abaixo de 30% livre, considere ter uma conversa de planejamento para aumentar o armazenamento.