Monitorare lo stato dell'indicizzatore e i risultati in Ricerca di intelligenza artificiale di Azure

È possibile monitorare l'elaborazione dell'indicizzatore nella portale di Azure o a livello di codice tramite chiamate REST o Azure SDK. Oltre allo stato dell'indicizzatore stesso, è possibile esaminare l'ora di inizio e di fine e gli errori dettagliati e gli avvisi di una determinata esecuzione.

Monitorare l'uso di portale di Azure

È possibile visualizzare lo stato corrente di tutti gli indicizzatori nella pagina Panoramica del servizio di ricerca. Le pagine del portale vengono aggiornate ogni pochi minuti, quindi non verranno visualizzate immediatamente prove di un nuovo indicizzatore. Selezionare Aggiorna nella parte superiore della pagina per recuperare immediatamente la visualizzazione più recente.

Indexers list

Stato Descrizione
In corso Indica l'esecuzione attiva. Il portale visualizzerà informazioni parziali. Con l'avanzamento dell'indicizzazione, è possibile osservare che il valore Docs Succeeded cresce in risposta. Gli indicizzatori che elaborano grandi volumi di dati possono richiedere molto tempo per l'esecuzione. Ad esempio, gli indicizzatori che gestiscono milioni di documenti di origine possono essere eseguiti per 24 ore e quindi riavviare quasi immediatamente per riprendere la posizione in cui è stata interrotta. Di conseguenza, lo stato per gli indicizzatori con volumi elevati potrebbe sempre pronunciare In corso nel portale. Anche quando un indicizzatore è in esecuzione, sono disponibili dettagli sullo stato di avanzamento in corso e sulle esecuzioni precedenti.
Success Indica che l'esecuzione è riuscita. Un'esecuzione dell'indicizzatore può avere esito positivo anche se i singoli documenti presentano errori, se il numero di errori è minore dell'impostazione Numero massimo di elementi non riusciti dell'indicizzatore.
Non riuscito Il numero di errori ha superato il numero massimo di elementi non riusciti e l'indicizzazione è stata arrestata.
Reimposta Lo stato interno del rilevamento delle modifiche dell'indicizzatore è stato reimpostato. L'indicizzatore verrà eseguito in modo completo, aggiornando tutti i documenti e non solo quelli con timestamp più recenti.

È possibile selezionare un indicizzatore nell'elenco per visualizzare altri dettagli sulle esecuzioni correnti e recenti dell'indicizzatore.

Indexer summary and execution history

Il grafico di riepilogo dell'indicizzatore visualizza un grafico del numero di documenti elaborati nelle esecuzioni più recenti.

L'elenco Dettagli esecuzione visualizza fino a 50 dei risultati di esecuzione più recenti. Selezionare un risultato di esecuzione nell'elenco per visualizzare le specifiche sull'esecuzione. Sono inclusi i tempi di inizio e di fine e gli eventuali errori e avvisi che si sono verificati.

Indexer execution details

Se si sono verificati problemi specifici del documento durante l'esecuzione, verranno elencati nei campi Errori e avvisi.

Indexer details with errors

Gli avvisi sono comuni con alcuni tipi di indicizzatori e non sempre indicano un problema. Ad esempio, gli indicizzatori che usano i servizi di intelligenza artificiale di Azure possono segnalare avvisi quando i file immagine o PDF non contengono testo da elaborare.

Per altre informazioni sull'analisi degli errori e degli avvisi dell'indicizzatore, vedere Indicazioni per la risoluzione dei problemi relativi all'indicizzatore.

Monitorare con le metriche di monitoraggio di Azure

Ricerca di intelligenza artificiale di Azure è una risorsa monitorata in Monitoraggio di Azure, il che significa che è possibile usare Esplora metriche per visualizzare le metriche di base sul numero di documenti elaborati dall'indicizzatore e chiamate alle competenze. Queste metriche possono essere usate per monitorare lo stato dell'indicizzatore e configurare gli avvisi.

Le visualizzazioni delle metriche possono essere filtrate o suddivise in base a un set di dimensioni predefinite.

Nome misurazione Descrizione Dimensioni Casi d'uso di esempio
Conteggio dei documenti elaborati Mostra il numero di documenti elaborati dall'indicizzatore. Nome origine dati, non riuscito, nome dell'indice, nome dell'indicizzatore, nome set di competenze
- Può essere fatto riferimento come misura approssimativa della velocità effettiva (numero di documenti elaborati dall'indicizzatore nel tempo)
- Configurare l'avviso per i documenti non riusciti
Conteggio delle chiamate di esecuzione delle competenze Mostra il numero di chiamate di competenza. Nome origine dati, non riuscito, nome dell'indice, nome indicizzatore, nome della competenza, tipo di competenza, nome set di competenze
- Riferimento per garantire che le competenze vengano richiamate come previsto confrontando i numeri di chiamata relativi tra le competenze e il numero di chiamate di competenza al numero di documenti.
- Configurare l'avviso per le chiamate di competenza non riuscite

Lo screenshot seguente mostra il numero di documenti elaborati dagli indicizzatori all'interno di un servizio in un'ora, suddivisi in base al nome dell'indicizzatore.

Indexer documents processed metric

È anche possibile configurare il grafico per visualizzare il numero di chiamate di competenza nello stesso intervallo di ore.

Indexer skills invoked metric

Monitorare con Get Indexer Status (API REST)

È possibile recuperare lo stato e la cronologia di esecuzione di un indicizzatore usando il comando Get Indexer Status :You can retrieve the status and execution history of an indexer using the Get Indexer Status command:

GET https://[service name].search.windows.net/indexers/[indexer name]/status?api-version=2020-06-30
api-key: [Search service admin key]

La risposta contiene lo stato globale dell'indicizzatore, la chiamata all'indicizzatore ultimo (o in corso) e la cronologia delle chiamate recenti.

{
    "status":"running",
    "lastResult": {
        "status":"success",
        "errorMessage":null,
        "startTime":"2018-11-26T03:37:18.853Z",
        "endTime":"2018-11-26T03:37:19.012Z",
        "errors":[],
        "itemsProcessed":11,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
     },
    "executionHistory":[ {
        "status":"success",
         "errorMessage":null,
        "startTime":"2018-11-26T03:37:18.853Z",
        "endTime":"2018-11-26T03:37:19.012Z",
        "errors":[],
        "itemsProcessed":11,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
    }]
}

La cronologia di esecuzione contiene fino a 50 esecuzioni più recenti, ordinate in ordine cronologico inverso (la prima più recente).

Si noti che esistono due valori di stato diversi. Lo stato di primo livello è per l'indicizzatore stesso. Lo stato dell'indicizzatore in esecuzione indica che l'indicizzatore è configurato correttamente e disponibile per l'esecuzione, ma non che sia attualmente in esecuzione.

Ogni esecuzione dell'indicizzatore ha anche un proprio stato che indica se l'esecuzione specifica è in corso (in esecuzione) o è già stata completata con uno stato di esito positivo, transientFailure o persistentFailure .

Quando un indicizzatore viene reimpostato per aggiornare lo stato di rilevamento delle modifiche, viene aggiunta una voce separata della cronologia di esecuzione con stato Reimposta .

Per altre informazioni sui codici di stato e sui dati di monitoraggio dell'indicizzatore, vedere Ottenere lo stato dell'indicizzatore.

Monitorare con .NET

L'esempio C# seguente scrive informazioni sullo stato di un indicizzatore e sui risultati dell'esecuzione più recente (o in corso) nella console.

static void CheckIndexerStatus(SearchIndexerClient indexerClient, SearchIndexer indexer)
{
    try
    {
        string indexerName = "hotels-sql-idxr";
        SearchIndexerStatus execInfo = indexerClient.GetIndexerStatus(indexerName);

        Console.WriteLine("Indexer has run {0} times.", execInfo.ExecutionHistory.Count);
        Console.WriteLine("Indexer Status: " + execInfo.Status.ToString());

        IndexerExecutionResult result = execInfo.LastResult;

        Console.WriteLine("Latest run");
        Console.WriteLine("Run Status: {0}", result.Status.ToString());
        Console.WriteLine("Total Documents: {0}, Failed: {1}", result.ItemCount, result.FailedItemCount);

        TimeSpan elapsed = result.EndTime.Value - result.StartTime.Value;
        Console.WriteLine("StartTime: {0:T}, EndTime: {1:T}, Elapsed: {2:t}", result.StartTime.Value, result.EndTime.Value, elapsed);

        string errorMsg = (result.ErrorMessage == null) ? "none" : result.ErrorMessage;
        Console.WriteLine("ErrorMessage: {0}", errorMsg);
        Console.WriteLine(" Document Errors: {0}, Warnings: {1}\n", result.Errors.Count, result.Warnings.Count);
    }
    catch (Exception e)
    {
        // Handle exception
    }
}

L'output nella console sarà simile al seguente:

Indexer has run 18 times.
Indexer Status: Running
Latest run
  Run Status: Success
  Total Documents: 7, Failed: 0
  StartTime: 11:29:31 PM, EndTime: 11:29:31 PM, Elapsed: 00:00:00.2560000
  ErrorMessage: none
  Document Errors: 0, Warnings: 0

Si noti che esistono due valori di stato diversi. Lo stato di primo livello è lo stato dell'indicizzatore stesso. Lo stato dell'indicizzatore In esecuzione indica che l'indicizzatore è configurato correttamente e disponibile per l'esecuzione, ma non che sia attualmente in esecuzione.

Ogni esecuzione dell'indicizzatore ha anche un proprio stato per determinare se l'esecuzione specifica è in corso (in esecuzione) o è già stata completata con lo stato Success o TransientError .

Quando un indicizzatore viene reimpostato per aggiornare lo stato di rilevamento delle modifiche, viene aggiunta una voce di cronologia separata con stato Reimposta .

Passaggi successivi

Per altre informazioni sui codici di stato e sulle informazioni di monitoraggio dell'indicizzatore, vedere le informazioni di riferimento sulle API seguenti: