mongodb registrando todo o documento ocasionalmente, mesmo com a verbosidade mais baixa

1

Estamos usando o mongodb versão 3 em um ambiente da AWS com AMIs do Linux.

Inicialmente o mongo estava registrando todo o documento. Nós então baixou a verbosidade no yaml. Isso pareceu fazer com que a maioria (99%) dos documentos não fosse registrada. No entanto, ainda achamos que ocasionalmente ainda registra o registro. Parece fazer um WRITE e, em seguida, um comando e ambos contêm o registro inteiro.

Existe alguma maneira de garantir que o documento nunca seja gravado no log enquanto ainda possui registros úteis?

Obrigado

systemLog:
  quiet: true
  destination: file
  path: /var/log/mongodb.log
  logAppend: true
  logRotate: rename
  traceAllExceptions: false
  timeStampFormat: iso8601-utc
  verbosity: 1 # This will be inherited by any component with verbosity -1
  component:
    accessControl:
      verbosity: -1 # NOTE: Negative one (-1) means "inherit"
    command:
      verbosity: 0 # MUST BE ZERO!!! Otherwise, inserted/updated records (all the data) will get logged.
    control:
      verbosity: -1
    geo:
      verbosity: 0
    index:
      verbosity: -1
    network:
      verbosity: -1
    query:
      verbosity: -1
    replication:
      verbosity: -1
    sharding:
      verbosity: 0
    storage:
      verbosity: -1
    write:
      verbosity: 0 # MUST BE ZERO!!! Otherwise, inserted/updated records (all the data) will get logged.

Versão e Logs são assim. Por favor, note que eu digitei os dados em qualquer json inválido ou erros de digitação são devidos a mim não mongo.

Versão 3.0.6

TIMESTAMP I WRITE [conn0001] insert project.collection query {<insert our json document here>}
ninserted:1 
keyUpdates:0
writeConflicts:0
numYields:0
locks:{Global: {acquireCount: {r: 2, w: 2}}, MMAPV1Journal: {acquireCount: {w:2},aquireWaitCount: {w:2}, 
timeAquiringMicros: {w: 119326}}, Database: {acquireCount:w: 2}}, Collection" {acquireCount: {W:1}}, oplog: {acquireCount: {w: 1}}} 119ms



TIMESTAMP I COMMAND [conn0001] insert project.$cmd command:  insert {<insert our json document here>}
ninserted:1 
keyUpdates:0
writeConflicts:0
numYields:0
reslen: 80
locks:{Global: {acquireCount: {r: 2, w: 2}}, MMAPV1Journal: {acquireCount: {w:2},aquireWaitCount: {w:2}, 
timeAquiringMicros: {w: 119326}
timeAquiringMicros: {w: 119326}}, Database: {acquireCount:w: 2}}, Collection" {acquireCount: {W:1}}, oplog: {acquireCount: {w: 1}}} 119ms
    
por user5524xx 07.06.2016 / 20:51

1 resposta

0

Suas consultas inseridas estão sendo registradas porque são consideradas lentas. Elas demoram mais do que o padrão operationProfiling.slowOpThresholdMs valor de 100 ms. Como no MongoDB 3.2, não há nenhuma configuração para quais detalhes devem ser registrados com consultas lentas, pois esse contexto é útil para entender por que a consulta é lenta.

Você pode evitar o registro de inserções / comandos lentos aumentando o slowOpThresholdMs no arquivo de configuração mongod . Por exemplo, definir um slowOpThresholdMs de 250 ms mais alto pode ser suficiente para garantir que a maioria das inserções não seja registrada (embora ainda sejam realmente verdadeiras as que estão lentas):

operationProfiling:
    slowOpThresholdMs: 250

Se você quiser garantir que as operações lentas nunca sejam registradas, você pode definir um valor muito mais alto, mas isso pode suprimir detalhes que seriam relevantes para o desempenho de sua implantação.

Is there anyway to ensure the document never gets written to the log while still having useful logging?

Geralmente, o log útil para solução de problemas inclui detalhes de consultas lentas, bem como informações de conexão / replicação / autenticação (que você suprimiu com quiet:true ).

Sem registrar esses detalhes, você pode ter dificuldade em ajustar e dar suporte a um ambiente de produção.

Se a sua preocupação for sobre o acesso a informações privadas em mongod arquivos de log, assegure-se de limitar adequadamente o acesso a arquivos de log via O / S e permissões do sistema de arquivos e criptografar seus backups ou excluir arquivos de log confidenciais. O acesso para ver mongod logs do servidor requer mais permissão do que apenas efetuar login via mongo shell, e qualquer pessoa com permissão para visualizar os logs do servidor presumivelmente também pode ter acesso para copiar os arquivos de dados.

Como sua implantação é na AWS, você pode considerar a Criptografia do Amazon EBS que criptografará dados em repouso dentro do volume, movimentação de dados entre o volume e a instância e todos os instantâneos criados a partir do volume.

Outra opção a considerar seria criptografar campos sensíveis em seu aplicativo para que eles nunca sejam transmitidos, registrados ou salvos em texto não criptografado.

Para obter mais informações sobre como proteger sua implantação, consulte a Lista de verificação de segurança do MongoDB .

    
por 08.06.2016 / 02:50