Risolvi il problema di arresto anomalo del servizio Python del motore di ricerca Kopano.

Iniziate dal log degli arresti anomali, non dall'indice di ricerca. Su un server Kopano Core classico, il motore di ricerca è il kopano-searchservizio. Il pacchetto sorgente Debian descrive questa generazione come un indicizzatore basato su processi, costruito su python-kopano. Si connette a kopano-server, gestisce indici di ricerca per ogni negozio e può facoltativamente richiamare strumenti di analisi degli allegati. Consultate il pacchetto sorgente di Kopano Search . Un modulo Python mancante, una mancata corrispondenza del socket del server, un problema di permessi o di spazio su disco, o un parser degli allegati non funzionante possono causare sintomi diversi. Riavviare o eliminare l'intero indice prima di identificare l'errore può nascondere prove utili e creare ulteriore lavoro.

Questa guida illustra le installazioni che utilizzano il demone classico kopano-search, inclusi i pacchetti Kopano Core meno recenti. La documentazione Kopano attualmente disponibile per questo servizio è basata sulla versione 8.0 di Kopano Core, mentre le pagine man archiviate di Ubuntu riguardano versioni precedenti del pacchetto, come la 8.7. Prima di applicare comandi specifici per la versione, verificare la versione di Kopano installata e il relativo manuale locale. Le implementazioni di Kopano Cloud o in container potrebbero utilizzare nomi di servizio e procedure di gestione diversi.

Cosa dovresti controllare prima di apportare qualsiasi modifica?

È necessario l'accesso alla shell con i permessi di lettura dei log e della configurazione di Kopano. Prima di modificare la configurazione o i file di indice, annotare la versione del pacchetto ed eseguire un backup della configurazione pertinente. Non copiare il percorso dell'indice da un altro server: i percorsi predefiniti e configurati differiscono a seconda della versione del pacchetto. Il manuale di amministrazione di Kopano descrive /etc/kopano/search.cfgi file di indice per ogni negozio, il socket di servizio e l'analisi degli allegati; avverte inoltre di non modificare i file di indice mentre il servizio è in esecuzione. La sezione relativa alla configurazione della ricerca di Kopano è il riferimento principale per queste impostazioni.

1. Conferma che kopano-search si blocca effettivamente

Su un sistema che utilizza systemd, ispeziona l'unità e le voci di registro recenti:

sudo systemctl status kopano-search --no-pager
sudo journalctl -u kopano-search -b -n 100 --no-pager

Cerca tentativi di avvio ripetuti, un codice di uscita, una traccia dello stack Python o un'eccezione finale specifica. L'ultima riga di una traccia dello stack è spesso più utile della prima perché indica l'errore che ha interrotto il processo. Se la tua installazione utilizza gli script di inizializzazione SysV meno recenti, controlla sudo service kopano-search statuse ispeziona il file di log configurato o il log di sistema. Il servizio potrebbe scrivere i log su un file o su syslog a seconda di search.cfg, quindi un journal vuoto non dimostra che non si è verificato alcun errore.

Terminale che mostra lo stato di systemctl kopano-search con un esempio illustrativo di stato di errore del servizio
Innanzitutto, verifica lo stato del servizio Kopano Search. Lo stato di errore in questo esempio è puramente illustrativo; confrontalo con l'output del tuo server.

Salva le righe di log pertinenti prima di riavviare. Se il servizio si arresta e systemd lo riavvia, è importante sapere se ogni tentativo fallisce nella stessa fase o se un evento specifico ha causato l'arresto anomalo.

2. Verificare se il servizio di ricerca riesce a raggiungere il server Kopano.

Il demone di ricerca deve connettersi al socket corretto del server Kopano. Verifica entrambi i servizi e confronta i valori dei socket configurati:

sudo systemctl status kopano-server --no-pager
sudo grep -E '^(server_socket|search_socket|search_enabled)[[:space:]]*='   /etc/kopano/server.cfg /etc/kopano/search.cfg

L'insieme esatto di chiavi presenti può variare a seconda della versione. Nella configurazione Core classica, search_enabled = yesabilita la ricerca full-text in server.cfg; search_socketindica al server dove contattare il servizio di ricerca. L' server_socketimpostazione del servizio di ricerca punta al Kopano Server. Un'incongruenza, un socket mancante o un server arrestato possono produrre errori di connessione che sembrano un arresto anomalo della ricerca. Il server può ripiegare sulla ricerca diretta nel database mentre il socket di ricerca non è disponibile, ma l'indicizzazione full-text non viene ripristinata finché il servizio di ricerca non è funzionante.

Comando da terminale per visualizzare le voci recenti del registro di ricerca kopano con un promemoria per esaminare la riga finale del traceback
Utilizza il registro di servizio per identificare la categoria di errore. Il comando e il promemoria sono mostrati a scopo illustrativo; l'output dipende dalla configurazione di registrazione.

3. Abbina i pacchetti Python alla build di Kopano

kopano-searchUtilizza i binding Python di Kopano e i componenti MAPI nativi. Un ImportErrorerrore di libreria condivisa mancante o di caricamento del modulo può verificarsi dopo un aggiornamento parziale, una modifica del repository o l'installazione manuale di un pacchetto Python. Annotare i pacchetti installati e l'interprete utilizzato dall'eseguibile impacchettato:

dpkg-query -W 'kopano-search' 'python*kopano*' 'python*mapi*' 2>/dev/null
p=$(command -v kopano-search) && head -n 1 "$p"

Il secondo comando è utile solo se kopano-searchsi trova nel percorso della shell corrente. Confronta questi dettagli con il repository e le istruzioni di installazione per il set di pacchetti Kopano che utilizzi effettivamente. Se il server è gestito tramite RPM, container o un'appliance di un fornitore, utilizza gli strumenti di gestione dei pacchetti di quella piattaforma anziché i comandi Debian sopra indicati.

Non tentare di riparare un server Kopano preconfigurato eseguendo sudo pip installil codice Python di sistema. Python-MAPI include componenti nativi e la loro combinazione con pacchetti Python non correlati può causare l'individuazione di moduli incompatibili da parte dell'interprete. Ripristinare o reinstallare i pacchetti Kopano corrispondenti dallo stesso repository attendibile, quindi riavviare il servizio e ricontrollare il log. Se la macchina è stata aggiornata con versioni di sistema operativo diverse, verificare che il repository Kopano supporti tale combinazione di sistema operativo e Python prima di tentare la reinstallazione di un pacchetto.

4. Verifica le autorizzazioni, lo spazio libero e l'analisi degli allegati.

Leggere le impostazioni configurate di index_path, log_file, tmp_path, e attachment-parser in /etc/kopano/search.cfg. Verificare che il filesystem disponga di spazio libero e che l'account di servizio possa scrivere nella posizione prevista dalla configurazione. Ad esempio:

df -h /var/lib/kopano /var/log
sudo namei -l /var/lib/kopano/search

Sostituisci la directory di indice di esempio con il valore nella tua configurazione. Errori come "permesso negato", "spazio insufficiente" o un errore nella creazione di un file temporaneo indicano un problema di accesso alla memoria piuttosto che un arresto anomalo generale di Python. Ripristina il proprietario e i permessi previsti utilizzando le impostazioni predefinite del pacchetto documentate sul tuo server; non modificare ricorsivamente la proprietà di tutte le directory /var/lib/kopanosenza prima verificare quali altri servizi le utilizzano.

Se il traceback o i tempi di esecuzione implicano l'estrazione degli allegati, verificare se index_attachments = yese ispezionare index_attachment_parseril database del parser e le utilità esterne che chiama. Il manuale di Kopano spiega che il contenuto degli allegati viene convertito in testo da uno script configurato e che è possibile impostare limiti per le dimensioni degli allegati, la memoria e la CPU. Come strumento diagnostico, è possibile impostare temporaneamente index_attachments = no, riavviare il servizio e verificare se l'arresto anomalo si interrompe. Questo disabilita la ricerca all'interno del contenuto degli allegati; non disabilita l'indicizzazione del corpo del messaggio. Se l'errore scompare, riparare il parser o la dipendenza specifica prima di riabilitare l'indicizzazione degli allegati.

Nano editor che mostra il percorso di configurazione della ricerca Kopano e l'indicizzazione degli allegati disabilitata
L'esempio di configurazione mostra il percorso dell'indice e l'impostazione degli allegati. Prima di modificare uno qualsiasi dei valori, verifica il manuale installato e il file corrente.

5. Ricostruire solo l'indice del negozio interessato quando i log indicano un danneggiamento dell'indice.

La reindicizzazione è appropriata quando il servizio si avvia correttamente ma fallisce ripetutamente durante l'apertura o l'aggiornamento dell'indice di un negozio, oppure quando i log di Kopano identificano quello specifico indice come danneggiato. Non è la prima soluzione da adottare in caso di errore di importazione di Python, mancata corrispondenza del socket o disco pieno.

Il manuale di amministrazione di Kopano raccomanda di fermarsi kopano-searchprima di eliminare il file di indice di un singolo store. Descrive inoltre un file di stato nella directory dell'indice, quindi non rimuovere l'intera directory o tutti gli indici utente come una normale operazione di riparazione. Prima di tutto, esegui un backup del file di indice pertinente e verifica l'identità e il percorso dell'utente o dello store. Se la tua versione locale man kopano-searchdocumenta l' --reindexopzione, preferisci la sintassi supportata dal pacchetto per ricostruire un singolo store; il formato dell'opzione varia a seconda della versione archiviata. Il manuale di Ubuntu Focal, ad esempio, documenta un'opzione di reindicizzazione mirata e specifica che il demone deve essere già in esecuzione.

Una ricostruzione completa può consumare spazio su disco e CPU, e i risultati della ricerca potrebbero essere incompleti mentre l'indicizzazione viene completata. Se non si è certi di quale file di archivio sia interessato, interrompere l'operazione prima di eliminare qualsiasi elemento e raccogliere il registro del servizio, le versioni dei pacchetti e la configurazione index_pathper un amministratore Kopano o un canale di supporto.

Prompt del terminale che mostra l'opzione di reindicizzazione kopano-search e consiglia agli amministratori di controllare il manuale installato
La sintassi per la reindicizzazione dipende dalla versione di Kopano installata. Utilizzare il manuale locale e selezionare un singolo negozio confermato anziché eliminare l'intera directory dell'indice.

6. Riavviare e verificare il risultato

Una volta corretta la causa, riavvia solo il servizio di ricerca:

sudo systemctl restart kopano-search
sudo systemctl status kopano-search --no-pager
sudo journalctl -u kopano-search -b -n 50 --no-pager

Per un'installazione SysV, utilizzare il comando di servizio documentato dal relativo pacchetto. Verificare che il processo rimanga attivo, che lo stesso traceback non si ripeta più e che il socket di ricerca venga visualizzato dopo l'indicizzazione iniziale. Kopano fa notare che il socket potrebbe non essere creato finché non è stato generato l'indice iniziale. Eseguire una normale ricerca di posta elettronica e, se l'indicizzazione degli allegati è abilitata, testare un allegato noto solo dopo aver riparato il parser.

Guida rapida alla diagnosi

Sintomo di registrazionePrima verifica
Modulo Python ImportErrormancanteVersioni del pacchetto e del binding Python; annulla le origini miste del pacchetto
Connessione rifiutata o socket mancantekopano-serverstato e configurazione socket corrispondente
Permesso o errore del discoPercorsi configurati per log, file temporanei e indici; spazio libero e accesso per gli utenti del servizio.
Si verifica un arresto anomalo su un allegatoComando di analisi degli allegati, dipendenze del parser e limiti di dimensione
Ripetuti tentativi falliti di apertura dell'indice del negozioEseguire il backup e la reindicizzazione solo dello store confermato utilizzando la sintassi della versione locale.

La soluzione più affidabile segue l'errore nel log: riparare l'ambiente del pacchetto per gli errori di importazione di Python, ripristinare il socket corretto per gli errori di connessione, correggere il percorso o il parser specifico per gli errori di accesso ed estrazione e reindicizzare solo quando le prove indicano dati di indice danneggiati. I manuali di Kopano disponibili coprono le versioni precedenti di Core, quindi utilizzarli insieme al manuale del pacchetto anziché presumere che ogni implementazione corrente utilizzi lo stesso gestore di servizi o la stessa sintassi delle opzioni.

Lascia un commento

Confronto tra strumenti di monitoraggio open-source e closed-source.

Confronto tra strumenti di monitoraggio open-source e closed-source.

Confronta strumenti di monitoraggio open source e proprietari in base a costi, supporto, personalizzazione, sicurezza e opzioni disponibili, tra cui Zabbix, Nagios, PRTG e altri.

I migliori server TFTP per Windows, Linux e macOS

I migliori server TFTP per Windows, Linux e macOS

Confronta i migliori server TFTP per Windows, Linux e macOS, tra cui SolarWinds, Tftpd64, tftpd-hpa, atftpd, haneWIN e dnsmasq.

5 migliori alternative a Microsoft Access per database desktop e web

5 migliori alternative a Microsoft Access per database desktop e web

Confronta cinque alternative a Microsoft Access per la gestione di database su desktop, SQLite, senza codice e tramite browser, evidenziandone punti di forza, limiti e casi d'uso più adatti.

Ingresso vs. Uscita: qual è la differenza nelle reti?

Ingresso vs. Uscita: qual è la differenza nelle reti?

Comprendere come i termini "ingress" e "egress" descrivono il traffico in entrata e in uscita, perché la direzione dipende dal confine della rete e come monitorare la larghezza di banda e individuare i trasferimenti di dati rischiosi.

6 migliori server Syslog gratuiti da provare per la registrazione centralizzata dei log

6 migliori server Syslog gratuiti da provare per la registrazione centralizzata dei log

Confronta sei server e collettori syslog gratuiti per Windows e Linux, inclusi strumenti con interfaccia grafica, opzioni open source, funzionalità di ricerca, avvisi e trasporto sicuro.

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Scopri cosa fa Microsoft IIS, come funzionano la sua pipeline di richieste e i pool di applicazioni e quando Apache, NGINX o Caddy potrebbero essere più adatti alle tue esigenze di server web.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Diagnostica i picchi di utilizzo della CPU del browser Jitsi Meet e riduci il carico del client controllando i riquadri video, gli effetti della fotocamera, la grafica del browser e le impostazioni dell'host.

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Monitora lo stato di salute, il carico della conferenza e il traffico di Jitsi Videobridge con il suo endpoint Prometheus integrato, quindi esplora e visualizza i dati in Grafana.

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Configura un dominio personalizzato per Jitsi Meet Docker con DNS, URL pubblico, HTTPS, Let's Encrypt, porte del firewall, impostazioni NAT e verifica end-to-end.

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 errors after SSL renewal by checking the correct URL and port, proxy routing, service status, deployed certificates, and logs.