Monitorando o servidor StreamInsight e as consultas
O monitoramento do estado de um servidor do StreamInsight envolve o acompanhamento da integridade geral do sistema e do desempenho da consulta. O estado de um servidor StreamInsight é capturado pelo monitoramento das consultas StreamInsight em execução no servidor e pelo monitoramento de como as entidades que compõem uma consulta StreamInsight estão usando recursos do sistema.
Neste tópico
Criando exibições de diagnóstico
Quais problemas posso solucionar com as exibições de diagnóstico?
Estados de consulta
Noções básicas sobre monitoramento em nível de consulta
Monitorando a latência da consulta
Lista de propriedades de diagnóstico
Diagnóstico do operador
Diagnóstico do adaptador
Diagnóstico do fluxo
Diagnóstico da consulta
Diagnóstico do fluxo publicado
Diagnóstico do servidor
Acessando o diagnóstico com o PowerShell
Criando exibições de diagnóstico
É possível obter informações de monitoramento usando a API de exibições de diagnóstico. Como pré-requisito para usar essa API, você deve ter o serviço Web de gerenciamento habilitado nos modos inserido e autônomo de implantação de servidor e seu aplicativo cliente deve estar conectado ao servidor através desse serviço Web. Para obter mais informações, consulte Publicando e conectando ao servidor StreamInsight.
Outra alternativa é monitorar o servidor e consultar usando os recursos de diagnóstico no Depurador de Fluxo de Eventos do StreamInsight, que usa a API de diagnóstico para retornar os resultados em uma interface de GUI. Você deve conectar o depurador a um servidor StreamInsight ativo e usar o Pesquisador de Objetos para exibir os diversos objetos no servidor. Clique com o botão direito do mouse em qualquer objeto para obter o diagnóstico de tempo de execução dessa entidade. Para obter mais informações, consulte Usando o depurador do fluxo de eventos do StreamInsight.
Todos os objetos do servidor são acessados usando o URI (Uniform Resource Identifier) com base em um esquema de nomeação hierárquico. Esse esquema de nomeação começa com o servidor e continua até os operadores de consulta e os fluxos de eventos. Você pode recuperar o diagnóstico em nível de servidor a partir dos seguintes objetos:
cep:/Server
cep:/Server/PlanManager
cep:/Server/EventManager
cep:/Server/Query
Para fazer referência a uma consulta específica, use o esquema de nomeação cep:/Server/Application/ApplicationName/Query/QueryName.
Para referir-se a operadores e fluxos específicos que pertencem a uma consulta, use os esquemas de nomeação a seguir. Observe que adaptadores também são considerados operadores em uma consulta. Use a nomenclatura de operador em adaptadores.
cep:/Server/Application/ApplicationName/Query/QueryName/Operator/OperatorName
cep:/Server/Application/ApplicationName/Query/QueryName/Stream/StreamName
Por exemplo, para fazer referência a uma consulta 'TrafficSensorQuery' no aplicativo 'ObjectModelSample', use cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery.
As informações de diagnóstico desses objetos são obtidas chamando o método GetDiagnosticView(). Você pode filtrar a recuperação de configurações de diagnóstico em duas dimensões - o aspecto (memória, CPU e outros atributos específicos dessa configuração) e nível (de importância). É possível definir essas condições de filtragem usando os métodos SetDiagnosticsSettings() e ClearDiagnosticSettings() para definir ou limpar configurações específicas de determinada consulta. O exemplo a seguir foi extraído do exemplo 'ExplicitServer.cs' e gera o diagnóstico em vários objetos para uma consulta em execução. O exemplo supõe que existe uma instância do StreamInsight registrada chamada "MyInstance".
public class ExplicitServer
{
public static void Main(string[] args)
{
using (Server server = Server.Create("MyInstance"))
{
try
{
// Create application in server
// Create query logic as a query template
// Register adapter factories
// bind query to event producers and consumers
// Create bound query that can be run
// Create a tracer to output information on the console.
TraceListener tracer = new ConsoleTraceListener();
// Start the query
query.Start();
// Retrieve diagnostic information from the StreamInsight server.
RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), tracer);
RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), tracer);
RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")), tracer);
DiagnosticSettings settings = new DiagnosticSettings(DiagnosticAspect.GenerateErrorReports, DiagnosticLevel.Always);
server.SetDiagnosticSettings(new Uri("cep:/Server"), settings);
tracer.WriteLine("Global Server Diagnostics");
RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), tracer);
RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), tracer);
RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Query")), tracer);
tracer.WriteLine("Summary Query Diagnostics");
RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")), tracer);
tracer.WriteLine("Operator Diagnostics");
RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery/Operator/sensorInput")), tracer);
query.Stop();
}
catch (Exception e)
{
tracer.WriteLine(e.ToString());
}
}
}
private static void RetrieveDiagnostics(DiagnosticView diagview, TraceListener traceListener)
{
// Display diagnostics for diagnostic view object
traceListener.WriteLine("Diagnostic View for '" + diagview.ObjectName + "':");
foreach (KeyValuePair<string, object> diagprop in diagview)
{
traceListener.WriteLine(" " + diagprop.Key + ": " + diagprop.Value);
}
}
}
Para obter mais informações sobre a API usada no exemplo anterior, consulte DiagnosticView. Para obter mais informações sobre como usar ouvintes de rastreamento, consulte Ouvintes de rastreamento.
[TOP]
Quais problemas posso solucionar com as exibições de diagnóstico?
Você pode usar as exibições de diagnóstico para solucionar vários tipos de problemas com um aplicativo StreamInsight. Por exemplo:
Causa raiz |
Sintoma(s) |
---|---|
A extensão definida pelo usuário é baixa |
Latência do sistema alta |
A extensão definida pelo usuário gerou uma exceção |
Consulta interrompida ou anulada |
O adaptador de entrada não está alimentando os dados rapidamente |
Latência de dados alta |
O adaptador de entrada não está gerando CTIs |
Consulta interrompida |
O adaptador de saída não está acompanhando |
Latência do sistema alta |
No entanto, geralmente, você não pode usar exibições de diagnóstico para solucionar problemas no nível do servidor ou do local de rede, o que pode estar afetando os aplicativos StreamInsight. Rede lenta, E/S de disco lenta, memória baixa e contenção de recurso no servidor são considerados problemas desse tipo.
[TOP]
Estados de consulta
Uma consulta passa por vários estados durante seu tempo de vida. Esses estados são descritos na tabela a seguir.
Estado da consulta |
Descrição |
---|---|
Parado |
A consulta não está mais ativa. Nenhum plano de consulta está retido. Esse estado geralmente ocorre depois que é feita uma chamada para o método Stop da consulta. |
Inicializando |
Esse estado geralmente ocorre após um dos seguintes eventos:
|
Em Execução |
A consulta está processando eventos. Esse estado geralmente ocorre depois que é feita uma chamada para o método Start da consulta. |
Definindo o ponto de verificação |
A consulta está em execução e um ponto de verificação está em andamento. Esse estado geralmente ocorre depois que é feita uma chamada para o método BeginCheckpoint. |
Parando |
O usuário solicitou a interrupção da consulta. Esse estado geralmente ocorre depois que é feita uma chamada para o método Stop da consulta. |
Suspensa |
Uma consulta resiliente não conseguiu se recuperar ou não pôde ser recuperada porque o servidor foi iniciado sem resiliência. |
Concluída |
A consulta foi concluída de maneira normal. Ou seja, os adaptadores de entrada enfileiraram os marcadores de fim de fluxo, e o adaptador de saída os consumiu. |
Anulada |
A falha ocorreu. A consulta ainda está disponível no gerenciador de plano. |
[TOP]
Noções básicas sobre monitoramento em nível de consulta
Quando você monitora o desempenho da consulta no servidor StreamInsight, é possível usar os atributos de monitoramento em nível de consulta fornecidos pela API ManagementService. Use a ilustração do fluxo de eventos a seguir para ajudá-lo a compreender como é possível usar esses atributos de monitoramento.
Com base na ilustração, imagine que existem quatro pontos de medição que registram a passagem de eventos (da esquerda para a direita), a partir do adaptador de entrada, passando pela consulta, até chegar ao adaptador de saída. Com base nesses pontos de medição, a seguinte métrica pode ser derivada:
Entrada — Registra eventos de entrada em todos os adaptadores de entrada. Esta é uma medida da taxa de chegada do evento de entrada do adaptador de entrada na consulta.
Consumidos — Registra eventos consumidos pelo servidor StreamInsight, ou seja, em todos os operadores que vêm logo depois dos adaptadores de entrada. Esta é uma medida dos eventos enfileirados no servidor.
Produzidos — Registra todos os eventos que estão deixando o último operador precede o adaptador de saída. Esta é uma medida dos eventos removidos da fila da consulta.
Saída — Registra todos os eventos que deixam o adaptador de saída. Esta é uma medida da taxa de saída do evento do servidor do StreamInsight para o coletor.
Usando a ilustração como guia, é possível determinar o atributo apropriado a ser retornado com base na área do fluxo de eventos na qual você está interessado. Por exemplo, se você estiver interessado no número de eventos consumidos pela consulta, use o atributo QueryTotalConsumedEventCount ou, se estiver interessado nos eventos produzidos pela consulta, use o atributo QueryTotalProducedEventCount.
[TOP]
Monitorando a latência da consulta
A latência é um número cumulativo computado em todas as chegadas e saídas de eventos em determinado portão (entrada, produzidos, consumidos ou saída). É possível computar a latência média entre medidas feitas em dois pontos por vez como (S2 – S1)/(C2 – C1), em que S é a soma cumulativa da latência em qualquer portão e C é a contagem de eventos nesse ponto associado.
Por exemplo, para computar a latência média consumida, procure medir a latência cumulativa consumida (QueryTotalConsumedEventLatency) no carimbo de data/hora t1 (S1) junto com a contagem total de eventos consumidos (QueryTotalConsumedEventCount). Em seguida, repita as mesmas medidas em um carimbo de data/hora diferente (t2) e calcule a latência média do evento consumido como (S2 – S1)/(C2 – C1).
É possível usar os atributos desde o QueryTotalIncomingEventCount até o QueryLastProducedCtiTimestamp para determinar a eficiência dos adaptadores na transferência de eventos de ou para a consulta, e a taxa de processamento de eventos pelo servidor do StreamInsight.
É possível determinar a memória total consumida por operadores somando os valores dos atributos OperatorEventMemory e OperatorIndexMemory.
[TOP]
Propriedades de diagnóstico
As exibições de diagnóstico retornam atributos em vários níveis de granularidade de objeto: servidor, consulta, fluxos publicados, operador e adaptador.
Os diagnósticos são criados de forma que podem ser agregados a partir de objetos de granularidade mais refinada para objetos de granularidade mais rústicos na hierarquia. Para cada um desses níveis, é possível obter os seguintes tipos de informações de diagnóstico:
Informações estáticas (S) retornam a propriedade do objeto. Informações estáticas não mudam de acordo com as condições variadas da operação de consulta.
Informações não agregadas (N) retornam estatísticas não agregadas de objetos filhos para seus objetos pais.
As informações agregadas (A) retornam estatísticas agregadas dos objetos filhos para seu objeto pai.
Observe que todas as propriedades de exibição de diagnóstico listadas abaixo estão disponíveis em DiagnosticViewProperty.
Diagnóstico do operador
Metadados
A tabela a seguir lista as propriedades de metadados que descrevem operadores individuais em uma consulta. Os valores dessas propriedades não são alterados.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
OperatorId |
Int64 |
Identificador de um operador. |
OperatorKind |
String |
Tipo de operador. |
OperatorQueryId |
Int64 |
Identificador da consulta em que o operador atual reside. |
OperatorEventType |
String |
Representação XML do tipo de saída do operador. Para G&A, esse é o tipo do campo de agrupamento, e não a saída. |
Estatísticas não agregadas
A tabela a seguir lista as estatísticas que são agregadas em todas as instâncias lógicas de um operador, mas que não são agregadas nas estatísticas da consulta.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
OperatorTotalInputEventCount |
Int64 |
Número total de eventos de entrada do operador. |
OperatorMinInputEventCountAcrossWorkers |
Int64 |
Número mínimo de eventos de entrada processados entre todos os trabalhos de um operador. |
OperatorMaxInputEventCountAcrossWorkers |
Int64 |
Número máximo de eventos de entrada processados entre todos os trabalhos de um operador. |
OperatorTotalOutputEventCount |
Int64 |
Número total de eventos de saída do operador. |
OperatorMinOutputEventCountAcrossWorkers |
Int64 |
Número mínimo de eventos de saída gerados entre todos os trabalhos de um operador. |
OperatorMaxOutputEventCountAcrossWorkers |
Int64 |
Número máximo de eventos de saída gerados entre todos os trabalhos de um operador. |
OperatorLastOutputCtiTimestamp |
DateTime |
O carimbo de data/hora do último CTI (na hora do aplicativo) produzido pelo operador. |
OperatorTotalOutputCtiCount |
Int64 |
O número total de eventos CTI produzidos pelo operador. |
OperatorMinOutputCtiCountAcrossWorkers |
Int64 |
O número mínimo de eventos CTI produzidos entre todos os trabalhos de um operador. |
OperatorMaxOutputCtiCountAcrossWorkers |
Int64 |
O número máximo de eventos CTI produzidos entre todos os trabalhos de um operador. |
OperatorEventCountSinceLastCti |
Int64 |
O número agregado de eventos CTI produzidos pelo operador desde o último CTI para todos os trabalhos de um operador. Para o operador Cleanse, esse valor geralmente é 0 (zero). |
OperatorMinIndexEventCountAcrossWorkers |
Int64 |
O número mínimo de eventos nos índices entre os trabalhos do operador. |
OperatorMaxIndexEventCountAcrossWorkers |
Int64 |
O número máximo de eventos nos índices entre os trabalhos do operador. |
OperatorMinEventMemoryAcrossWorkers |
Int64 |
A quantidade mínima de memória usada (em bytes) pelos eventos nos índices entre todos os trabalhos de um operador. |
OperatorMaxEventMemoryAcrossWorkers |
Int64 |
A quantidade máxima de memória usada (em bytes) pelos eventos nos índices entre todos os trabalhos de um operador. |
OperatorMinIndexMemoryAcrossWorkers |
Int64 |
A quantidade mínima de memória usada (em bytes) pelos índices entre todos os trabalhos de um operador. |
OperatorMaxIndexMemoryAcrossWorkers |
Int64 |
A quantidade máxima de memória usada (em bytes) pelos índices entre todos os trabalhos de um operador. |
OperatorNumberOfWorkers |
Int32 |
O número de unidades computacionais que estão executando o operador. |
OperatorGroupIdField |
String |
O nome do campo ID do grupo para um operador Group And Apply. |
OperatorMinCpuUsageAcrossWorkers |
Int64 |
O uso mínimo de CPU, em milissegundos, entre os trabalhos do operador. |
OperatorMaxCpuUsageAcrossWorkers |
Int64 |
O uso máximo de CPU, em milissegundos, entre os trabalhos do operador. |
OperatorMinEventAdjustedCount |
Int64 |
O número mínimo de eventos ajustados entre os trabalhos do operador. |
OperatorMaxEventAdjustedCount |
Int64 |
O número máximo de eventos ajustados entre os trabalhos do operador. |
OperatorTotalEventAdjustedCount |
Int64 |
O número total de eventos ajustados entre os trabalhos do operador. |
OperatorMinEventDroppedCount |
Int64 |
O número mínimo de eventos removidos entre os trabalhos do operador. |
OperatorMaxEventDroppedCount |
Int64 |
O número máximo de eventos removidos entre os trabalhos do operador. |
OperatorTotalEventDroppedCount |
Int64 |
O número total de eventos removidos entre os trabalhos do operador. |
Estatísticas agregadas
A tabela a seguir lista as estatísticas agregadas em todas as instâncias lógicas de um operador e nas estatísticas da consulta.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
OperatorIndexEventCount |
Int64 |
A memória usada pelos índices em todas as instâncias lógicas ativas do operador. |
OperatorEventMemory |
Int64 |
A quantidade de memória usada (em bytes) pelos eventos nos índices em todas as instâncias lógicas do operador. |
OperatorIndexMemory |
Int64 |
A quantidade de memória usadas (em bytes) pelos índices do operador. |
OperatorTotalCpuUsage |
Int64 |
O uso de CPU total do operador em milissegundos. |
OperatorTotalScheduledCount |
Int64 |
O número total de vezes em que o operador foi agendado. |
[TOP]
Diagnóstico do adaptador
Esta seção lista as propriedades de diagnóstico específicas dos adaptadores. Os adaptadores são um tipo especial de operador e, portanto, incluem todas as propriedades de diagnóstico listadas para os operadores.
Metadados
A tabela a seguir lista as propriedades de metadados que descrevem adaptadores individuais. Observação: o valor de propriedade AdapterState pode ser alterado.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
AdapterStateTransitionHistory |
String |
A representação XML das últimas transições de cada adaptador. |
Estatísticas
A tabela a seguir lista as estatísticas específicas dos adaptadores.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
AdapterTotalSuspendCount |
Int64 |
O número total de vezes em que todas as instâncias do adaptador foram suspensas. |
AdapterMinSuspendCountAcrossWorkers |
Int64 |
O número mínimo de vezes que uma instância do adaptador foi suspensa. |
AdapterMinSuspendCountAcrossWorkers |
Int64 |
O número máximo de vezes que uma instância do adaptador foi suspensa. |
AdapterTotalTimeInSuspendedState |
TimeSpan |
O tempo total em que todas as instâncias do adaptador permaneceram no estado suspenso. |
AdapterMinTimeInSuspendedStateAcrossWorkers |
TimeSpan |
O tempo mínimo em que uma instância do adaptador permaneceu no estado suspenso. |
AdapterMaxTimeInSuspendedStateAcrossWorkers |
TimeSpan |
O tempo máximo em que uma instância do adaptador permaneceu no estado suspenso. |
AdapterTotalTimeInNonSuspendedState |
TimeSpan |
O tempo total em que todas as instâncias do adaptador permaneceram no estado não suspenso. |
AdapterMinTimeInNonSuspendedStateAcrossWorkers |
TimeSpan |
O tempo mínimo em que uma instância do adaptador permaneceu no estado não suspenso. |
AdapterMaxTimeInNonSuspendedStateAcrossWorkers |
TimeSpan |
O tempo máximo em que uma instância do adaptador permaneceu no estado não suspenso. |
AdapterFirstCtiTimestamp |
DateTime |
O carimbo de data/hora do primeiro CTI (na hora do aplicativo) produzido ou consumido pelo adaptador. |
AdapterNumberOfRunningWorkers |
Int32 |
Número de instâncias do adaptador no estado Em Execução. |
AdapterNumberOfStoppedWorkers |
Int32 |
Número de instâncias do adaptador no estado Parado. |
AdapterNumberOfSuspendedWorkers |
Int32 |
Número de instâncias do adaptador no estado Suspenso. |
Resiliência do adaptador
Atributo |
Tipo de informação |
Tipo de .NET Framework |
Descrição |
---|---|---|---|
InputAdapterLastCheckpointHighWaterMark |
N |
DateTime |
A marca d'água alta da hora do aplicativo usada no último ponto de verificação deste fluxo. Isso identifica exclusivamente um ponto no fluxo de entrada, e o fluxo deve reproduzir todos os eventos após este ponto durante a recuperação. |
OutputAdapterLastCheckpointEventOffset |
N |
Int32 |
O número de eventos desde a marca d'água alta da hora do aplicativo especificando o local no fluxo de saída em que o último ponto de verificação foi obtido. |
OutputAdapterLastCheckpointHighWaterMark |
N |
DateTime |
A marca d'água alta da hora do aplicativo do fluxo de saída para o último ponto de verificação obtido pela consulta. |
[TOP]
Diagnóstico do fluxo
Metadados
A tabela a seguir lista as propriedades de metadados que descrevem fluxos individuais em uma consulta. Os valores dessas propriedades não são alterados.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
StreamId |
Int64 |
A ID do fluxo. |
StreamQueryId |
Int64 |
A ID da consulta do fluxo. |
StreamSourceOperatorId |
Int64 |
A ID do operador de origem do fluxo. |
StreamTargetOperatorId |
Int64 |
A ID do operador de destino do fluxo. |
StreamSystemInstance |
Booliano |
Valor booliano que indica se o fluxo está em um fluxo do sistema. |
Estatísticas não agregadas
A tabela a seguir lista as estatísticas que são agregadas em todas as instâncias lógicas de um fluxo, mas que não são agregadas nas estatísticas da consulta.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
StreamTotalInputEventCount |
Int64 |
O número total de eventos de entrada do fluxo. |
StreamMinEventCountAcrossWorkers |
Int64 |
O número mínimo de eventos em todas as instâncias do fluxo. |
StreamMaxEventCountAcrossWorkers |
Int64 |
O número máximo de eventos em todas as instâncias do fluxo. |
StreamNumberOfWorkers |
Int32 |
O número de instâncias deste fluxo. |
StreamMinInputEventCountAcrossWorkers |
Int64 |
O número mínimo de eventos de entrada nas instâncias do fluxo. |
StreamMaxInputEventCountAcrossWorkers |
Int64 |
O número máximo de eventos de entrada nas instâncias do fluxo. |
StreamMinMemoryIncludingEventsAcrossWorkers |
Int64 |
A quantidade mínima de memória usada (em bytes) nas instâncias do fluxo. |
StreamMaxMemoryIncludingEventsAcrossWorkers |
Int64 |
A quantidade máxima de memória usada (em bytes) nas instâncias do fluxo. |
Estatísticas agregadas
A tabela a seguir lista as estatísticas agregadas em todas as instâncias lógicas de um fluxo e nas estatísticas da consulta.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
StreamEventCount |
Int64 |
O número total de eventos em todas as instâncias do fluxo. |
StreamMemoryIncludingEvents |
Int64 |
A quantidade de memória (em bytes) usada pelo fluxo e todos os eventos nele contidos. |
[TOP]
Diagnóstico da consulta
As consultas contêm as estatísticas agregadas dos seus fluxos e operadores constituintes, juntamente com suas próprias estatísticas. As seções a seguir descrevem detalhadamente as estatísticas específicas das consultas.
Quando uma consulta não está em execução, os diagnósticos retornam apenas as propriedades QueryState (Suspensa ou Parada) e IsResilient (true ou false).
Metadados
A tabela a seguir lista as propriedades de metadados que descrevem consultas individuais. Os valores dessas propriedades não são alterados.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
QueryState |
String |
O estado atual da consulta. |
QueryStartTime |
DateTime |
A hora de início da consulta. |
QueryEndTime |
DateTime |
A hora de término da consulta. |
QueryException |
String |
A última exceção que ocorreu na consulta. |
QueryCreationTime |
DateTime |
A hora em que a instância da consulta foi criada. |
QueryId |
Int64 |
A ID da consulta. |
QuerySystemInstance |
Booliano |
Valor booliano que indica se a consulta é uma consulta do sistema. |
QueryInstanceGroupId |
Int64 |
A ID do grupo de instâncias da consulta. |
Estatísticas
A tabela a seguir lista as estatísticas específicas da consulta.
Nome da propriedade |
Tipo |
Descrição |
---|---|---|
QueryTotalIncomingEventCount |
Int64 |
O número total de eventos de entrada da consulta. |
QueryTotalConsumedEventCount |
Int64 |
O número total de eventos consumidos pela consulta. |
QueryTotalProducedEventCount |
Int64 |
O número total de eventos produzidos pela consulta. |
QueryTotalOutgoingEventCount |
Int64 |
O número total de eventos de saída da consulta. |
QueryLastIncomingEventTimestamp |
DateTime |
A hora do sistema do último evento de entrada da consulta. |
QueryLastConsumedEventTimestamp |
DateTime |
A hora do sistema do último evento consumido da consulta. |
QueryLastProducedEventTimestamp |
DateTime |
A hora do sistema do último evento produzido da consulta. |
QueryLastOutgoingEventTimestamp |
DateTime |
A hora do sistema do último evento de saída da consulta. |
QueryTotalConsumedEventLatency |
Double |
A latência total (em milissegundos) de todos os eventos consumidos pela consulta. |
QueryTotalProducedEventLatency |
Double |
A latência total (em milissegundos) de todos os eventos produzidos pela consulta. |
QueryTotalOutgoingEventLatency |
Double |
A latência total (em milissegundos) de todos os eventos de saída da consulta. |
QueryLastProducedCtiTimestamp |
DateTime |
O carimbo de data/hora (na hora do aplicativo) do último CTI produzido pela consulta. |
Resiliência da consulta
Atributo |
Tipo de informação |
Tipo de .NET Framework |
Descrição |
---|---|---|---|
QueryLastCheckpointBeginTime |
N |
DateTime |
A hora em que o último ponto de verificação da consulta começou. Não estará presente se um ponto de verificação nunca tiver sido obtido, ou se a consulta for interrompida ou anulada. |
QueryLastCheckpointEndTime |
N |
DateTime |
A hora em que o último ponto de verificação da consulta foi concluído. Não estará presente se um ponto de verificação nunca tiver sido obtido, ou se a consulta for interrompida ou anulada. |
QueryLastCheckpointSize |
N |
Int64 |
O tamanho em bytes do último ponto de verificação da consulta. Não estará presente se um ponto de verificação nunca tiver sido obtido. |
QueryIsResilient |
N |
Booliano |
True se a consulta estiver configurada para resiliência (independentemente do estado do servidor). Caso contrário, False. |
[TOP]
Diagnóstico do fluxo publicado
A tabela a seguir lista as métricas retornadas para um fluxo publicado. Consulte Compondo consultas em tempo de execução no Guia do Desenvolvedor para saber mais sobre fluxos publicados. Observe que cada consulta também tem um fluxo publicado implícito - os detalhes desse fluxo publicado serão exibidos como parte do diagnóstico de consulta.
Atributo |
Tipo de informação |
Tipo de dados |
Tipo de .NET Framework |
Descrição |
---|---|---|---|---|
PublishedStreamId |
S |
Number |
Int64 |
A ID do fluxo publicado. |
PublishedStreamEventShape |
S |
String |
String |
A forma do evento processado pelo fluxo publicado - um de Ponto, Intervalo ou Borda. |
PublishedStreamEventType |
S |
String |
String |
Uma cadeia de caracteres que contém o tipo de evento representado em XML. |
PublishedStreamProducerCount |
S |
Number |
Int32 |
Contagem de produtores de eventos no fluxo; valor 0 ou 1. |
PublishedStreamConsumerCount |
S |
Number |
Int32 |
Contagem de clientes de eventos do fluxo. |
PublishedStreamEventCount |
S |
Number |
Int64 |
Contagem de eventos no fluxo publicado. |
PublishedStreamTotalEventCount |
S |
Número |
Int64 |
Contagem total de eventos em todos os fluxos publicados. |
[TOP]
Diagnóstico do servidor
Servidor
A tabela a seguir lista as métricas no nível do servidor (servidor StreamInsight).
Atributo |
Tipo de dados |
Tipo de .NET Framework |
Descrição |
---|---|---|---|
ServerVersion |
String |
String |
Cadeia de caracteres da versão do assembly do servidor. |
Gerenciador de eventos
A tabela a seguir lista as métricas no nível do servidor (servidor StreamInsight) que podem ser retornadas para o gerenciador de eventos.
Atributo |
Tipo de dados |
Tipo de .NET Framework |
Descrição |
---|---|---|---|
AllEventsCount |
Number |
Int64 |
Contagem de eventos ativos (alocados) no servidor do StreamInsight. |
AllEventsMemory |
Number |
Int64 |
Quantidade de memória usada por todos os eventos ativos no sistema. |
Gerenciador de consultas
A tabela a seguir lista as métricas no nível do servidor (servidor StreamInsight) que podem ser retornadas para o gerenciador de plano de consulta.
Atributo |
Tipo de dados |
Tipo de .NET Framework |
Descrição |
---|---|---|---|
AllQueriesCount |
Number |
Int64 |
Total de consultas em execução, anuladas ou suspensas no servidor do StreamInsight (em execução e concluídas). Uma consulta concluída implica a invocação do método Stopped() pelo adaptador em resposta a uma solicitação de desligamento da consulta, ou a anulação da consulta. |
AllQueriesStreamCount |
Number |
Int64 |
Total de operadores nas consultas. |
AllQueriesOperatorCount |
Number |
Int64 |
Total de fluxos nas consultas. |
Consultas (no nível do servidor)
As métricas de diagnóstico de consulta no nível do servidor (servidor StreamInsight) são uma união das três tabelas que mostram as métricas agregadas para a consulta, o operador e o fluxo. Além disso, as métricas de latência de consulta também são fornecidas por esta exibição de diagnóstico. Duas das métricas são explicadas aqui para destacar seu significado.
Atributo |
Tipo de dados |
Tipo de .NET Framework |
Descrição |
---|---|---|---|
StreamEventCount |
Number |
Int64 |
O número total de eventos em todos os fluxos lógicos em todas as consultas. Essa é a contagem cumulativa de eventos em todos os fluxos. Os fluxos de consultas diferentes podem manter referências a esses eventos. Portanto, se você somar essa contagem em consultas, talvez pareça que a memória do fluxo da contagem total de eventos excedeu a capacidade física do computador que está executando o servidor do StreamInsight. |
OperatorIndexEventCount |
Number |
Int64 |
Contagem cumulativa de eventos em todos os operadores. Essa é a contagem cumulativa de eventos em todos os operadores. Os operadores de consultas diferentes podem manter referências a esses eventos. Portanto, se você totalizar essa contagem em consultas, talvez pareça que a memória da contagem total de eventos excedeu a capacidade física do computador no qual o servidor StreamInsight está em execução. Portanto, é importante interpretar esse número como localizado em determinada consulta, e não em várias consultas. |
Resiliência do servidor
Atributo |
Tipo de informação |
Tipo de .NET Framework |
Descrição |
---|---|---|---|
ServerLastRecoveryBeginTime |
N |
DateTime |
A hora em que o servidor iniciou seu último processo de recuperação. |
ServerLastRecoveryEndTime |
N |
DateTime |
A hora em que o servidor concluiu seu último processo de recuperação. |
ServerIsResilient |
N |
Booliano |
True se o servidor estiver configurado para resiliência. Caso contrário, False. |
[TOP]
Acessando o diagnóstico com o PowerShell
É possível usar o PowerShell para acessar informações de capacidade de gerenciamento ou gerenciar metadados de uma instância hospedada do StreamInsight em execução. Os seguintes exemplos usam o Powershell 2.0. Na consulta, eles usam o aplicativo de exemplo ObjectModel.cs em execução em um host do StreamInsight.
O exemplo a seguir carrega as DLLs Microsoft.ComplexEventProcessing do GAC (cache de assembly global).
PS C:\> [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.ComplexEventProcessing")
Aqui está o conjunto de resultados.
GAC Version Location
------ ----------- -------------------------------------------------------------------------
True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.ComplexEventProcessing\10.0.0.0__89845dcd8080cc91\Micro...
O exemplo a seguir retorna os métodos e as propriedades que podem ser acessados na instância do StreamInsight em execução.
PS C:\> $server = [Microsoft.ComplexEventProcessing.Server]::Connect("https://localhost/StreamInsight")
PS C:\> $server | gm
TypeName: Microsoft.ComplexEventProcessing.Server
Aqui está o conjunto de resultados.
Name MemberType Definition
------------------------------ ---------- ----------------
ClearDiagnosticSettings Method System.Void ClearDiagnosticSettings(System.Uri name)
CreateApplication Method Microsoft.ComplexEventProcessing.Application CreateApplication(string name)
CreateManagementService Method Microsoft.ComplexEventProcessing.ManagementService.IManagementService CreateManag...
Dispose Method System.Void Dispose()
Equals Method bool Equals(System.Object obj)
GetDiagnosticSettings Method Microsoft.ComplexEventProcessing.DiagnosticSettings GetDiagnosticSettings(System....
GetDiagnosticView Method Microsoft.ComplexEventProcessing.DiagnosticView GetDiagnosticView(System.Uri name)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
SetDiagnosticSettings Method System.Void SetDiagnosticSettings(System.Uri name, Microsoft.ComplexEventProcessi...
ToString Method string ToString()
Applications Property System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=2.0.0....
IsEmbedded Property System.Boolean IsEmbedded {get;}
O exemplo a seguir retorna as métricas no nível do servidor (servidor StreamInsight) para o gerenciador de eventos.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/EventManager")
PS C:\> $dv
Aqui está o conjunto de resultados.
Key Value
------------------------------ -----
AllEventsCount 19
AllEventsMemory 249856
O exemplo a seguir retorna as métricas de servidor (servidor StreamInsight) para o gerenciador de planos.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/PlanManager")
PS C:\> $dv
Aqui está o conjunto de resultados.
Key Value
----------------------- -----
AllQueriesCount 14
AllQueriesStreamCount 50
AllQueriesOperatorCount 38
O exemplo a seguir retorna as métricas da consulta TrafficSensorQuery.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")
PS C:\> $dv
Aqui está o conjunto de resultados.
Key Value
------------------------------------------ --------------
QueryState Suspended
QueryStartTime 9/22/2009 5:34:02 PM
QueryEndTime 9/22/2009 5:34:03 PM
StreamEventCount 0
OperatorCount 0
QueryTotalIncomingEventCount 553
QueryTotalConsumedEventCount 553
QueryTotalProducedEventCount 192
QueryTotalOutgoingEventCount 192
QueryLastIncomingEventSystemTime 9/22/2009 5:34:02 PM
QueryLastConsumedEventSystemTime 9/22/2009 5:34:02 PM
QueryLastProducedEventSystemTime 9/22/2009 5:34:03 PM
QueryLastOutgoingEventSystemTime 9/22/2009 5:34:03 PM
QueryTotalConsumedEventsLatency 14527.833
QueryTotalProducedEventsLatency 62457.0953
QueryTotalOutgoingEventsLatency 63553.2049
QueryLastProducedCTITimestamp 12/31/9999 11:59:59 PM
StreamMemoryIncludingEvents 0
OperatorIndexEventCount 0
OperatorEventMemory 0
OperatorIndexMemory 65870
OperatorTotalScheduledCount 708
OperatorTotalCpuUsage 670
[TOP]