Monitoring StreamInsight Performance Counters and Events

You can now use your existing diagnostic infrastructure to monitor and troubleshoot StreamInsight processes and queries with Performance Monitor and Event Viewer.

In This Topic

  • Performance Counters

    • Configuring performance counters

    • List of performance counters

    • How can performance counters help me?

  • Administrative Events

    • Configuring administrative logging

    • List of administrative events

Performance Counters

StreamInsight installs and configures performance counters. You can monitor these counters with Performance Monitor or another monitoring tool.

Performance counters are available for the following StreamInsight objects:

  • Servers

  • Queries

  • Input Adapters

  • Resiliency

Configuring performance counters

The performance counters are installed and configured when you install StreamInsight. This setup option is not configurable.

Counters in the Servers category are on by default and cannot be turned off. Counters in the Queries and Input Adapters categories are off by default. When you turn on counters for a query, then counters for the associated input adapters are turned on also. When you restart an instance of StreamInsight, these default behaviors are restored.

How to turn on counters for a single query

You turn on counters for a specific query and its associated input adapters by enabling a new Aspect in a call to Server.SetDiagnosticSettings.

For example, you can use the following code to turn on the performance counters for the query with the Uri, cep:/Server/Application/MyApp/Query/MyQuery.

DiagnosticSettings settings = server.GetDiagnosticSettings(new Uri(“cep:/Server/Application/MyApp/Query/MyQuery”);
Settings.Aspects |= DiagnosticAspect.PerformanceCounters;
server.SetDiagnosticSettings(new Uri(“cep:/Server/Application/MyApp/Query/MyQuery”), settings);

You can use the following code to turn off the performance counters for the same query.

DiagnosticSettings settings = server.GetDiagnosticSettings(new Uri(“cep:/Server/Application/MyApp/Query/MyQuery”);
Settings.Aspects & ~DiagnosticAspect.PerformanceCounters;
server.SetDiagnosticSettings(new Uri(“cep:/Server/Application/MyApp/Query/MyQuery”), settings);

How to turn on counters for all queries

You can also use a foreach loop to turn on the performance counters for all the queries and input adapters in an application.

foreach (var q in application.Queries)
   {
       DiagnosticSettings settings = server.GetDiagnosticSettings(q.Value.Name);
       settings.Aspects |= DiagnosticAspect.PerformanceCounters;
       server.SetDiagnosticSettings(q.Value.Name, settings);
   }

For more information about the classes and methods used in the preceding code samples, see the following topics:

[TOP]

List of performance counters

Naming conventions

Strings such as application names that are longer than 16 characters are shortened according to the following formula: first 10 characters + 2 periods + last 4 characters.

In the specific naming conventions described below, uniqueid refers to the ID of the object at run time.

Server counters

Naming convention for server instances: %PROCESSNAME%[uniqueid], where %PROCESSNAME% is the name of the hosting process.

Name

Description

Events in input queues

Number of events in input queues of all queries.

Events in output queues

Number of events in output queues of all queries.

Memory

Total memory (in bytes) used for all streams, events, and operator indexes.

Running queries

Number of queries currently running.

Query counters

Naming convention for query instances: %APPLICATION NAME%,%QUERY NAME%[uniqueid],%SERVER_INSTANCE_NAME%, where %SERVER_INSTANCE_NAME% is the instance name of the server to which the query belongs.

Name

Description

Average produced event latency

The average latency (in milliseconds) of events produced by the query each second.

CTIs produced

Number of CTIs produced.

Events in output queue

Number of events in output queue.

Events produced

Number of events produced.

Memory

Total memory (in bytes) used, including events, indexes, and streams.

Produced events/sec

Number of events produced per second.

Input Adapter counters

Naming convention for adapter instances: %APPLICATION NAME%,%QUERY NAME%,%ADAPTER NAME%[uniqueid],%SERVER_INSTANCE_NAME%.

Name

Description

Adjusted events

Number of events whose temporal metadata was adjusted according to the AdvanceTimeSettings policy.

CTIs input

Number of CTIs sent to input queue.

Dropped events

Number of events dropped according to the AdvanceTimeSettings policy.

Events in input queue

Number of events in input queue (including CTIs).

Incoming events/sec

Number of events received by the adapter per second.

Resumes/sec

Number of state transitions into the running state per second.

Suspensions/sec

Number of state transitions into the suspended state per second.

Total events enqueued

Number of events enqueued.

[TOP]

How can performance counters help me?

Here are some examples of the scenarios in which performance counters can help you to understand, monitor, and troubleshoot your StreamInsight applications:

  • Server scenarios

    • Memory footprint. How much memory is the embedded instance of StreamInsight, separately from the hosting application?

    • Capacity planning. How many queries can I run on this server before performance degrades?

    • Post-mortem analysis. How many queries were running when the server crashed?

  • Query scenarios

    • Throughput monitoring. Where is the bottleneck?

    • Latency monitoring.

[TOP]

Administrative Events

StreamInsight logs events to the Windows Application event log. You can review this log with Event Viewer or another monitoring tool. The logged events help you to monitor state changes and troubleshoot anomalies that may occur in your StreamInsight applications.

Events are logged by the following StreamInsight objects:

  • Server

  • Query

Configuring administrative logging

Administrative logging is on by default. You can turn administrative logging off and on only at the level of the StreamInsight instance (cep:/Server/).

How to turn off administrative logging

DiagnosticSettings settings = server.GetDiagnosticSettings(new Uri("cep:/Server/"));
settings.Aspects &= ~DiagnosticAspect.AdminLog;
server.SetDiagnosticSettings(new Uri("cep:/Server/"), settings);

How to turn on administrative logging

DiagnosticSettings settings = server.GetDiagnosticSettings(new Uri("cep:/Server/"));
settings.Aspects |= DiagnosticAspect.AdminLog;
server.SetDiagnosticSettings(new Uri("cep:/Server/"), settings);

[TOP]

List of administrative events

The following table lists the events that you may see in the event log.

The Source for all StreamInsight administrative events is StreamInsight.

Query events

Symbol

Event ID

Level

Message

Parameters

QueryInitializing

11001

Information

Query {0} is initializing.

Query Uri

QueryRunning

11002

Information

Query {0} is running.

Query Uri

QueryCheckpointing

11003

Information

Query [0} is checkpointing.

Query Uri

QueryStopping

11004

Information

Query {0} is stopping.

Query Uri

QuerySuspended

11005

Information

Query {0} is suspended.

Query Uri

QueryCompleted

11006

Information

Query {0} is completed.

Query Uri

QueryAborted

11007

Warning

Query {0} is aborted.

Query Uri

QueryStopped

11008

Information

Query {0} is stopped.

Query Uri

QueryError

11500

Warning

Query {0} encountered an exception. Exception details: {1}

Query Uri, exception message.

QueryRecoveryError

11501

Error

Query {0} encountered an exception during recovery. Exception details: {1}

Query Uri, exception message.

QueryCheckpointError

11502

Error

Query {0} encountered an exception during checkpointing. Exception details: {1}

Query Uri, exception message.

Server events

Symbol

Event ID

Level

Message

Parameters

ServerCreated

1000

Information

Server created.

ServerDisposed

1001

Information

Server disposed.

[TOP]