
O Couchbase Server cria vários arquivos de log diferentes, dependendo dos componentes do sistema que produzem o erro e do nível e do problema que está sendo relatado. Esses arquivos de log individuais podem ajudá-lo a identificar a causa raiz do problema muito mais rapidamente. Neste blog, falaremos sobre os logs do Couchbase Server e como você pode usar esses logs para obter mais informações sobre o cluster do Couchbase. Com base na sua plataforma (Linux, Windows ou Mac OSX), o local dos arquivos de log pode variar.
O Couchbase Server tem diferentes arquivos de log para diferentes componentes do banco de dados. Para cada nó, cada local de arquivo de log contém uma lista de diferentes arquivos de log.
Os arquivos de registro individuais são numerados automaticamente, com um sufixo numérico para cada novo registro. Há um máximo de 20 arquivos de registro por registro e cada arquivo de registro tem um tamanho máximo de 10 MB por padrão. Quando o número máximo de arquivos de registro é atingido, o arquivo de registro mais antigo é substituído pelo conteúdo do novo arquivo.
Agora, vamos dar uma olhada em dois exemplos de cenários em que os registros do Couchbase Server podem ser úteis
1. Quando sua função de redução de mapa javascript não emite nenhum resultado
Ao trabalhar com exibições, se você definir uma exibição com um campo que não está definido, não verá nenhum resultado. Isso pode acontecer principalmente quando você emite um atributo, mas o pai não existe. Por exemplo: emit(doc.foo.bar, null) quando seus documentos não incluírem o atributo "foo". Aqui está um exemplo mais simples.
emit(doc1.foo, null);
}
Na figura 1 abaixo, o campo javascript "doc1" não existe. A exibição pode ser salva, mas você não encontrará nenhum resultado.
Figura 1: Exemplo de função de mapa em javascript com objeto indefinido doc1
Mas, para diagnosticar o problema, você pode examinar o mapreduce_errors.1 arquivo de registro. Você perceberá que o erro de referência é registrado.
Figura 2: Erro de referência indefinida mostrado no arquivo mapreduce_errors
Atualmente, se um documento for ignorado devido a um erro de tempo de execução, como visto acima, ao criar uma visualização, ele será ignorado de todas as visualizações nesse documento de design. Esse é outro cenário em que você pode querer dar uma olhada de perto no arquivo de registro.
Em geral, uma prática recomendada que você deve seguir ao escrever exibições é testar se o campo pai que está sendo desreferenciado existe. Em nosso exemplo, podemos reescrever a função map conforme abaixo:
função (doc, meta) {
se(doc.foo)
{
emit(doc1.foo, null);
}
}
2. Erros de XDCR quando o bucket de destino é excluído repentinamente
A replicação entre centros de dados no Couchbase Server 2.0 oferece suporte à replicação ativa-ativa unidirecional e bidirecional entre dois clusters do Couchbase Server. Vamos supor que a replicação unidirecional entre datacenters esteja configurada a partir do amostra de cerveja no cluster de origem para o bucket testBucket no cluster de destino.
Se o testBucket Se o bucket no cluster de destino for excluído repentinamente quando o XDCR estiver em andamento, o XDCR não poderá continuar e um erro será registrado no arquivo de log xdcr_error no nó do cluster de origem, conforme mostrado na Figura 4 abaixo. O console de administração do servidor couchbase (mostrado na Figura 5) também mostra os últimos 10 erros relacionados ao XDCR.
Figura 3: Bucket não encontrado no arquivo xdcr_error
Figura 4: Últimos 10 erros mostrados na interface do console de administração do Couchbase
Encontrou um erro?
Por ser um produto de código aberto, gostaríamos de receber seu feedback enquanto você brinca com o Couchbase Server. Se encontrar um comportamento inesperado, registre um bug.
Felizmente, temos ferramentas que compactam todos os logs necessários que nossa equipe de desenvolvimento precisa investigar. Você encontrará o cbcollect_info em /opt/couchbase/bin no Linux e em /Applications/Couchbase
Server.app/Contents/Resources/couchbase-core/bin no MacOS. Essa ferramenta coleta todos os logs de um determinado nó do servidor Couchbase e os compacta em um arquivo.
Não se esqueça de anexar isso ao seu relatório de bug.
Feliz hacking!
-
O exemplo correto na primeira seção deve ser
function (doc, meta) {
se(doc.foo)
{
emit(doc.foo.bar, null);
}
}
O link do local de registro foi alterado para https://docs.couchbase.com/couc...
[...] O Couchbase é um banco de dados distribuído, de alto desempenho, de cache e NoSQL em uma única arquitetura de cluster. Apesar do nome semelhante e da herança compartilhada, o Couchbase é um produto muito diferente do CouchDB ou de qualquer outra oferta NoSQL. É fundamental poder monitorar e traçar o perfil do desempenho do Couchbase juntamente com as métricas do aplicativo. Com o tempo, o monitoramento é o elemento para uma implantação bem-sucedida de qualquer sistema de missão crítica. Isso é verdade em geral e ainda mais importante em ambientes de computação distribuída em particular. É a única maneira de garantir o sucesso a longo prazo. Para esta discussão, queremos nos concentrar no monitoramento, mas é importante observar que fornecemos um registro detalhado do Couchbase para facilitar a solução de problemas do aplicativo. Esses registros são armazenados em '/opt/couchbase/var/lib/couchbase/logs'. Para obter mais informações sobre esses registros, consulte o registrador de voos do Couchbase (https://www.couchbase.com/couchbase-server-recorder). […]