Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A observabilidade fornece informações sobre o estado interno e o comportamento dos fluxos de trabalho durante a execução. Isso inclui registro, métricas e recursos de rastreamento que ajudam a monitorar e depurar fluxos de trabalho.
Sugestão
A observabilidade é uma funcionalidade em toda a estrutura e não se limita a fluxos de trabalho. Para mais informações, consulte Observabilidade.
Além da telemetria padrão do GenAI, o Agent Framework Workflows emite extensões adicionais, logs e métricas para fornecer informações mais detalhadas sobre a execução do fluxo de trabalho. Estas funcionalidades de observabilidade ajudam os programadores a compreender o fluxo das mensagens, o desempenho dos executores e quaisquer erros que possam ocorrer.
Ativar observabilidade
Por favor, consulte Habilitar a Observabilidade para instruções sobre como ativar a observabilidade nas suas aplicações.
Por favor, consulte Habilitar a Observabilidade para instruções sobre como ativar a observabilidade nas suas aplicações.
Abrangência de fluxo de trabalho
Os seguintes intervalos são emitidos durante a execução do fluxo de trabalho:
| Nome do intervalo | Description |
|---|---|
workflow.build |
Emitido para cada build de workflow. |
workflow.session |
O intervalo externo representa toda a vida útil de uma execução de fluxo de trabalho, desde o início até ao fim ou erro. |
workflow_invoke |
Emitido para cada ciclo de entrada-para-paragem numa sessão de fluxo de trabalho. |
executor.process {executor_id} |
Emitida para cada executor que está a processar uma mensagem. O ID do executor é acrescentado ao nome do span. |
edge_group.process |
Emitido para cada grupo de arestas ao processar 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 | Description |
|---|---|
workflow.build |
Emitido para cada construção de fluxo de trabalho. |
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} |
Gerado para cada grupo de arestas para o processamento de uma mensagem. O tipo de grupo de arestas é adicionado ao nome do span. |
message.send |
Emitida para cada mensagem enviada de um executor para outro executor. |
Atributos de Intervalo
Os spans transportam atributos que fornecem contexto adicional sobre a operação. Os seguintes atributos são definidos nos intervalos de fluxo de trabalho:
| Attribute | Vão(s) | Description |
|---|---|---|
workflow.id |
workflow.build, workflow.session |
O identificador único do fluxo de trabalho. |
workflow.name |
workflow.session |
o nome do fluxo de trabalho. |
workflow.description |
workflow.session |
A descrição do fluxo de trabalho. |
workflow.definition |
workflow.build |
A definição JSON do grafo de workflow. |
session.id |
workflow.session |
O identificador único da sessão. |
executor.id |
executor.process |
O identificador único do executor. |
executor.type |
executor.process |
O tipo de nome do executor. |
executor.input |
executor.process |
A mensagem de entrada. Só é definido quando os dados sensíveis estão ativados. |
executor.output |
executor.process |
A saída do executor. Só é definido quando os dados sensíveis estão ativados. |
message.type |
executor.process, message.send |
O nome do tipo da mensagem. |
message.content |
message.send |
O conteúdo da mensagem. Só é definido quando os dados sensíveis estão ativados. |
message.source_id |
message.send |
O ID do executor que enviou a mensagem. |
message.target_id |
message.send |
O ID do executor alvo, se especificado. |
edge_group.type |
edge_group.process |
O tipo do grupo de arestas. |
edge_group.delivered |
edge_group.process |
Se a mensagem foi entregue (booleano). |
edge_group.delivery_status |
edge_group.process |
O resultado da entrega (ver Estado de Entrega do Grupo Edge). |
error.type |
Qualquer intervalo no caso de um erro | O nome do tipo de exceção. |
| Attribute | Vão(s) | Description |
|---|---|---|
workflow.id |
workflow.build, workflow.run |
O identificador único do fluxo de trabalho. |
workflow.name |
workflow.run |
o nome do fluxo de trabalho. |
workflow.description |
workflow.run |
A descrição do fluxo de trabalho. |
workflow.definition |
workflow.build |
A definição JSON do grafo de workflow. |
workflow_builder.name |
workflow.build |
O nome do construtor de fluxos de trabalho. |
workflow_builder.description |
workflow.build |
A descrição do construtor de fluxos de trabalho. |
executor.id |
executor.process |
O identificador único do executor. |
executor.type |
executor.process |
O nome tipo do executor. |
message.type |
executor.process, message.send |
O tipo de nome da mensagem. |
message.payload_type |
executor.process |
O tipo de dados da carga útil da mensagem. |
message.destination_executor_id |
message.send |
O ID do executor alvo, se especificado. |
message.source_id |
edge_group.process |
O ID do executor que enviou a mensagem. |
message.target_id |
edge_group.process |
O ID do executor alvo, se especificado. |
edge_group.type |
edge_group.process |
O tipo de grupo de arestas. |
edge_group.id |
edge_group.process |
O identificador único 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 (ver Estado de Entrega do Grupo Edge). |
Eventos Span
Os eventos de segmento são entradas de registo estruturadas ligadas a segmentos, fornecendo uma linha temporal dos momentos-chave dentro de cada segmento.
| Nome do evento | Vão(s) | Description |
|---|---|---|
build.started |
workflow.build |
Emitido quando o processo de construção começa. |
build.validation_completed |
workflow.build |
Emitido quando a validação do build é concluída com êxito. |
build.completed |
workflow.build |
Emitido quando a construção é concluída com sucesso. |
build.error |
workflow.build |
Emitido quando a construção falha. |
session.started |
workflow.session |
Emitido quando uma sessão de workflow começa. |
session.completed |
workflow.session |
Emitido quando uma sessão de fluxo de trabalho termina. |
session.error |
workflow.session |
Emitido quando uma sessão de workflow encontra um erro. |
workflow.started |
workflow_invoke |
Emitido quando uma invocação de fluxo de trabalho começa. |
workflow.completed |
workflow_invoke |
Emitido quando uma invocação de fluxo de trabalho termina. |
workflow.error |
workflow_invoke |
Emitido quando uma invocação de workflow encontra um erro. |
| Nome do evento | Intervalo(Intervalos) | Description |
|---|---|---|
build.started |
workflow.build |
Emitido quando o processo de construção começa. |
build.validation_completed |
workflow.build |
Emitido quando a validação da build passa. |
build.completed |
workflow.build |
Emitido quando a construção é concluída com sucesso. |
build.error |
workflow.build |
Emitido quando a compilação falha. |
workflow.started |
workflow.run |
Emitido quando uma execução de fluxo de trabalho começa. |
workflow.completed |
workflow.run |
Emitido quando uma execução de fluxo de trabalho termina. |
workflow.error |
workflow.run |
É emitido quando uma execução de workflow encontra um erro. |
Ligações entre Spans
Quando um executor envia uma mensagem para outro executor, a message.send extensão é criada como um filho da executor.process extensão. No entanto, o executor.process span do executor alvo não é filho do message.send span porque a execução não é aninhada. Em vez disso, o executor.process span do executor do destino está ligado ao message.send span do executor de origem. Esta ligação cria um caminho rastreável através da execução do fluxo de trabalho sem implicar uma hierarquia de chamadas aninhada.
A mesma abordagem de ligação aplica-se aos edge_group.process spans, que estão ligados aos spans de origem message.send para fins de rastreamento de causalidade. Isto suporta cenários fan-in onde múltiplos intervalos de origem contribuem para um único intervalo de processamento.
Estado de Entrega do Grupo Edge
Os intervalos de processamento dos grupos de borda incluem atributos de status de entrega que indicam o resultado do encaminhamento de mensagens através de cada grupo de borda. O edge_group.delivery_status atributo é definido para um dos seguintes valores:
| Situação | Description |
|---|---|
delivered |
A mensagem era entregue ao executor alvo. |
dropped type mismatch |
O executor do destino não consegue lidar com o tipo de mensagem. |
dropped target mismatch |
A mensagem especificava um alvo que não corresponde a este limite. |
dropped condition false |
A condição de encaminhamento da aresta avaliada como falsa. |
exception |
Ocorreu uma exceção durante o processamento de borda. |
buffered |
A mensagem era armazenada em buffer, à espera de mensagens adicionais (fan-in). |
O edge_group.delivered atributo booleano fornece uma verificação rápida para saber se a mensagem foi entregue com sucesso.
Configuração de Telemetria
A telemetria de workflow pode ser ativada através do WithOpenTelemetry método de extensão no workflow builder. A classe WorkflowTelemetryOptions fornece controlo detalhado sobre quais intervalos são emitidos.
| Option | Predefinição | Description |
|---|---|---|
EnableSensitiveData |
false |
Inclui entradas brutas, saídas e conteúdo de mensagens nos atributos span. |
DisableWorkflowBuild |
false |
Desativa workflow.build os spans. |
DisableWorkflowRun |
false |
Desativa workflow.session e workflow_invoke extensões. |
DisableExecutorProcess |
false |
Desativa executor.process spans. |
DisableEdgeGroupProcess |
false |
Desativa edge_group.process os spans. |
DisableMessageSend |
false |
Desativa message.send os spans. |
Advertência
Ativar dados sensíveis faz com que o conteúdo bruto das mensagens, entradas do executor e saídas do executor sejam incluídos na telemetria. Ative isto apenas em ambientes seguros onde os dados de telemetria estejam devidamente protegidos.
A telemetria do fluxo de trabalho é ativada através da função global enable_instrumentation() . Quando a instrumentação está ativada, todos os intervalos de fluxo de trabalho são emitidos automaticamente. A configure_otel_providers() função pode ser usada para configurar exportadores para rastreios, métricas e registos.
Advertência
Revise a configuração do seu pipeline de telemetria para garantir que os dados sensíveis estão devidamente protegidos ao exportar traços.