監視 StreamInsight 伺服器和查詢

 

監視 StreamInsight 伺服器的狀態包括追蹤系統和查詢效能的整體健全狀況。 StreamInsight 伺服器狀態的擷取方式,是透過監視在伺服器上執行的 StreamInsight 查詢以及監視撰寫 StreamInsight 查詢的實體如何使用系統資源。

本主題內容

  • 建立診斷檢視

  • 我可以使用診斷檢視疑難排解什麼問題?

  • 查詢狀態

  • 了解查詢層級監視

  • 查詢延遲的監視

  • 診斷屬性

    • 運算子診斷

    • 配接器診斷

    • 資料流診斷

    • 查詢診斷

    • 發行的資料流診斷

    • 伺服器診斷

  • 使用 PowerShell 存取診斷

建立診斷檢視

您可以使用診斷檢視 API 來取得監視資訊。 使用這個 API 有一個先決條件,就是您必須同時在內嵌和獨立模式的伺服器部署上啟用管理 Web 服務,而且您的用戶端應用程式必須透過此 Web 服務連接到伺服器。 如需詳細資訊,請參閱<發行及連接到 StreamInsight 伺服器>。

另外,您也可以使用 StreamInsight 事件流程偵錯工具中的診斷功能來監視伺服器和查詢,這個工具會使用診斷 API 在 GUI 介面中傳回結果。 您應該將此偵錯工具連接到即時 StreamInsight 伺服器,並使用 [物件總管] 來檢視伺服器中的各種物件。 以滑鼠右鍵按一下任何物件,取得該實體的執行階段診斷。 如需詳細資訊,請參閱<使用 StreamInsight 事件流程偵錯工具>。

伺服器中的所有物件都是使用以階層式命名結構描述為根據的統一資源識別碼 (URI) 所存取。 這個命名結構描述是以伺服器為開頭,而繼續向下到查詢運算子和事件資料流。 您可以從下列物件中擷取伺服器層級的診斷:

  • cep:/Server

  • cep:/Server/PlanManager

  • cep:/Server/EventManager

  • cep:/Server/Query

若要參考特定查詢,請使用命名配置 cep:/Server/Application/ApplicationName/Query/QueryName

若要參考特定實體,請使用命名配置 cep:/Server/Application/ApplicationName/Entity/EntityName

若要參考屬於查詢的特定運算子和資料流,請使用下列命名配置。 請注意,配接器也視為查詢中的運算子,請針對配接器使用運算子命名法。

  • cep:/Server/Application/ApplicationName/Query/QueryName/Operator/OperatorName

  • cep:/Server/Application/ApplicationName/Query/QueryName/Stream/StreamName

若要參考屬於實體 (處理序或主旨) 的特定查詢或訂閱,請使用下列命名配置。

  • cep:/Server/Application/ApplicationName/Entity/EntityName/Query/QueryName

  • cep:/Server/Application/ApplicationName/Entity/EntityName/Subscription/SubscriptionName

若要參考屬於實體 (處理序或主旨) 內之查詢的特定運算子,請使用下列命名配置。

  • cep:/Server/Application/ApplicationName/Entity/EntityName/Query/QueryName/Operator/OperatorName

例如,若要參考名為 “ObjectModelSample” 之應用程式中名為 “TrafficSensorQuery” 的查詢,請使用 cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery。

例如,若要參考屬於應用程式 “App” 之實體 (處理序) “NewProgrammingModelProcess” 中名為 “NewProgrammingModelQuery” 的查詢,請使用 cep:/Server/Application/App/Entity/NewProgrammingModelProcess/Query/NewProgrammingModelQuery。

這些物件的診斷資訊是藉由呼叫 GetDiagnosticView() 方法所取得。 您可以沿著兩個維度篩選診斷設定的擷取 - 層面 (記憶體、CPU 及該設定特有的其他屬性) 和層級 (關鍵性的層級)。 您可以使用 SetDiagnosticsSettings()ClearDiagnosticSettings() 方法來設定這些篩選條件,以設定或清除指定之查詢的特有設定。

下列範例是以 “TrafficJoinQuery” 範例為基礎。 下列程式碼可用來從執行中的查詢輸出各種不同物件的診斷。 此範例假設有一個已註冊的 StreamInsight 執行個體名為 “Default”。

  
namespace StreamInsight.Samples.TrafficJoinQuery  
{  
    //list of usings  
  
    internal class ExplicitBinding  
    {  
        internal static void Main()  
        {  
            using (Server server = Server.Create("Default"))  
            {  
                try  
                {  
                    // Create application in the 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  
  
                    // Start the query  
                    query.Start();  
  
                    // Wait for the query to be suspended  
  
                    // Retrieve some diagnostic information from the CEP server  
                    // about the query.  
                    Console.WriteLine(string.Empty);  
                    RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), Console.Out);  
                    RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), Console.Out);  
                    RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/TrafficJoinSample/Query/TrafficSensorQuery")), Console.Out);  
  
                    DiagnosticSettings settings = new DiagnosticSettings(DiagnosticAspect.GenerateErrorReports, DiagnosticLevel.Always);  
                    server.SetDiagnosticSettings(new Uri("cep:/Server"), settings);  
  
                    Console.WriteLine("Global Server Diagnostics");  
                    RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), Console.Out);  
                    RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), Console.Out);  
                    RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Query")), Console.Out);  
  
                    Console.WriteLine("Summary Query Diagnostics");  
                    RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/TrafficJoinSample/Query/TrafficSensorQuery")), Console.Out);  
                    Console.WriteLine("Operator Diagnostics");  
                    RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/TrafficJoinSample/Query/TrafficSensorQuery/Operator/sensorInput")), Console.Out);  
  
                    query.Stop();  
                }  
                catch (Exception e)  
                {  
                    Console.WriteLine(e);  
                    Console.ReadLine();  
                }  
            }  
  
            Console.WriteLine("\npress enter to exit application");  
            Console.ReadLine();  
        }  
  
        /// <summary>  
        /// Takes a diagnostic view and dumps all its entries to the given   
        /// text writer.  
        /// </summary>  
        /// <param name="diagview">Diagnostic view to dump.</param>  
        /// <param name="traceListener">Tracer to receive the diagnostic data.</param>  
        private static void RetrieveDiagnostics(DiagnosticView diagview, System.IO.TextWriter 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);  
            }  
        }  
    }  
}  
  

下列範例是以 “ComposingQueries” 範例為基礎。 下列程式碼可用來從執行中的查詢輸出各種不同物件的診斷。 此範例假設有一個已註冊的 StreamInsight 執行個體名為 “Default”。

namespace StreamInsight.Samples.ComposingQueries  
{  
    //list of usings  
    internal class Program  
    {  
        internal static void Main()  
        {  
            using (Server server = Server.Create("Default"))  
            {  
                try  
              {  
                    Application myApp = server.CreateApplication("DeviceReadings");  
  
                    // Configuration of the data generator input adapter.  
  
                    // Define a source stream based on an adapter implementation, which requests point events from the simulator  
  
                    // Configuration of the tracer output adapter 1.  
  
                    // Configuration of the tracer output adapter 2.  
  
                    // Annotate the original values with the delta events by joining them.  
  
                    // Hydra is used to bind multiple queries  
                    using (annotatedValues.Bind(outputStream1).With(maxDelta.Bind(outputStream2)).Run("process"))  
                    {  
                        Thread.Sleep(1000);  
                        Console.WriteLine(string.Empty);  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), Console.Out);  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), Console.Out);  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/DeviceReadings/Entity/process/Query/StreamableBinding_1")), Console.Out);  
  
                        DiagnosticSettings settings = new DiagnosticSettings(DiagnosticAspect.GenerateErrorReports, DiagnosticLevel.Always);  
                        server.SetDiagnosticSettings(new Uri("cep:/Server"), settings);  
  
                        Console.WriteLine("Global Server Diagnostics");  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), Console.Out);  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), Console.Out);  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Query")), Console.Out);  
  
                        Console.WriteLine("Summary Process Diagnostics");  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/DeviceReadings/Entity/process")), Console.Out);  
                        Console.WriteLine("Summary Subscription Diagnostics");  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/DeviceReadings/Entity/process/Subscription/StreamableBinding_1")), Console.Out);  
                        Console.WriteLine("Summary Query Diagnostics");  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/DeviceReadings/Entity/process/Query/StreamableBinding_1")), Console.Out);  
                        Console.WriteLine("Operator Diagnostics");  
                        RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/DeviceReadings/Entity/process/Query/StreamableBinding_1/Operator/Aggregate.2")), Console.Out);  
  
                        // Wait for keystroke to end.  
                        Console.WriteLine("Press enter to stop.");  
                        Console.ReadLine();  
                    }                   
  
                    Console.WriteLine("Process stopped. Press enter to exit application.");  
                    Console.ReadLine();  
                }  
                catch (Exception e)  
                {  
                    Console.WriteLine(e);  
                    Console.ReadLine();  
                }  
                host.Close();  
                }  
            }  
        }  
  
    private static void RetrieveDiagnostics(DiagnosticView diagview, System.IO.TextWriter 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 的詳細資訊,請參閱<T:Microsoft.ComplexEventProcessing.ManagementService.DiagnosticView>。 如需有關使用追蹤接聽項的詳細資訊,請參閱追蹤接聽項

本主題內容

我可以使用診斷檢視疑難排解什麼問題?

您可以使用診斷檢視疑難排解與 StreamInsight 應用程式有關的數種問題。 例如:

根本原因 徵兆
使用者定義延伸模組緩慢 高系統延遲
使用者定義延伸模組已經引發一個例外狀況 查詢無回應或中止
輸入配接器未快速提供資料 高資料延遲
輸入配接器未產生 CTI 查詢無回應
輸出配接器落後 高系統延遲

不過,您通常無法使用診斷檢視疑難排解伺服器層級的問題,或區域網路層級的問題,這些問題可能會影響您的 StreamInsight 應用程式。 這類的問題包括網路緩慢、磁碟 I/O 緩慢、記憶體不足,以及伺服器上的資源競爭。

本主題內容

查詢狀態

查詢在其存留期間會通過數個狀態。 下表將描述這些狀態。

查詢狀態 說明
已停止 查詢不再有效。 未保留任何查詢計畫。

此狀態通常在對查詢之 Stop 方法的呼叫之後存在。
正在初始化 此狀態通常在下列其中一個事件之後存在:

- 查詢已遭停止,且使用者已經呼叫其 Start 方法。 查詢將在沒有使用者互動的情況下,繼續到 Running 狀態。

- 具有恢復功能的查詢正在執行,且伺服器正在從失敗復原。 若要變更查詢的狀態,使用者必須呼叫其 Start 方法。
正在執行 查詢正在處理事件。

此狀態通常在對查詢之 Start 方法的呼叫之後存在。
檢查點檢查 查詢正在執行且檢查點正在進行中。

此狀態通常在對 BeginCheckpoint 方法的呼叫之後存在。
正在停止 使用者以應要求查詢停止。

此狀態通常在對查詢之 Stop 方法的呼叫之後存在。
已暫停 具有恢復功能的查詢復原失敗,或者因為在沒有恢復的情況下啟動伺服器而無法復原。
已完成 查詢已使用正常的方式完成。 亦即,輸入配接器已將資料流結尾標記加入佇列,且輸出配接器已取用這些標記。
已中止 發生故障。 查詢仍然可以在計畫管理員中使用。

本主題內容

了解查詢層級監視

當您在 StreamInsight 伺服器中監視查詢效能時,可以使用 ManagementService API 所提供的查詢層級監視屬性。 請使用下列事件流程圖來協助您了解如何使用這些監視屬性。

MonitorEvents

根據上圖,設想有四個測量點,這些測量點會記錄事件 (由左至右) 透過查詢從輸入配接器傳遞至輸出配接器的過程。 根據這些測量點,可以衍生出下列度量資訊:

  • 內送 - 記錄所有輸入配接器之間的內送事件。 這是從輸入配接器進入查詢之原始輸入事件抵達率的量值。

  • 取用 - 記錄 StreamInsight 伺服器所取用的事件 (也就是緊接在輸入配接器後面的所有運算子之間)。 這是加入伺服器佇列之事件的量值。

  • 產生 - 記錄離開輸出配接器前面之最後一個運算子的所有事件。 這是從查詢佇列中清除之事件的量值。

  • 傳出 - 記錄離開輸出配接器的所有事件。 這是從 StreamInsight 伺服器進入接收之事件離開率的量值。

您可以使用上圖當做指南,並根據您感興趣的事件流程區域,判斷要使用的正確屬性。 例如,如果您對於查詢所取用的事件數目感興趣,請使用 QueryTotalConsumedEventCount 屬性。或者,如果您對於查詢所產生的事件感興趣,請使用 QueryTotalProducedEventCount 屬性。

本主題內容

查詢延遲的監視

延遲是在特定閘道 (內送、產生、取用或傳出) 中所有事件抵達和離開之間計算的累計數字。 您可以將在任兩個時間點所進行之測量之間的平均延遲計算成 (S2 – S1) / (C2 – C1),其中 S 是位於任何給定閘道的累計延遲總和,而 C 是位於該閘道點的事件計數。

例如,若要計算平均取用延遲,請測量位於時間戳記 t1 (S1) 的累計取用延遲 (QueryTotalConsumedEventLatency) 以及位於時間戳記 t1 (C1) 的取用事件總數 (QueryTotalConsumedEventCount)。 接著,您可以在不同的時間戳記 (t2) 重複相同的測量,然後將平均取用事件延遲計算成 (S2 – S1)/ (C2 – C1)。

您可以使用 QueryTotalIncomingEventCountQueryLastProducedCtiTimestamp 的屬性來判斷將事件傳入或傳出查詢之配接器的效率,以及 StreamInsight 伺服器可處理這些事件的速率。

您可以透過加總 OperatorEventMemoryOperatorIndexMemory 屬性的值,判斷運算子所取用的記憶體總數。

本主題內容

診斷屬性

診斷檢視會傳回數種物件細微程度的屬性:伺服器、處理序、主旨、訂閱、查詢、發行的資料流、運算子和配接器。

診斷的設計方式可以將階層中粒度比較精細的物件以及粒度比較粗的物件彙總起來。 針對其中每個層級,您可以取得下列診斷資訊種類:

  • 靜態資訊 (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 Group And Apply 運算子之群組識別碼欄位的名稱。
OperatorMinCpuUsageAcrossWorkers Int64 運算子工作者間的 CPU 使用量下限 (毫秒)。
OperatorMaxCpuUsageAcrossWorkers Int64 運算子工作者間的 CPU 使用量上限 (毫秒)。
OperatorMinEventAdjustedCount Int64 在運算子工作者之間調整的事件數目下限。
OperatorMaxEventAdjustedCount Int64 在運算子工作者之間調整的事件數目上限。
OperatorTotalEventAdjustedCount Int64 在運算子工作者之間調整的事件總數。
OperatorMinEventDroppedCount Int64 在運算子工作者中卸除的事件數目下限。
OperatorMaxEventDroppedCount Int64 在運算子工作者中卸除的事件數目上限。
OperatorTotalEventDroppedCount Int64 在運算子工作者之間卸除的事件總數。

彙總的統計資料

下表列出的統計資料是跨運算子的所有邏輯執行個體彙總而來,而且會彙總到查詢統計資料。

屬性名稱 型別 說明
OperatorIndexEventCount Int64 跨運算子所有作用中邏輯執行個體之索引所使用的記憶體。
OperatorEventMemory Int64 跨運算子所有邏輯執行個體索引中之事件所使用的記憶體數量 (位元組)。
OperatorIndexMemory Int64 運算子中的索引所使用的記憶體數量 (位元組)。
OperatorTotalCpuUsage Int64 運算子的 CPU 使用量總計 (以毫秒為單位)。
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 布林 指出資料流是否為系統資料流的布林值。

非彙總的統計資料

下表列出的統計資料是跨資料流的所有邏輯執行個體彙總而來,但不是彙總到查詢統計資料。

屬性名稱 型別 說明
StreamTotalInputEventCount Int64 資料流的輸入事件總數。
StreamMinEventCountAcrossWorkers Int64 資料流所有執行個體中的事件數目下限。
StreamMaxEventCountAcrossWorkers Int64 資料流所有執行個體中的事件數目上限。
StreamNumberOfWorkers Int32 此資料流的執行個體數目。
StreamMinInputEventCountAcrossWorkers Int64 資料流所有執行個體中的輸入事件數目下限。
StreamMaxInputEventCountAcrossWorkers Int64 資料流所有執行個體中的輸入事件數目上限。
StreamMinMemoryIncludingEventsAcrossWorkers Int64 跨資料流執行個體所使用的記憶體數量下限 (位元組)。
StreamMaxMemoryIncludingEventsAcrossWorkers Int64 跨資料流執行個體所使用的記憶體數量上限 (位元組)。

彙總的統計資料

下表列出的統計資料是跨資料流的所有邏輯執行個體彙總而來,而且會彙總到查詢統計資料。

屬性名稱 型別 說明
StreamEventCount Int64 跨資料流所有執行個體的事件總數。
StreamMemoryIncludingEvents Int64 資料流及資料流中所有事件所使用的記憶體數量 (位元組)。

本主題內容

查詢診斷

查詢包含來自其組成運算子和資料流的彙總統計資料,以及自己的統計資料。 下列章節詳細說明查詢專屬的統計資料。

當查詢沒有在執行時,診斷只會傳回 QueryState ([已暫停] 或 [已停止]) 和 IsResilient (true 或 false) 屬性。

中繼資料

下表列出描述個別查詢的中繼資料屬性。 這些屬性的值不會變更。

屬性名稱 型別 說明
QueryState String 查詢的目前狀態。
QueryStartTime DateTime 查詢的開始時間。
QueryEndTime DateTime 查詢的結束時間。
QueryException String 查詢中發生的最後一個例外狀況。
QueryCreationTime DateTime 建立查詢執行個體的時間。
QueryId 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 布林 如果查詢設定為恢復功能 (不論伺服器狀態為何),則為 True。 否則為 False。

本主題內容

發行的資料流診斷

下表將列出針對已發行之資料流傳回的度量資訊。 若要深入了解已發行的資料流,請參閱《開發人員手冊》中的<在執行階段撰寫查詢>。 請注意,每個查詢也具有隱含的已發行資料流 - 這個已發行資料流的詳細資料將會顯示成查詢診斷的一部分。

屬性 資訊類型 資料類型 .NET Framework 類型 說明
PublishedStreamId S Number Int64 已發行之資料流的識別碼。
PublishedStreamEventShape S String String 已發行之資料流所處理的事件形狀 - 點、間隔或邊緣的其中一個。
PublishedStreamEventType S String String 包含以 XML 表示之事件類型的字串。
PublishedStreamProducerCount S Number Int32 進入資料流的事件產生者計數,其值為 0 或 1。
PublishedStreamConsumerCount S Number Int32 來自資料流的事件取用者計數。
PublishedStreamEventCount S Number Int64 已發行之資料流中的事件計數。
PublishedStreamTotalEventCount S Number 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 類型 說明
ServerCheckpointMemory A Int64 檢查點佔用的記憶體數量

本主題內容

實體屬性

來源/接收實體

屬性 型別 說明
EntityId Int64 實體的識別碼。
EntityCreationTime DateTime 實體的建立時間。

處理序實體

屬性 型別 說明
EntityId Int64 實體 (處理序) 的識別碼。
EntityCreationTime DateTime 實體 (處理序) 的建立時間。
ActivationStartTime DateTime 啟用建立的日期和時間。

主旨實體

屬性 型別 說明
EntityId Int64 實體 (主旨) 的識別碼。
EntityCreationTime DateTime 實體 (主旨) 的建立時間。
ActivationStartTime DateTime 啟用建立的日期和時間。
SubjectInputCount Int64 對主旨所做的 OnNext 呼叫次數。
SubjectInputErrorCount Int64 對主旨所做的 OnError 呼叫次數。
SubjectInputCompletedCount Int64 對主旨所做的 OnComplete 呼叫次數。
SubjectSubscriberCount Int64 主旨的訂閱者數目。
SubjectLastError String 上次主旨所擲回的非預期例外狀況。

訂閱屬性

下表列出訂閱的診斷屬性。

屬性 型別 說明
SubscriptionId Int64 訂閱的識別碼。
SubscriptionOutputCount Int64 訂閱已輸出的事件數目。
SubscriptionLastError String 透過訂閱發生的最後一個例外狀況。
SubscriptionErrorCount Int64 在訂閱上呼叫 onError 的次數。
SubscriptionCompletedCount Int64 在訂閱上呼叫 onComplete 的次數。
SubscripitonKind String 訂閱的種類。
SubscriptionQueryUri URI 表示此訂閱之 StreamInsight 暫時查詢的 URI (如果有的話) (URI)。
SubscriptionLastEventReceivedTime DateTime 這個訂閱接收上一個事件的日期時間。
SubscriptionDisposed Boolean 是否已經處置訂閱。

使用 PowerShell 存取診斷

您可以使用 PowerShell 來存取管理能力資訊,或管理執行中 StreamInsight 主控執行個體的中繼資料。 下列範例會使用 Powershell 2.0。使用在 StreamInsight 主機上執行的範例應用程式 ObjectModel.cs 來查詢。

下列範例會從全域組件快取 (GAC) 載入 Microsoft.ComplexEventProcessing DLL。

PS C:\> [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.ComplexEventProcessing")  

Here is the result set.

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("http://localhost/StreamInsight")  
PS C:\> $server | gm  
   TypeName: Microsoft.ComplexEventProcessing.Server  

Here is the result set.

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.IDictionary2[[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  

Here is the result set.

Key Value

------------------------------ -----

AllEventsCount 19

AllEventsMemory 249856

下列範例會針對計畫管理員傳回伺服器範圍 (StreamInsight 伺服器) 度量資訊。

PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/PlanManager")  
PS C:\> $dv  

Here is the result set.

Key Value

----------------------- -----

AllQueriesCount 14

AllQueriesStreamCount 50

AllQueriesOperatorCount 38

下列範例會針對 TrafficSensorQuery 查詢傳回查詢度量資訊。

PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")  
PS C:\> $dv  

Here is the result set.

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

本主題內容

請參閱

作業 (StreamInsight)