Corrigir falha do serviço Python do mecanismo de busca Kopano
Comece pelo log de falhas, não pelo índice de busca. Em um servidor Kopano Core clássico, o mecanismo de busca é o kopano-searchserviço. O pacote de código-fonte do Debian descreve essa geração como um indexador baseado em processos, construído sobre o python-kopano. Ele se conecta ao servidor kopano-server, mantém índices de busca por loja e pode, opcionalmente, chamar ferramentas de análise de anexos. Consulte o pacote de código-fonte do Kopano Search . Um módulo Python ausente, uma incompatibilidade de socket do servidor, um problema de permissões ou espaço em disco, ou uma falha no analisador de anexos podem causar sintomas diferentes. Reiniciar ou excluir todo o índice antes de identificar a falha pode ocultar evidências úteis e gerar mais trabalho.
Este guia abrange instalações que executam o daemon clássico kopano-search, incluindo versões mais antigas do Kopano Core. A documentação do Kopano atualmente disponível para este serviço está versionada para o Kopano Core 8.0, enquanto as páginas de manual arquivadas do Ubuntu abrangem versões mais antigas do pacote, como a 8.7. Confirme a versão do Kopano instalada e o respectivo manual local antes de aplicar comandos específicos da versão. Implantações do Kopano Cloud ou em contêineres podem usar nomes de serviço e procedimentos de gerenciamento diferentes.
O que você deve verificar antes de alterar qualquer coisa?
Você precisa de acesso ao shell com permissão para ler os logs e a configuração do Kopano. Antes de editar a configuração ou modificar os arquivos de índice, anote a versão do pacote e faça um backup da configuração relevante. Não copie o caminho do índice de outro servidor: os caminhos padrão e configurados diferem entre as versões do pacote. O manual do administrador do Kopano descreve /etc/kopano/search.cfgos arquivos de índice por loja, o socket de serviço e a análise de anexos; ele também alerta contra a alteração dos arquivos de índice enquanto o serviço estiver em execução. A seção de configuração de Busca do Kopano é a principal referência para essas configurações.
1. Confirme se o kopano-search está realmente travando.
Em um sistema que utiliza systemd, inspecione a unidade e as entradas de log recentes:
Procure por tentativas repetidas de inicialização, um código de saída, um traceback do Python ou uma exceção final específica. A última linha de um traceback costuma ser mais útil do que a primeira, pois indica o erro que interrompeu o processo. Se sua instalação usa os scripts de inicialização SysV mais antigos, verifique sudo service kopano-search statuse inspecione o arquivo de log configurado ou o log do sistema. O serviço pode registrar em um arquivo ou no syslog, dependendo da configuração search.cfg, portanto, um registro vazio não prova que nenhum erro ocorreu.
Verifique primeiro o estado do serviço de pesquisa Kopano. O estado de falha neste exemplo é ilustrativo; compare-o com a saída do seu servidor.
Salve as linhas de log relevantes antes de reiniciar. Se o serviço for encerrado e o systemd o iniciar novamente, você precisará saber se todas as tentativas falham na mesma etapa ou se um evento específico causou a falha.
2. Verifique se o serviço de busca consegue alcançar o servidor Kopano.
O daemon de busca deve se conectar ao socket correto do servidor Kopano. Verifique ambos os serviços e compare os valores de socket configurados:
O conjunto exato de chaves presentes pode variar de acordo com a versão. Na configuração clássica do Core, search_enabled = yesa busca de texto completo é habilitada em `/etc /search.conf` server.cfg; search_socketindica ao servidor onde contatar o serviço de busca. A server_socketconfiguração do serviço de busca aponta de volta para o Kopano Server. Uma incompatibilidade, um socket ausente ou um servidor parado podem gerar erros de conexão que se assemelham a uma falha na busca. O servidor pode recorrer à busca direta no banco de dados enquanto o socket de busca estiver indisponível, mas a indexação de texto completo não é restaurada até que o serviço de busca esteja funcionando corretamente.
Use o registro de serviço para identificar a categoria da falha. O comando e o lembrete são mostrados para orientação; a saída depende da sua configuração de registro.
3. Combine os pacotes Python com a compilação do Kopano.
kopano-searchUtiliza as bibliotecas Python do Kopano e componentes MAPI nativos. Um ImportErrorerro de biblioteca compartilhada ausente ou de carregamento de módulo pode ocorrer após uma atualização parcial, uma alteração no repositório ou a instalação manual de um pacote Python. Registre os pacotes instalados e o interpretador usado pelo executável empacotado:
O segundo comando só é útil se kopano-searchestiver presente no PATH do shell atual. Compare esses detalhes com o repositório e as instruções de instalação do pacote Kopano que você utiliza. Se o servidor for gerenciado por RPM, contêineres ou um dispositivo do fornecedor, use as ferramentas de gerenciamento de pacotes dessa plataforma em vez dos comandos Debian acima.
Não tente reparar um servidor Kopano instalado executando sudo pip installo Python do sistema. O Python-MAPI inclui componentes nativos e misturá-los com pacotes Python não relacionados pode fazer com que o interpretador encontre módulos incompatíveis. Restaure ou reinstale os pacotes Kopano correspondentes a partir do mesmo repositório confiável, reinicie o serviço e verifique o log novamente. Se a máquina foi atualizada para versões diferentes do sistema operacional, verifique se o repositório Kopano é compatível com essa combinação de SO/Python antes de tentar reinstalar um pacote.
4. Verifique as permissões, o espaço livre e a análise dos anexos.
Leia as configurações de index_path, log_file, tmp_path, e attachment-parser em /etc/kopano/search.cfg. Confirme se o sistema de arquivos possui espaço livre e se a conta de serviço tem permissão de escrita nos locais esperados pela configuração. Por exemplo:
Substitua o diretório de índice de exemplo pelo valor da sua própria configuração. Erros como "permissão negada", "espaço insuficiente" ou falha na criação de um arquivo temporário indicam problemas de acesso ao armazenamento, e não uma falha geral do Python. Restaure o proprietário e as permissões pretendidas usando as configurações padrão do pacote do seu servidor; não altere a propriedade recursivamente em todos os diretórios /var/lib/kopanosem verificar quais outros serviços os utilizam.
Se o rastreamento da pilha de chamadas ou o tempo de execução indicarem a extração de anexos, verifique se index_attachments = yeso index_attachment_parserbanco de dados do analisador sintático e os utilitários externos que ele utiliza estão presentes. O manual do Kopano explica que o conteúdo dos anexos é convertido em texto por um script configurado e que os limites de tamanho, memória e CPU dos anexos podem ser definidos. Como diagnóstico, você pode definir temporariamente o limite de tamanho, memória e CPU index_attachments = no, reiniciar o serviço e verificar se a falha para. Isso desativa a busca dentro do conteúdo dos anexos; não desativa a indexação do corpo da mensagem. Se a falha desaparecer, repare o analisador sintático ou a dependência específica antes de reativar a indexação de anexos.
O exemplo de configuração mostra o caminho do índice e a configuração de anexos. Consulte o manual instalado e o arquivo atual antes de alterar qualquer um dos valores.
5. Reconstrua apenas o índice de armazenamento afetado quando os registros indicarem danos no índice.
A reindexação é apropriada quando o serviço inicia corretamente, mas falha repetidamente ao abrir ou atualizar o índice de um dos armazenamentos, ou quando os logs do Kopano identificam esse índice específico como corrompido. Não é a primeira solução para um erro de importação do Python, uma incompatibilidade de socket ou um disco cheio.
O manual do administrador do Kopano recomenda que se pare kopano-searchantes de excluir o arquivo de índice de um repositório individual. Ele também descreve um arquivo de estado no diretório de índices, portanto, não remova o diretório inteiro ou todos os índices de usuários como um reparo de rotina. Primeiro, faça backup do arquivo de índice relevante e confirme a identidade e o caminho do usuário ou repositório. Se a sua versão local man kopano-searchdocumentar a --reindexopção, prefira a sintaxe suportada pelo pacote para reconstruir um repositório; o formato da opção difere entre as versões arquivadas. O manual do Ubuntu Focal, por exemplo, documenta uma opção de reindexação direcionada e observa que o daemon já deve estar em execução.
Uma reconstrução completa pode consumir muito espaço em disco e CPU, e os resultados da pesquisa podem ficar incompletos enquanto a indexação é concluída. Se você não tiver certeza de qual arquivo de armazenamento foi afetado, interrompa o processo antes de excluir qualquer coisa e colete o log de serviço, as versões dos pacotes e as configurações index_pathpara um administrador da Kopano ou para o suporte.
A sintaxe de reindexação depende da versão do Kopano instalada. Use o manual local e selecione uma loja confirmada em vez de excluir todo o diretório de índice.
6. Reinicie e verifique o resultado.
Após corrigir a causa, reinicie apenas o serviço de pesquisa:
Para uma instalação SysV, use o comando de serviço documentado pelo pacote. Confirme se o processo permanece ativo, se o mesmo rastreamento de pilha não se repete mais e se o socket de pesquisa aparece após a indexação inicial. Kopano observa que o socket pode não ser criado até que o índice inicial seja construído. Teste uma pesquisa de e-mail normal e, se a indexação de anexos estiver habilitada, teste um anexo conhecido somente após o analisador sintático ter sido reparado.
Guia de diagnóstico rápido
Sintoma registrado
Primeiro verifique
Python ImportErrorou módulo ausente
Versões de pacotes e vinculações Python; desfazer mistura de fontes de pacotes
Conexão recusada ou tomada ausente
kopano-serverstatus e configuração de soquete correspondente
Erro de permissão ou de disco
Caminhos configurados para logs, arquivos temporários e índices; espaço livre e acesso do usuário de serviço.
O travamento ocorre em um dos anexos.
Comando do analisador de anexos, dependências do analisador e limites de tamanho.
Falha repetida ao abrir um índice de loja
Faça backup e reindexe apenas o armazenamento confirmado usando a sintaxe de versão local.
A solução mais confiável segue o erro no log: repare o ambiente do pacote para falhas de importação do Python, restaure o socket correto para falhas de conexão, corrija o caminho ou analisador sintático específico para erros de acesso e extração e reindexe somente quando as evidências apontarem para dados de índice corrompidos. Os manuais disponíveis do Kopano abrangem versões Core mais antigas, portanto, use-os juntamente com o manual do próprio pacote, em vez de presumir que todas as instalações atuais usam o mesmo gerenciador de serviços ou sintaxe de opções.