Orleans Dashboard 是來自 OrleansContrib 提供的一個 Orleans 報表工具。通過 Orleans Dashboard 我們能很方便的監控 Silos 狀態、Grains 分布情況、異常率、吞吐量、平均響應時間等,這樣我們就能了解集群的運行平穩性,也能排除錯誤和性能瓶頸。
初始項目的代碼根據之前的案例 Demo-OrleansCluster 稍微做了調整,Orleans Dashboard 的使用方法還是比較簡單的。
- NuGet 安裝 OrleansDashboard:
Install-Package OrleansDashboard
- 修改配置文件 OrleansConfiguration.xml,Globals 節點下添加 BootstrapProviders 節點:
<Globals>
......
<BootstrapProviders>
<Provider Type="OrleansDashboard.Dashboard" Name="Dashboard" />
</BootstrapProviders>
</Globals>
完成以上工作就可以啟動 Silo 了。
Silo 啟動成功后,Orleans Dashboard 默認訪問地址是 localhost:8080。如果你想修改端口或者添加安全驗證,可以根據配置參數來調整 Configuring the Dashboard 。
注意:啟動過程中可能會出現下面這個錯誤:
System.AggregateException: 發生一個或多個錯誤。 ---> System.DllNotFoundException: 無法加載 DLL“libuv”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)。
在 OrleansDashboard 的 issues 下已有人提到,可以關注一下 :https://github.com/OrleansContrib/OrleansDashboard/issues/62
我暫時采用的方案是: 將 \packages\Libuv.1.10.0\runtimes\win-x86\native\libuv.dll) 復制到 bin\Debug\ 下,重新啟動就可以跑起來了。
Overview
在 Orleans Dashboard 概述中可以了解到當前集群激活的 Grains 數量、Silos 數量、錯誤率、吞吐量、平均響應時間及整體的性能情況。
Grains
Grains 模塊統計出當前所有激活的 Grains 以及 Grains 的數量變量趨勢,我們可以通過點擊每個 Grain 詳情查看更詳細信息,詳情下包括 Grain 下的所有方法的調用情況及當前 Grain 歸屬的 Silo:
Silos
Silos 模塊概述和 Grains 類似,報表會呈現當前集群 Silo 的健康狀態,通過 Silo 的詳情我們可以了解到:
- 當前服務器的 CPU、內存、Grain 是使用情況;
- Silo 性能分析;
- 消息的發送和接收狀況和 Silo 的一些屬性;
- 分布著哪些 Grains;
本文是使用一個 Silo 實例來實現,如果是集群,可以參考 Demo-OrleansCluster 。Silo 的配置文件內加上 OrleansDashboard 的配置即可。如果是同一臺機器,注意端口號分別指定一下。
在 Client 端添加測試代碼,直接粗暴點來個死循環:
var random = new Random();
while (true)
{
var grainId = random.Next();
var grain = GrainClient.GrainFactory.GetGrain<IPersonGrain>("beck" + grainId);
grain.SayHelloAsync().Wait();
}
測試結果: