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的方式
下一节 :