Orleans用起來的確很爽,更爽的是我們有能監控它的工具。html
OrleansDashboard 這個工具是一個可視化的Silo監控工具,Silo和Grain的活躍狀態一目瞭然,各個接口的響應速度也能夠很清晰的統計到。linux
使用NuGet引用 OrleansDashboard
git
而後修改 SiloHostBuilder
的配置,添加Dashboard:github
new SiloHostBuilder() .UseDashboard(options => { }) .Build();
啓動Silo,而後在瀏覽器中打開如下URL:http://localhost:8080
windows
請注意,Dashboard會註冊其服務和Grain, ConfigureApplicationParts
從而禁用在Orleans自動發現Grain的功能。要自動發現原始項目的Grain,請將配置更改成:api
new SiloHostBuilder() .ConfigureApplicationParts(parts => parts.AddFromApplicationBaseDirectory()) .UseDashboard(options => { }) .Build();
Dashboard支持如下配置屬性:瀏覽器
Username
:設置用於訪問Dashboard的用戶名(基自己份驗證)。Password
:設置用於訪問Dashboard的密碼(基自己份驗證)。Host
:將Web服務器綁定到的主機名(默認爲*)。Port
:設置Dashboard可視化頁面訪問的端口(默認爲8080)。HostSelf
:將Dashboard設置爲託管本身的http服務器(默認爲true)。CounterUpdateIntervalMs
:採樣計數器之間的更新間隔(以毫秒爲單位)(默認爲1000)。new SiloHostBuilder() .UseDashboard(options => { options.Username = "USERNAME"; options.Password = "PASSWORD"; options.Host = "*"; options.Port = 8080; options.HostSelf = true; options.CounterUpdateIntervalMs = 1000; }) .Build();
我還注意到官網上有這麼一句話,若是遇到性能上的坑,能夠嘗試一下:服務器
在使用儀表板時若是注意到性能降低。建議您嘗試增大CounterUpdateIntervalMS到10000分佈式
我們仍是使用 上一節 的例子工具
修改 Silo_ConsoleApp
項目,使用NuGet引用 OrleansDashboard (3.0.8)
而後修改 Program
中 SiloHostBuilder
的配置,添加Dashboard:
[...] .UseDashboard(options => { options.Username = "admin"; options.Password = "123"; options.Host = "*"; options.Port = 8080; options.HostSelf = true; options.CounterUpdateIntervalMs = 1000; })//註冊Dashboard,具體信息見:https://github.com/OrleansContrib/OrleansDashboard [...]
啓動 Silo_ConsoleApp
,而後咱們打開 http://localhost:8080
,輸入我們配置的帳號密碼後能夠看到以下界面:
我們再按照相同的步驟讓張三李四王二麻去教室報名,再回頭看看Dashboard
Silo啓動了一個:
Grain激活的狀況:
Student
被激活和調用的狀況:
舒坦,媽媽不再用擔憂我搞不清Orleans的運行狀況啦
Dashboard給咱們提供了監控Silo寄宿主機的CPU和內存指標功能,可是須要另外配置
監控windows須要引用包 Microsoft.Orleans.OrleansTelemetryConsumers.Counters
而後修改 SiloHostBuilder
的配置,添加Dashboard:
new SiloHostBuilder() .UseDashboard(options => { }) .UsePerfCounterEnvironmentStatistics()//添加主機CPU和內存監控 .Build();
修改並啓動 Silo_ConsoleApp
項目:
這裏我遇到一個問題,只能看到CPU,看不到內存,一直也沒找到相關的文檔和解決方案,百思不得其解,若是有幸有大佬看到這篇文章,還請指點迷津
監控Linux須要添加庫 Microsoft.Orleans.OrleansTelemetryConsumers.Linux
而後使用:
new SiloHostBuilder() .UseDashboard(options => { }) .UseLinuxEnvironmentStatistics() .Build();
關於Linux的,我還沒測試,等之後有空了再來補上
Dashboard提供了一些能夠調用的HTTP API,感興趣的能夠去 OrleansDashboard 看看
目錄 : Orleans[NET Core 3.1] 學習筆記(一).NET環境下的分佈式應用程序
上一節 : Orleans[NET Core 3.1] 學習筆記(四)( 2 )獲取Grain的方式
下一節 :