简介

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)

然后修改 ProgramSiloHostBuilder 的配置,添加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 看看

本文代码范例

GitHub仓库

便捷路由

目录Orleans[NET Core 3.1] 学习笔记(一).NET环境下的分布式应用程序

上一节Orleans[NET Core 3.1] 学习笔记(四)( 2 )获取Grain的方式

下一节

Orleans[NET Core 3.1] 学习笔记(四)( 3 )监控Orleans Silo的方式 OrleansDashboard的更多相关文章

  1. Orleans[NET Core 3.1] 学习笔记(四)( 1 )创建项目

    ClassRoom ClassRoom是一个练手demo,目的是为了能熟悉掌握Orleans的基本知识和使用方法,我会尽量在这个项目中加入更多的知识点,一边学一边练避免我看完文档就忘掉 创建项目 依旧 ...

  2. Orleans[NET Core 3.1] 学习笔记(四)( 2 )获取Grain的方式

    简介 在这一节,我们将介绍如何在Silo和Client中获取Grain及调用Grain Grain获取方式 从Grain内部获取: //根据特定的Key值创建或获取指定的Grain IStudent ...

  3. Orleans[NET Core 3.1] 学习笔记(三)( 3 )服务端配置

    服务端配置 Silo通过SiloHostBuilder和许多补充选项类以编程方式进行配置. Silo配置有几个关键方面: Orleans集群信息 集群提供程序(不知道咋翻译) Silo到Silo和Cl ...

  4. Orleans[NET Core 3.1] 学习笔记(一).NET环境下的分布式应用程序

    前言 Orleans是一个跨平台的框架,用于搭建可扩展的分布式应用程序 第一次接触Orleans还是两年前做游戏服务器的时候,用SignalR+Orleans的组合,写起代码来不要太爽. 即将进入20 ...

  5. Orleans[NET Core 3.1] 学习笔记(三)( 2 )客户端配置

    客户端配置 通过一个ClientBuilder和多个补充选项类,以编程方式配置一个用于连接Silo集群并将请求发送至Grain的客户端. 客户端配置示例: var client = new Clien ...

  6. Orleans[NET Core 3.1] 学习笔记(三)( 1 )本地开发配置

    本地开发配置 本地开发和调试的时候,我们可能不需要去关注集群和网络ip端口.所以对于本地开发模式,Orleans给了我们比较简单的配置方式. Silo配置 在本地开发的配置模式下,Orleans会默认 ...

  7. Orleans[NET Core 3.1] 学习笔记(二)Hello World

    项目结构 开始Orleans之前,我们都知道Orleans主要可以分为俩部分,Host和Client. 所以我们可以创建如下的项目结构: IGrain 一个包含Grain接口的库(.NET Stand ...

  8. 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】

    前置知识:awk 参考学习博客:https://www.cnblogs.com/bugingcode/p/8287914.html awk 'BEGIN{ commands } pattern{ co ...

  9. ASP.NET Core MVC 网站学习笔记

    ASP.NET Core MVC 网站学习笔记 魏刘宏 2020 年 2 月 17 日 最近因为” 新冠” 疫情在家办公,学习了 ASP.NET Core MVC 网站的一些知识,记录如下. 一.新建 ...

随机推荐

  1. Spring Boot动态注入删除bean

    Spring Boot动态注入删除bean 概述 因为如果采用配置文件或者注解,我们要加入对象的话,还要重启服务,如果我们想要避免这一情况就得采用动态处理bean,包括:动态注入,动态删除. 动态注入 ...

  2. 云原生 - Why is istio(二)

    出处:https://cizixs.com/2018/08/26/what-is-istio 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处. 前言 随着微服务架构的流行, ...

  3. windows RabbitMQ安装与配置

    windows RabbitMQ安装与配置 1.安装Erlang 下载地址: http://www.erlang.org/downloads 注意: 右键以管理员身份进行安装,否则将导致后续无法启动 ...

  4. BP的matlab实现

    %2015.04.26 Kang Yongxin ----v 2.0 %完成作业中BP算法,采用批量方式更新权重 %% %输入数据格式 %x 矩阵 : 样本个数*特征维度 %y 矩阵 :样本个数*类别 ...

  5. JVM基础快速入门篇

    Java是一门可以跨平台的语言,但是Java本身是不可以实现跨平台的,需要JVM实现跨平台.javac编译好后的class文件,在Windows.Linux.Mac等系统上,只要该系统安装对应的Jav ...

  6. js数组冷知识

    省略数组值 在声明数组时,省略一些数组值 let a = [1,,3] //a.length为3 a = [,,] //a.length为2 0 in a //false,a在索引0处没有元素 稀疏数 ...

  7. python UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 87: illegal multibyte sequence异常解决

    我们处理文本文件时,经常会遇到这样的报错: UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 87: illegal ...

  8. TensorFlow 中的张量,图,会话

    tensor的含义是张量,张量是什么,听起来很高深的样子,其实我们对于张量一点都不陌生,因为像标量,向量,矩阵这些都可以被认为是特殊的张量.如下图所示: 在TensorFlow中,tensor实际上就 ...

  9. CCF_201312-5_I’m stuck!

    一次bfs从起点开始找到起点能到达的点,一次bfs从终点开始找到能到终点的点,最后输出答案即可. 刚开始写的时候,考虑找起点能到达的点的时候,用了dfs,提交只有20分,仔细想了一下,会存在无限循环的 ...

  10. MySQL复制(二)--基于二进制日志文件(binlog)配置复制

    基础环境:   主库 从库 服务器IP地址 192.168.10.11 192.168.10.12 版本 5.7.24 5.7.24 已存在的数据库 mysql> show databases; ...