Наблюдение за сервером служб StreamInsight и запросами
При наблюдении за состоянием сервера StreamInsight выполняется также отслеживание общей исправности системы и производительности запросов. Данные о состоянии сервера StreamInsight перехватываются путем отслеживания запросов StreamInsight, выполняемых на сервере, а также контроля использования системных ресурсов сущностями, составляющими запрос StreamInsight.
В этом разделе
Создание представлений диагностики
Какие проблемы можно устранять с помощью представлений диагностики
Состояния запроса
Основные сведения о наблюдении на уровне запроса
Наблюдение за задержкой запроса
Список диагностических свойств
Диагностика операторов
Диагностика адаптера
Диагностика потоков
Диагностика запроса
Диагностика опубликованного потока
Диагностика сервера
Доступ к диагностике с использованием PowerShell
Создание представлений диагностики
Данные наблюдения можно получать с помощью API представлений диагностики. Перед использованием этого API необходимо включить веб-службу управления во внедренном и изолированном режиме развертывания сервера и подключить клиентское приложение к серверу через эту службу. Дополнительные сведения см. в разделе Публикация и соединение с сервером служб StreamInsight.
Наблюдение за сервером и запросами также можно выполнять с помощью функций диагностики в отладчике потока событий StreamInsight, который использует API диагностики для вывода результатов в графическом пользовательском интерфейсе. Следует подключить отладчик к активному серверу StreamInsight и просматривать различные объекты на сервере с помощью обозревателя объектов. Щелкните любой объект правой кнопкой мыши, чтобы получить диагностические данные времени выполнения для этой сущности. Дополнительные сведения см. в разделе Использование отладчика потока событий StreamInsight.
Доступ ко всем объектам на сервере выполняется с использованием URI на основе иерархической схемы именования. Эта схема начинается с сервера и продолжается до операторов запроса и потоков событий. Диагностические данные уровня сервера можно получать из следующих объектов.
cep:/Server
cep:/Server/PlanManager
cep:/Server/EventManager
cep:/Server/Query
Для ссылки на конкретный запрос применяется схема именования cep:/Server/Application/ApplicationName/Query/QueryName.
Для ссылки на отдельные операторы и потоки, принадлежащие запросу, используйте следующие схемы именования. Обратите внимание, что адаптеры также считаются операторами в запросе. Используйте для адаптеров правила работы с операторами.
cep:/Server/Application/имя_приложения/Query/имя_запроса/Operator/имя_оператора
cep:/Server/Application/имя_приложения/Query/имя_запроса/Stream/имя_потока
Например, для ссылки на запрос с именем TrafficSensorQuery в приложении с именем ObjectModelSample используйте конструкцию cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery.
Диагностические сведения для этих объектов можно получить путем вызова метода GetDiagnosticView(). Диагностические параметры при получении можно фильтровать по двум измерениям — аспекту (память, ЦП и другие атрибуты, относящиеся к параметру) и уровню (важности). Такие условия фильтрации задаются с помощью методов SetDiagnosticsSettings() и ClearDiagnosticSettings(), которые устанавливают или сбрасывают определенные параметры для указанного запроса. Следующий пример взят из образца ExplicitServer.cs. В нем выводятся диагностические данные по различным объектам для выполняющегося запроса. В примере предполагается, что зарегистрирован экземпляр StreamInsight с именем 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);
}
}
}
Дополнительные сведения об API, используемом в предыдущем примере, см. в разделе DiagnosticView. Дополнительные сведения об использовании прослушивателей трассировок см. в разделе Прослушиватели трассировок.
[В начало]
Какие проблемы можно устранять с помощью представлений диагностики
Диагностические представления можно использовать для устранения проблем нескольких типов в приложении StreamInsight. Примеры.
Основная причина |
Признаки |
---|---|
Определяемый пользователем модуль работает медленно |
Большая системная задержка |
Определяемый пользователем модуль активировал исключение |
Зависший или завершенный аварийно запрос |
Входной адаптер выдает данные медленно |
Большая задержка данных |
Входной адаптер не формирует CTI |
Зависший запрос |
Выходной адаптер не справляется с работой |
Большая системная задержка |
Однако диагностические представления обычно нельзя использовать для устранения проблем на уровне сервера или локальной сети, которые могут затрагивать конкретные приложения StreamInsight. К проблемам такого рода относятся медленная работа сети, низкое быстродействие дискового ввода-вывода, недостаточный объем памяти и конкуренция за ресурсы на сервере.
[В начало]
Состояния запроса
За время своего существования запрос сменяет несколько состояний. Эти состояния описаны в следующей таблице.
Состояние запроса |
Описание |
---|---|
Остановлено |
Запрос больше не является активным. Не сохранен план запроса. Это состояние, как правило, возникает после вызова метода Stop запроса. |
Инициализация |
Это состояние, как правило, существует после одного из следующих событий.
|
Выполнение |
Запрос обрабатывает события. Это состояние, как правило, возникает после вызова метода Start запроса. |
Назначение контрольных точек |
Запрос выполняется, и происходит создание контрольной точки. Это состояние, как правило, существует после вызова метода BeginCheckpoint. |
Останавливается |
Пользователь запросил останов запроса. Это состояние, как правило, возникает после вызова метода Stop запроса. |
Приостановлено |
Восстановление эластичного запроса окончилось неуспешно, либо не удалось выполнить восстановление, поскольку сервер был запущен без поддержки эластичности. |
Завершено |
Запрос завершился успешно. Поэтому входные адаптеры ставили в очередь маркеры конца потока, а выходной адаптер их обрабатывал. |
Прерван |
Произошел сбой. Запрос все еще доступен в диспетчере планов. |
[В начало]
Основные сведения о наблюдении на уровне запроса
Если предусмотрено отслеживание производительности запросов на сервере StreamInsight, то можно использовать атрибуты контроля на уровне запроса, предоставляемые в API ManagementService. Следующее изображение потока событий поможет представить способ использования этих атрибутов наблюдения.
На изображении имеются четыре точки измерения, которые записывают прохождение событий (слева направо) от входного адаптера через запрос к выходному адаптеру. В этих точках измерения снимаются следующие показатели.
Входящие — записывает входящие события на всех входных адаптерах. Это мера скорости поступления исходных входных событий в запрос из входного адаптера.
Используемые — записывает события, используемые сервером StreamInsight во всех операторах, которые следуют непосредственно за входными адаптерами. Это мера для событий, поставленных в очередь на сервере.
Созданные — записывает все события, исходящие из последнего оператора, расположенного непосредственно перед выходным адаптером. Это мера для событий, удаленных из очереди запросов.
Исходящие — записывает все события, исходящие из выходного адаптера. Это мера скорости для выхода событий с сервера StreamInsight в приемник.
Ориентируясь по этой иллюстрации, можно определить соответствующий возвращаемый атрибут на основании интересующей области потока событий. Например, если интерес представляет количество событий, обрабатываемых запросом, то можно использовать атрибут QueryTotalConsumedEventCount. В ином случае, если вас интересует события, которые были выработаны запросом, используйте атрибут QueryTotalProducedEventCount.
[В начало]
Наблюдение за задержкой запроса
Задержка представляет собой совокупное число, рассчитанное для всех поступлений и выходов событий на определенном шлюзе (входящих, созданных, использованных или исходящих). Среднюю задержку между измерениями, выполненными в двух точках в один момент времени, можно подсчитать как (S2 – S1) / (C2 – C1), где S — совокупная сумма задержек на любом данном шлюзе, а C — число событий в этой шлюзовой точке.
Например, чтобы вычислить среднюю задержку обработки, измерьте общую задержку (QueryTotalConsumedEventLatency) с отметкой времени t1 (S1) и общее число обработанных событий (QueryTotalConsumedEventCount) с отметкой времени t1 (C1). Затем нужно повторить те же измерения для разных отметок времени (t2), а потом рассчитать среднюю задержку использованных событий как (S2 — S1)/ (C2 — C1).
Чтобы определить эффективность работы адаптеров по передаче событий в запрос и из запроса, а также возможную скорость обработки событий сервером StreamInsight, можно использовать атрибуты с QueryTotalIncomingEventCount по QueryLastProducedCtiTimestamp.
Можно определить общий объем памяти, расходуемой операторами, просуммировав значения атрибутов OperatorEventMemory и OperatorIndexMemory.
[В начало]
Диагностические свойства
Представления диагностики возвращают атрибуты на нескольких уровнях гранулярности объектов: сервер, запрос, опубликованные потоки, оператор и адаптер.
Диагностические данные рассчитаны на агрегирование объектов более мелкой гранулярности в объекты более крупной гранулярности в иерархии. Для каждого из этих уровней можно получить данные диагностики следующих видов.
Статические данные (S) возвращают свойство объекта. Статические данные не изменяются при изменении условий операции запроса.
Нестатистические данные (N) возвращают статистику, в которую не включены результаты статистической обработки от дочерних объектов к их родительским объектам.
Статистические данные (A) возвращают статистику, собранную при статистической обработке от дочерних объектов к их родительскому объекту.
Следует учитывать, что перечисленные ниже свойства диагностических представлений доступны в DiagnosticViewProperty.
Диагностика операторов
Метаданные
В следующей таблице перечислены свойства метаданных, которые описывают отдельные операторы в запросе. Значения этих свойств не изменяются.
Имя свойства |
Тип |
Описание |
---|---|---|
OperatorId |
Int64 |
Идентификатор для оператора. |
OperatorKind |
String |
Тип оператора. |
OperatorQueryId |
Int64 |
Идентификатор для запроса, в котором находится текущий оператор. |
OperatorEventType |
String |
XML-представление выходного типа оператора. Для G&A это тип поля группирования, а не вывода. |
Неагрегированные статистические данные
В следующей таблице перечислены статистические данные, которые агрегированы по всем логическим экземплярам оператора, но не агрегированы вплоть до статистических данных запроса.
Имя свойства |
Тип |
Описание |
---|---|---|
OperatorTotalInputEventCount |
Int64 |
Общее количество входных событий для оператора. |
OperatorMinInputEventCountAcrossWorkers |
Int64 |
Минимальное количество входных событий, обработанных во всех рабочих потоках для оператора. |
OperatorMaxInputEventCountAcrossWorkers |
Int64 |
Максимальное количество входных событий, обработанных во всех рабочих потоках для оператора. |
OperatorTotalOutputEventCount |
Int64 |
Общее количество событий выхода для оператора. |
OperatorMinOutputEventCountAcrossWorkers |
Int64 |
Минимальное количество событий выхода, сформированных во всех рабочих потоках для оператора. |
OperatorMaxOutputEventCountAcrossWorkers |
Int64 |
Максимальное количество событий выхода, сформированных во всех рабочих потоках для оператора. |
OperatorLastOutputCtiTimestamp |
DateTime |
Отметка времени последнего CTI (по времени приложения), созданного оператором. |
OperatorTotalOutputCtiCount |
Int64 |
Общее число событий CTI, созданных оператором. |
OperatorMinOutputCtiCountAcrossWorkers |
Int64 |
Минимальное количество событий CTI, созданных во всех рабочих потоках для оператора. |
OperatorMaxOutputCtiCountAcrossWorkers |
Int64 |
Максимальное количество событий CTI, созданных во всех рабочих потоках для оператора. |
OperatorEventCountSinceLastCti |
Int64 |
Агрегированное количество событий, созданных оператором, начиная с последнего CTI для всех рабочих потоков оператора. Для оператора Cleanse это значение, как правило, равно 0 (нулю). |
OperatorMinIndexEventCountAcrossWorkers |
Int64 |
Минимальное количество событий в индексах в рабочих потоках оператора. |
OperatorMaxIndexEventCountAcrossWorkers |
Int64 |
Максимальное количество событий в индексах в рабочих потоках оператора. |
OperatorMinEventMemoryAcrossWorkers |
Int64 |
Минимальный объем памяти (в байтах), используемый событиями в индексах во всех рабочих потоках оператора. |
OperatorMaxEventMemoryAcrossWorkers |
Int64 |
Максимальный объем памяти (в байтах), используемый событиями в индексах во всех рабочих потоках оператора. |
OperatorMinIndexMemoryAcrossWorkers |
Int64 |
Минимальный объем памяти (в байтах), используемый индексами во всех рабочих потоках оператора. |
OperatorMaxIndexMemoryAcrossWorkers |
Int64 |
Максимальный объем памяти (в байтах), используемый индексами во всех рабочих потоках оператора. |
OperatorNumberOfWorkers |
Int32 |
Количество вычислительных единиц, выполняющих данных оператор. |
OperatorGroupIdField |
String |
Имя поля идентификатора группы для оператора группирования и применения. |
OperatorMinCpuUsageAcrossWorkers |
Int64 |
Минимальная загрузка процессора, в миллисекундах, в рабочих потоках оператора. |
OperatorMaxCpuUsageAcrossWorkers |
Int64 |
Максимальная загрузка процессора, в миллисекундах, в рабочих потоках оператора. |
OperatorMinEventAdjustedCount |
Int64 |
Минимальное количество событий, откорректированных в рабочих потоках оператора. |
OperatorMaxEventAdjustedCount |
Int64 |
Максимальное количество событий, откорректированных в рабочих потоках оператора. |
OperatorTotalEventAdjustedCount |
Int64 |
Общее количество событий, откорректированных в рабочих потоках оператора. |
OperatorMinEventDroppedCount |
Int64 |
Минимальное количество событий, удаленных в рабочих потоках оператора. |
OperatorMaxEventDroppedCount |
Int64 |
Максимальное количество событий, удаленных в рабочих потоках оператора. |
OperatorTotalEventDroppedCount |
Int64 |
Общее количество событий, удаленных в рабочих потоках оператора. |
Агрегированные статистические данные
В следующей таблице приведены статистические данные, агрегированные по всем логическим экземплярам оператора, вплоть до статистических данных запроса.
Имя свойства |
Тип |
Описание |
---|---|---|
OperatorIndexEventCount |
Int64 |
Память, используемая индексами по всем активным логическим экземплярам оператора. |
OperatorEventMemory |
Int64 |
Объем памяти (в байтах), используемый событиями в индексах по всем логическим экземплярам оператора. |
OperatorIndexMemory |
Int64 |
Объем памяти (в байтах), используемый индексами в операторе. |
OperatorTotalCpuUsage |
Int64 |
Совокупная загрузка ЦП оператором в миллисекундах. |
OperatorTotalScheduledCount |
Int64 |
Общее число раз планирования оператора. |
[В начало]
Диагностика адаптера
В данном разделе перечислены диагностические свойства, характерные для адаптеров. Адаптеры представляют собой операторы специального типа, поэтому включают все диагностические свойства, перечисленные для операторов.
Метаданные
В следующей таблице перечислены свойства метаданных, которые описывают отдельные адаптеры. Примечание. значение свойства AdapterState может измениться.
Имя свойства |
Тип |
Описание |
---|---|---|
AdapterStateTransitionHistory |
String |
XML-представление последних нескольких смен состояния адаптера для каждого адаптера. |
Статистические данные
В следующей таблице перечислены статистические данные, характерные для адаптеров.
Имя свойства |
Тип |
Описание |
---|---|---|
AdapterTotalSuspendCount |
Int64 |
Общее количество приостановок всех экземпляров адаптера. |
AdapterMinSuspendCountAcrossWorkers |
Int64 |
Минимальное число раз приостановки экземпляра адаптера. |
AdapterMinSuspendCountAcrossWorkers |
Int64 |
Максимальное количество приостановок экземпляра адаптера. |
AdapterTotalTimeInSuspendedState |
TimeSpan |
Общее время пребывания всех экземпляров адаптера в состоянии приостановки. |
AdapterMinTimeInSuspendedStateAcrossWorkers |
TimeSpan |
Минимальное время, в течение которого экземпляр адаптера находился в приостановленном состоянии. |
AdapterMaxTimeInSuspendedStateAcrossWorkers |
TimeSpan |
Максимальное время, в течение которого экземпляр адаптера находился в приостановленном состоянии. |
AdapterTotalTimeInNonSuspendedState |
TimeSpan |
Общее время пребывания всех экземпляров адаптера состояниях, отличных от приостановки. |
AdapterMinTimeInNonSuspendedStateAcrossWorkers |
TimeSpan |
Минимальное время, в течение которого экземпляр адаптера находился в состоянии, отличном от приостановки. |
AdapterMaxTimeInNonSuspendedStateAcrossWorkers |
TimeSpan |
Максимальное время, в течение которого экземпляр адаптера находился в состоянии, отличном от приостановки. |
AdapterFirstCtiTimestamp |
DateTime |
Отметка времени первого CTI (во времени приложения), созданного или использованного адаптером. |
AdapterNumberOfRunningWorkers |
Int32 |
Число экземпляров адаптера в состоянии «Выполняется». |
AdapterNumberOfStoppedWorkers |
Int32 |
Число экземпляров адаптера в состоянии «Остановлено». |
AdapterNumberOfSuspendedWorkers |
Int32 |
Число экземпляров адаптера в состоянии «Приостановлено». |
Поддержка эластичности адаптера
Атрибут |
Сведения тип |
Тип .NET Framework |
Описание |
---|---|---|---|
InputAdapterLastCheckpointHighWaterMark |
N |
DateTime |
Верхняя конечная точка времени приложения, использованная для последней контрольной точки данного потока. Уникально определяет точку во входном потоке, при этом поток должен воспроизвести в ходе восстановления все события после этой точки. |
OutputAdapterLastCheckpointEventOffset |
N |
Int32 |
Количество событий после верхней конечной точки времени приложения, указывающей место в выходном потоке, где была получена последняя контрольная точка. |
OutputAdapterLastCheckpointHighWaterMark |
N |
DateTime |
Верхняя конечная точка времени приложения в исходящем потоке для последней контрольной точки, созданной данным запросом. |
[В начало]
Диагностика потоков
Метаданные
В следующей таблице перечислены свойства метаданных, которые описывают отдельные потоки в запросе. Значения этих свойств не изменяются.
Имя свойства |
Тип |
Описание |
---|---|---|
StreamId |
Int64 |
Идентификатор потока. |
StreamQueryId |
Int64 |
Идентификатор запроса для потока. |
StreamSourceOperatorId |
Int64 |
Идентификатор исходного оператора для потока. |
StreamTargetOperatorId |
Int64 |
Идентификатор целевого оператора для потока. |
StreamSystemInstance |
Boolean |
Значение типа Boolean, указывающее, является ли поток системным. |
Неагрегированные статистические данные
В следующей таблице перечислены статистические данные, которые агрегированы по всем логическим экземплярам потока, но не агрегированы вплоть до статистических данных запроса.
Имя свойства |
Тип |
Описание |
---|---|---|
StreamTotalInputEventCount |
Int64 |
Общее число входных событий для потока. |
StreamMinEventCountAcrossWorkers |
Int64 |
Минимальное количество событий во всех экземплярах потока. |
StreamMaxEventCountAcrossWorkers |
Int64 |
Максимальное число событий во всех экземплярах потока. |
StreamNumberOfWorkers |
Int32 |
Количество экземпляров данного потока. |
StreamMinInputEventCountAcrossWorkers |
Int64 |
Минимальное число входных событий во всех экземплярах потока. |
StreamMaxInputEventCountAcrossWorkers |
Int64 |
Максимальное количество входных событий для экземпляров потока. |
StreamMinMemoryIncludingEventsAcrossWorkers |
Int64 |
Минимальный используемый объем памяти (в байтах) по экземплярам потока. |
StreamMaxMemoryIncludingEventsAcrossWorkers |
Int64 |
Максимальный используемый объем памяти (в байтах) по экземплярам потока. |
Агрегированные статистические данные
В следующей таблице приведены статистические данные, которые агрегированы по всем логическим экземплярам потока, причем агрегированы вплоть до статистических данных запроса.
Имя свойства |
Тип |
Описание |
---|---|---|
StreamEventCount |
Int64 |
Общее количество событий по всем экземплярам потока. |
StreamMemoryIncludingEvents |
Int64 |
Объем памяти (в байтах), используемый потоком и всеми событиями в нем. |
[В начало]
Диагностика запроса
Запросы содержат агрегированные статистические данные из составляющих их операторов и потоков, наряду со своими собственными статистическими данными. В следующих разделах подробно описаны статистические данные, характерные для запросов.
Если запрос не выполняется, то диагностика возвращает только свойства QueryState (Suspended или Stopped) и IsResilient (true или false).
Метаданные
В следующей таблице перечислены свойства метаданных, которые описывают отдельные запросы. Значения этих свойств не изменяются.
Имя свойства |
Тип |
Описание |
---|---|---|
QueryState |
String |
Текущее состояние запроса. |
QueryStartTime |
DateTime |
Время начала запроса. |
QueryEndTime |
DateTime |
Время окончания запроса. |
QueryException |
String |
Последнее исключение, которое возникло в запросе. |
QueryCreationTime |
DateTime |
Время создания экземпляра запроса. |
QueryId |
Int64 |
Идентификатор запроса. |
QuerySystemInstance |
Boolean |
Логическое значение, указывающее, является ли запрос системным. |
QueryInstanceGroupId |
Int64 |
Идентификатор группы экземпляров запроса. |
Статистические данные
В следующей таблице перечислены статистические данные, характерные для запроса.
Имя свойства |
Тип |
Описание |
---|---|---|
QueryTotalIncomingEventCount |
Int64 |
Общее количество входящих событий для запроса. |
QueryTotalConsumedEventCount |
Int64 |
Общее количество событий, использованных запросом. |
QueryTotalProducedEventCount |
Int64 |
Общее количество событий, созданных запросом. |
QueryTotalOutgoingEventCount |
Int64 |
Общее количество исходящих событий для запроса. |
QueryLastIncomingEventTimestamp |
DateTime |
Системное время последнего входящего события для запроса. |
QueryLastConsumedEventTimestamp |
DateTime |
Системное время последнего обработанного события для запроса. |
QueryLastProducedEventTimestamp |
DateTime |
Системное время последнего созданного события для запроса. |
QueryLastOutgoingEventTimestamp |
DateTime |
Системное время последнего исходящего события для запроса. |
QueryTotalConsumedEventLatency |
Double |
Общая задержка (в миллисекундах) всех событий, использованных запросом. |
QueryTotalProducedEventLatency |
Double |
Общая задержка (в миллисекундах) для всех событий, созданных запросом. |
QueryTotalOutgoingEventLatency |
Double |
Общая задержка (в миллисекундах) для всех исходящих событий запроса. |
QueryLastProducedCtiTimestamp |
DateTime |
Отметка времени последнего CTI (по времени приложения), созданного запросом. |
Поддержка эластичности запроса
Атрибут |
Сведения тип |
Тип .NET Framework |
Описание |
---|---|---|---|
QueryLastCheckpointBeginTime |
N |
DateTime |
Время начала последней контрольной точки запроса. Время не указано, если контрольная точка не существует, а также если запрос остановлен или отменен. |
QueryLastCheckpointEndTime |
N |
DateTime |
Время завершения последней контрольной точки запроса. Время не указано, если контрольная точка не существует, а также если запрос остановлен или отменен. |
QueryLastCheckpointSize |
N |
Int64 |
Размер последней контрольной точки запроса в байтах. Размер не указан, если контрольная точка не существует. |
QueryIsResilient |
N |
Boolean |
Значение true, если запрос является эластичным (независимо от состояния сервера). Значение false — в противном случае. |
[В начало]
Диагностика опубликованного потока
В следующей таблице представлены показатели, которые возвращаются для опубликованного потока. Дополнительные сведения об опубликованных потоках см. в разделе Составление запросов во время выполнения в руководстве разработчика. Обратите внимание, что каждый запрос имеет неявный опубликованный поток. Сведения о таком опубликованном потоке отображаются как часть диагностики запроса.
Атрибут |
Информационный тип |
Тип данных |
Тип .NET Framework |
Описание |
---|---|---|---|---|
PublishedStreamId |
S |
Количество |
Int64 |
Идентификатор публикуемого потока. |
PublishedStreamEventShape |
S |
String |
String |
Форма события, обрабатываемого опубликованным потоком: точечное событие, интервальное или граничное. |
PublishedStreamEventType |
S |
String |
String |
Строка, содержащая тип события, представленного в XML. |
PublishedStreamProducerCount |
S |
Количество |
Int32 |
Счетчик производителей событий в потоке. Значение равно 0 или 1. |
PublishedStreamConsumerCount |
S |
Количество |
Int32 |
Счетчик потребителей событий из потока. |
PublishedStreamEventCount |
S |
Количество |
Int64 |
Счетчик событий в опубликованном потоке. |
PublishedStreamTotalEventCount |
S |
Количество |
Int64 |
Общий счетчик событий во всех опубликованных потоках. |
[В начало]
Диагностика сервера
Сервер
В следующей таблице приведены показатели, относящиеся ко всему серверу (StreamInsight).
Атрибут |
Тип данных |
Тип .NET Framework |
Описание |
---|---|---|---|
ServerVersion |
String |
String |
Строка версии сборки сервера. |
Диспетчер событий
В следующей таблице приведены показатели, относящиеся ко всему серверу (StreamInsight), которые могут быть возвращены для диспетчера событий.
Атрибут |
Тип данных |
Тип .NET Framework |
Описание |
---|---|---|---|
AllEventsCount |
Number |
Int64 |
Число событий, существующих (выделенных) на сервере StreamInsight. |
AllEventsMemory |
Number |
Int64 |
Объем памяти, используемой всеми событиями, существующими в системе. |
Диспетчер запросов
В следующей таблице перечислены показатели, относящиеся ко всему серверу (StreamInsight), которые могут быть возвращены для диспетчера планов запросов.
Атрибут |
Тип данных |
Тип .NET Framework |
Описание |
---|---|---|---|
AllQueriesCount |
Number |
Int64 |
Общее число выполняющихся, прерванных или приостановленных запросов на сервере StreamInsight (работающем или завершенном). Под завершенным запросом подразумевается, что адаптер вызвал метод Stopped() в ответ на требование отключения запроса, либо запрос был прерван. |
AllQueriesStreamCount |
Number |
Int64 |
Общее число операторов в запросах. |
AllQueriesOperatorCount |
Number |
Int64 |
Общее число потоков в запросах. |
Запросы (относящиеся ко всему серверу)
Диагностические показатели запроса, относящегося ко всему серверу (StreamInsight), представляют собой объединение этих трех таблиц, которое показывает агрегированные показатели для запроса, оператора и потока. Кроме того, это представление диагностики предоставляет показатели задержки на уровне запроса. Здесь подробно описаны два показателя, чтобы подчеркнуть их важность.
Атрибут |
Тип данных |
Тип .NET Framework |
Описание |
---|---|---|---|
StreamEventCount |
Number |
Int64 |
Общее количество событий во всех логических потоках для всех запросов. Это совокупное количество событий во всех потоках. Потоки из различных запросов могут сохранять ссылки на эти события, поэтому при сложении этого числа для разных запросов может оказаться, что объем памяти потоков для общего числа событий превышает физический объем памяти на компьютере StreamInsight. |
OperatorIndexEventCount |
Number |
Int64 |
Совокупное количество событий во всех операторах. Это совокупное число событий во всех операторах. Операторы из разных запросов могут поддерживать ссылки на эти события. Поэтому при сложении этого числа для разных запросов может оказаться, что память для общего числа событий превышает физический объем памяти компьютера, где работает сервер StreamInsight. Важно интерпретировать это число как локальное для определенного запроса, а не для всех запросов. |
Поддержка эластичности сервером
Атрибут |
Сведения тип |
Тип .NET Framework |
Описание |
---|---|---|---|
ServerLastRecoveryBeginTime |
N |
DateTime |
Время, когда сервер начал последний процесс восстановления. |
ServerLastRecoveryEndTime |
N |
DateTime |
Время, когда сервер завершил последний процесс восстановления. |
ServerIsResilient |
N |
Boolean |
Значение true, если сервер настроен на поддержку эластичности. Значение false — в противном случае. |
[В начало]
Доступ к диагностике с использованием PowerShell
Для получения доступа к сведениям об управляемости или управления метаданными на выполняемом, размещенном экземпляре StreamInsight можно использовать PowerShell. В следующих примерах используется Powershell 2.0. Для запроса в примерах используется образец приложения ObjectModel.cs, работающий на узле StreamInsight.
В следующем примере загружаются DLL-библиотеки Microsoft.ComplexEventProcessing из глобального кэша сборок (GAC).
PS C:\> [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.ComplexEventProcessing")
Ниже приводится результирующий набор.
GAC Version Location
------ ----------- -------------------------------------------------------------------------
True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.ComplexEventProcessing\10.0.0.0__89845dcd8080cc91\Micro...
В следующем примере показан возврат методов и свойств, доступ к которым можно получить на работающем экземпляре StreamInsight.
PS C:\> $server = [Microsoft.ComplexEventProcessing.Server]::Connect("https://localhost/StreamInsight")
PS C:\> $server | gm
TypeName: Microsoft.ComplexEventProcessing.Server
Ниже приводится результирующий набор.
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;}
В следующем примере возвращаются показатели уровня сервера StreamInsight для диспетчера событий.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/EventManager")
PS C:\> $dv
Ниже приводится результирующий набор.
Key Value
------------------------------ -----
AllEventsCount 19
AllEventsMemory 249856
В следующем примере возвращаются показатели уровня сервера StreamInsight для диспетчера планов.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/PlanManager")
PS C:\> $dv
Ниже приводится результирующий набор.
Key Value
----------------------- -----
AllQueriesCount 14
AllQueriesStreamCount 50
AllQueriesOperatorCount 38
В следующем примере возвращаются показатели для запроса TrafficSensorQuery.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")
PS C:\> $dv
Ниже приводится результирующий набор.
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
[В начало]