Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A observabilidade fornece insights sobre o estado interno e o comportamento dos fluxos de trabalho durante a execução. Isso inclui recursos de log, métricas e rastreamento que ajudam a monitorar e depurar fluxos de trabalho.
Dica
A observabilidade é um recurso de toda a estrutura e não se limita a fluxos de trabalho. Para obter mais informações, consulte Observabilidade.
Além da telemetria genai padrão, os fluxos de trabalho do Agent Framework emitem intervalos, logs e métricas adicionais para fornecer insights mais profundos sobre a execução do fluxo de trabalho. Esses recursos de observabilidade ajudam os desenvolvedores a entender o fluxo de mensagens, o desempenho dos executores e quaisquer erros que possam ocorrer.
Habilitar a Observabilidade
Consulte Habilitar a Observabilidade para obter instruções sobre como habilitar a observabilidade em seus aplicativos.
Consulte Habilitar a Observabilidade para obter instruções sobre como habilitar a observabilidade em seus aplicativos.
Intervalos de fluxo de trabalho
Os seguintes intervalos são emitidos durante a execução do fluxo de trabalho:
| Nome do intervalo | DESCRIÇÃO |
|---|---|
workflow.build |
Emitido para cada construção de fluxo de trabalho. |
workflow.session |
Intervalo externo que representa todo o tempo de vida de uma execução de fluxo de trabalho, desde o início até a parada ou o erro. |
workflow_invoke |
Emitido para cada ciclo de entrada para parada dentro de uma sessão de fluxo de trabalho. |
executor.process {executor_id} |
Emitido para cada executor que processa uma mensagem. O ID do executor é acrescentado ao nome do span. |
edge_group.process |
Emitido para cada grupo de borda que processa uma mensagem. |
message.send |
Emitido para cada mensagem enviada de um executor para outro executor. |
Os seguintes intervalos são emitidos durante a execução do fluxo de trabalho:
| Nome do intervalo | DESCRIÇÃO |
|---|---|
workflow.build |
Emitido para cada compilação de workflow. |
workflow.run |
Emitido para cada execução de fluxo de trabalho. |
executor.process {executor_id} |
Emitido para cada executor que processa uma mensagem. O ID do executor é acrescentado ao nome do span. |
edge_group.process {edge_group_type} |
Emitido para cada grupo de extremidade que processa uma mensagem. O tipo de grupo de borda é acrescentado ao nome do intervalo. |
message.send |
Emitido para cada mensagem enviada de um executor para outro executor. |
Atributos de "span"
Os spans carregam atributos que fornecem contexto adicional sobre a operação. Os seguintes atributos são definidos em intervalos de fluxo de trabalho:
| Attribute | Intervalo(s) | DESCRIÇÃO |
|---|---|---|
workflow.id |
workflow.build, workflow.session |
O identificador exclusivo do fluxo de trabalho. |
workflow.name |
workflow.session |
Nome do fluxo de trabalho. |
workflow.description |
workflow.session |
Descrição do fluxo de trabalho. |
workflow.definition |
workflow.build |
A definição JSON do grafo de fluxo de trabalho. |
session.id |
workflow.session |
O identificador de sessão exclusivo. |
executor.id |
executor.process |
O identificador exclusivo do executor. |
executor.type |
executor.process |
O nome do tipo de executor. |
executor.input |
executor.process |
A mensagem de entrada. Definir somente quando os dados confidenciais estiverem habilitados. |
executor.output |
executor.process |
A saída do executor. Definir somente quando os dados confidenciais estiverem habilitados. |
message.type |
executor.process, message.send |
O nome do tipo da mensagem. |
message.content |
message.send |
O conteúdo da mensagem. Definir somente quando os dados confidenciais estiverem habilitados. |
message.source_id |
message.send |
A ID do executor que enviou a mensagem. |
message.target_id |
message.send |
O ID do executor de destino, se especificado. |
edge_group.type |
edge_group.process |
O tipo do grupo de aresta. |
edge_group.delivered |
edge_group.process |
Se a mensagem foi entregue (booleano). |
edge_group.delivery_status |
edge_group.process |
O resultado da entrega (consulte o Status de Entrega do Grupo de Borda). |
error.type |
Qualquer intervalo de erros | O nome do tipo de exceção. |
| Attribute | Intervalo(s) | DESCRIÇÃO |
|---|---|---|
workflow.id |
workflow.build, workflow.run |
O identificador exclusivo do fluxo de trabalho. |
workflow.name |
workflow.run |
Nome do fluxo de trabalho. |
workflow.description |
workflow.run |
Descrição do fluxo de trabalho. |
workflow.definition |
workflow.build |
A definição JSON do grafo de fluxo de trabalho. |
workflow_builder.name |
workflow.build |
O nome do construtor de fluxo de trabalho. |
workflow_builder.description |
workflow.build |
A descrição do construtor de fluxo de trabalho. |
executor.id |
executor.process |
O identificador exclusivo do executor. |
executor.type |
executor.process |
O nome do tipo do executor. |
message.type |
executor.process, message.send |
O nome do tipo da mensagem. |
message.payload_type |
executor.process |
O tipo de dados do conteúdo da mensagem. |
message.destination_executor_id |
message.send |
O ID do executor-alvo, caso especificado. |
message.source_id |
edge_group.process |
A ID do executor que enviou a mensagem. |
message.target_id |
edge_group.process |
O ID do executor de destino, se especificado. |
edge_group.type |
edge_group.process |
O tipo do grupo de aresta. |
edge_group.id |
edge_group.process |
O identificador exclusivo do grupo de borda. |
edge_group.delivered |
edge_group.process |
Se a mensagem foi entregue (booleano). |
edge_group.delivery_status |
edge_group.process |
O resultado da entrega (consulte o Status de Entrega do Grupo de Borda). |
Eventos de Span
Os eventos de intervalo são entradas de log estruturadas anexadas a intervalos, fornecendo uma linha do tempo de momentos-chave dentro de cada intervalo.
| Nome do evento | Intervalo(s) | DESCRIÇÃO |
|---|---|---|
build.started |
workflow.build |
Emitido quando o processo de build é iniciado. |
build.validation_completed |
workflow.build |
Emissão ocorrida quando a validação da compilação é aprovada. |
build.completed |
workflow.build |
Emitido quando o build é concluído com êxito. |
build.error |
workflow.build |
Emitido quando a compilação falha. |
session.started |
workflow.session |
Emitido quando uma sessão de fluxo de trabalho é iniciada. |
session.completed |
workflow.session |
Emitido quando uma sessão de fluxo de trabalho é concluída. |
session.error |
workflow.session |
Emitido quando uma sessão de fluxo de trabalho encontra um erro. |
workflow.started |
workflow_invoke |
Emitido quando uma invocação de fluxo de trabalho é iniciada. |
workflow.completed |
workflow_invoke |
Emitido quando uma invocação de fluxo de trabalho é concluída. |
workflow.error |
workflow_invoke |
Emitido quando uma invocação de fluxo de trabalho encontra um erro. |
| Nome do evento | Intervalo(s) | DESCRIÇÃO |
|---|---|---|
build.started |
workflow.build |
Emitido quando o processo de build é iniciado. |
build.validation_completed |
workflow.build |
Emitido quando a validação do build é concluída com sucesso. |
build.completed |
workflow.build |
Emitido quando o build é concluído com êxito. |
build.error |
workflow.build |
Emitido quando a compilação falha. |
workflow.started |
workflow.run |
Emitido quando uma execução de fluxo de trabalho é iniciada. |
workflow.completed |
workflow.run |
Emitido quando uma execução de fluxo de trabalho é concluída. |
workflow.error |
workflow.run |
Emitido quando uma execução de fluxo de trabalho encontra um erro. |
Links entre Spans
Quando um executor envia uma mensagem para outro executor, o message.send intervalo é criado como um filho do executor.process intervalo. No entanto, o executor.process intervalo do executor de destino não é um filho do message.send intervalo porque a execução não está aninhada. Em vez disso, o executor.process intervalo do executor de destino está vinculado ao message.send intervalo do executor de origem. Essa vinculação cria um caminho rastreável por meio da execução do fluxo de trabalho sem implicar uma hierarquia de chamadas aninhada.
A mesma abordagem de ligação se aplica aos spans edge_group.process, que estão ligados aos spans de origem message.send para rastreamento de causalidade. Isso dá suporte a cenários de "fan-in", nos quais múltiplos intervalos de origem contribuem para um único intervalo de processamento.
Status de distribuição do grupo de computação de borda
Os intervalos de processamento de grupo de borda incluem atributos de status de entrega que indicam o resultado do roteamento de mensagens por meio de cada grupo de borda. O edge_group.delivery_status atributo é definido como um dos seguintes valores:
| Situação | DESCRIÇÃO |
|---|---|
delivered |
A mensagem foi entregue ao executor de destino. |
dropped type mismatch |
O executor de destino não pode lidar com o tipo de mensagem. |
dropped target mismatch |
A mensagem especificou um destino que não corresponde a essa borda. |
dropped condition false |
A condição de roteamento de borda foi avaliada como falso. |
exception |
Ocorreu uma exceção durante o processamento de borda. |
buffered |
A mensagem foi armazenada em buffer, aguardando mensagens adicionais (fan-in). |
O edge_group.delivered atributo booliano fornece uma verificação rápida de se a mensagem foi entregue com êxito.
Configuração de telemetria
A telemetria de fluxo de trabalho pode ser habilitada por meio do WithOpenTelemetry método de extensão no construtor de fluxo de trabalho. A WorkflowTelemetryOptions classe fornece controle refinado sobre quais intervalos são emitidos:
| Opção | Default | DESCRIÇÃO |
|---|---|---|
EnableSensitiveData |
false |
Inclui entradas brutas, saídas e conteúdo da mensagem em atributos de intervalo. |
DisableWorkflowBuild |
false |
Desabilita workflow.build intervalos. |
DisableWorkflowRun |
false |
Desativa workflow.session e workflow_invoke spans. |
DisableExecutorProcess |
false |
Desabilita executor.process intervalos. |
DisableEdgeGroupProcess |
false |
Desabilita edge_group.process intervalos. |
DisableMessageSend |
false |
Desabilita message.send intervalos. |
Aviso
Habilitar dados confidenciais faz com que o conteúdo bruto da mensagem, as entradas do executor e as saídas do executor sejam incluídos na telemetria. Habilite-o apenas em ambientes seguros em que os dados de telemetria estão protegidos adequadamente.
A telemetria de fluxo de trabalho é habilitada por meio da função global enable_instrumentation() . Quando a instrumentação é habilitada, todos os intervalos de fluxo de trabalho são emitidos automaticamente. A configure_otel_providers() função pode ser usada para configurar exportadores para rastreamentos, métricas e logs.
Aviso
Examine a configuração do pipeline de telemetria para garantir que os dados confidenciais sejam protegidos adequadamente ao exportar rastreamentos.