Orleans[NET Core 3.1] 学习笔记(四)( 3 )监控Orleans Silo的方式 OrleansDashboard
简介
Orleans用起来的确很爽,更爽的是咱们有能监控它的工具。
OrleansDashboard 这个工具是一个可视化的Silo监控工具,Silo和Grain的活跃状态一目了然,各个接口的响应速度也可以很清晰的统计到。
安装
使用NuGet引用 OrleansDashboard
然后修改 SiloHostBuilder 的配置,添加Dashboard:
new SiloHostBuilder()
.UseDashboard(options => { })
.Build();
启动Silo,然后在浏览器中打开以下URL:http://localhost:8080
请注意,Dashboard会注册其服务和Grain, ConfigureApplicationParts 从而禁用在Orleans自动发现Grain的功能。要自动发现原始项目的Grain,请将配置更改为:
new SiloHostBuilder()
.ConfigureApplicationParts(parts => parts.AddFromApplicationBaseDirectory())
.UseDashboard(options => { })
.Build();
配置Dashboard
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
使用Dashboard
咱们还是使用 上一节 的例子
修改 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和内存指标
Dashboard给我们提供了监控Silo寄宿主机的CPU和内存指标功能,但是需要另外配置
监控windows
监控windows需要引用包 Microsoft.Orleans.OrleansTelemetryConsumers.Counters
然后修改 SiloHostBuilder 的配置,添加Dashboard:
new SiloHostBuilder()
.UseDashboard(options => { })
.UsePerfCounterEnvironmentStatistics()//添加主机CPU和内存监控
.Build();
修改并启动 Silo_ConsoleApp 项目:

这里我遇到一个问题,只能看到CPU,看不到内存,一直也没找到相关的文档和解决方案,百思不得其解,如果有幸有大佬看到这篇文章,还请指点迷津
监控Linux
监控Linux需要添加库 Microsoft.Orleans.OrleansTelemetryConsumers.Linux
然后使用:
new SiloHostBuilder()
.UseDashboard(options => { })
.UseLinuxEnvironmentStatistics()
.Build();
关于Linux的,我还没测试,等以后有空了再来补上
Dashboard API
Dashboard提供了一些可以调用的HTTP API,感兴趣的可以去 OrleansDashboard 看看
本文代码范例
便捷路由
目录 : Orleans[NET Core 3.1] 学习笔记(一).NET环境下的分布式应用程序
上一节 : Orleans[NET Core 3.1] 学习笔记(四)( 2 )获取Grain的方式
下一节 :
Orleans[NET Core 3.1] 学习笔记(四)( 3 )监控Orleans Silo的方式 OrleansDashboard的更多相关文章
- Orleans[NET Core 3.1] 学习笔记(四)( 1 )创建项目
ClassRoom ClassRoom是一个练手demo,目的是为了能熟悉掌握Orleans的基本知识和使用方法,我会尽量在这个项目中加入更多的知识点,一边学一边练避免我看完文档就忘掉 创建项目 依旧 ...
- Orleans[NET Core 3.1] 学习笔记(四)( 2 )获取Grain的方式
简介 在这一节,我们将介绍如何在Silo和Client中获取Grain及调用Grain Grain获取方式 从Grain内部获取: //根据特定的Key值创建或获取指定的Grain IStudent ...
- Orleans[NET Core 3.1] 学习笔记(三)( 3 )服务端配置
服务端配置 Silo通过SiloHostBuilder和许多补充选项类以编程方式进行配置. Silo配置有几个关键方面: Orleans集群信息 集群提供程序(不知道咋翻译) Silo到Silo和Cl ...
- Orleans[NET Core 3.1] 学习笔记(一).NET环境下的分布式应用程序
前言 Orleans是一个跨平台的框架,用于搭建可扩展的分布式应用程序 第一次接触Orleans还是两年前做游戏服务器的时候,用SignalR+Orleans的组合,写起代码来不要太爽. 即将进入20 ...
- Orleans[NET Core 3.1] 学习笔记(三)( 2 )客户端配置
客户端配置 通过一个ClientBuilder和多个补充选项类,以编程方式配置一个用于连接Silo集群并将请求发送至Grain的客户端. 客户端配置示例: var client = new Clien ...
- Orleans[NET Core 3.1] 学习笔记(三)( 1 )本地开发配置
本地开发配置 本地开发和调试的时候,我们可能不需要去关注集群和网络ip端口.所以对于本地开发模式,Orleans给了我们比较简单的配置方式. Silo配置 在本地开发的配置模式下,Orleans会默认 ...
- Orleans[NET Core 3.1] 学习笔记(二)Hello World
项目结构 开始Orleans之前,我们都知道Orleans主要可以分为俩部分,Host和Client. 所以我们可以创建如下的项目结构: IGrain 一个包含Grain接口的库(.NET Stand ...
- 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】
前置知识:awk 参考学习博客:https://www.cnblogs.com/bugingcode/p/8287914.html awk 'BEGIN{ commands } pattern{ co ...
- ASP.NET Core MVC 网站学习笔记
ASP.NET Core MVC 网站学习笔记 魏刘宏 2020 年 2 月 17 日 最近因为” 新冠” 疫情在家办公,学习了 ASP.NET Core MVC 网站的一些知识,记录如下. 一.新建 ...
随机推荐
- Hbase与Maven工程的Spring配置笔记
1.HBase基本操作 hbase shell: 连接到正在运行的HBase实例 help: 显示一些基本的使用信息以及命令示例. 需要注意的是: 表名, 行, 列都必须使用引号括起来 create ...
- Java多线程:实现API接口创建线程方式详解
先看例子: /**实现Runnable接口创建线程步骤: * 1.创建一个实现Runnable接口的类 * 2.重写Runnable类中抽象的run()方法 * 3.创建实现类的对象 * 4.声明Th ...
- excle 写入数据库
龙龙博客:https://www.cnblogs.com/meilong/p/cao-zuoexcel-mo-kuaiopenpyxl.html 1 安装 pip install openpyxl 如 ...
- SMB信息泄露
开门见山 1. 用netdiscover -r 扫描与攻击机同一网段的靶机,发现PCS 2. 扫描靶场开放信息 3. 挖掘靶场全部信息 4. 针对SMB协议,使用空口令,若口令尝试登录,并查看敏感文件 ...
- Selenium(六):截图
截图 from selenium import webdriver driver = webdriver.Chrome() # 以PNG格式,保存浏览器截图,filename为截图文件绝对路径 dri ...
- 大数据之Kafka史上最详细原理总结
Kafka Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实 ...
- truncate table,drop,delete的区别
TRUNCATE TABLE 在功能上与不带 Where 子句的 Delete 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 Delete 速度快,且使用的系统和事务日志资源 ...
- ROS中的3D机器人建模(二)
一,创建我们的第一个URDF模型 我们设计的第一个机器人模型是pan-and-tilt机械结构,代码如下 pan_tilt.urdf: 1 <?xml version="1.0&quo ...
- CCF_ 201403-2_窗口
用deque模拟. #include<iostream> #include<cstdio> #include<deque> using namespace std; ...
- 关于JAVA中源码级注解的编写及使用
一.注解简介: 1.1.什么是"注解": 在我们编写代码时,一定看到过这样的代码: class Student { private String name; @Override ...