Home
» AMMINISTRAZIONE DI RETE
»
Risolvi il problema di arresto anomalo del servizio Python del motore di ricerca Kopano.
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:
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.
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:
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.
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:
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:
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.
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.
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:
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 registrazione
Prima verifica
Modulo Python ImportErrormancante
Versioni del pacchetto e del binding Python; annulla le origini miste del pacchetto
Connessione rifiutata o socket mancante
kopano-serverstato e configurazione socket corrispondente
Permesso o errore del disco
Percorsi configurati per log, file temporanei e indici; spazio libero e accesso per gli utenti del servizio.
Si verifica un arresto anomalo su un allegato
Comando di analisi degli allegati, dipendenze del parser e limiti di dimensione
Ripetuti tentativi falliti di apertura dell'indice del negozio
Eseguire 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.