简介

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. sqli_labs学习笔记(一)Less-54~Less-65

    续上,开门见山 暴库: http://43.247.91.228:84/Less-54/?id=-1' union select 1,2,database() --+ challenges 爆表: h ...

  2. Spring中的BeanPostProcessor详解

    Spring中的BeanPostProcessor详解 概述 BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创建过程中(具体为Bean初 ...

  3. Map梳理

    Map梳理 类型介绍 通用Map:用于在应用程序中管理映射,通常在 java.util 程序包中实现 HashMap.Hashtable.Properties.LinkedHashMap.Identi ...

  4. Dubbo如何支持本地调用?injvm方式解析

    Dubbo是一个远程调用的框架,对于一个服务提供者,暴露了一个接口供外部消费者调用,那么对于提供者自己是否可以调用这个接口,需要什么特殊处理吗? 这篇文章就分享下Dubbo关于本地调用的实现机制,以及 ...

  5. 利用geojson实现模型轨迹运动

    直接上代码 var viewer = new Cesium.Viewer('cesiumContainer'); //Set the random number seed for consistent ...

  6. JSP&Servlet学习笔记----第5章

    Servlet进阶API 每个Servlet都必须由web容器读取Servlet设置信息(标注或者web.xml).初始化. 对于每个Servlet的设置信息,web容器会为其生成一个ServletC ...

  7. vue文件引入全局样式导致样式重复

    通常项目中src下的子目录都会有一个style文件夹,专门用来存放全局的样式文件. 这个style文件夹下,一般有reset.css.var.scss.mixin.scss.class.scss.in ...

  8. linux 学习操作小计

    屌丝最近在接触lamp开发 把工作中遇到的 问题和 一些常用的操作记下来.以便以后去翻阅 (1)linux下备份mysql数据库方法 #mysqldump -u root -p dbname > ...

  9. 小程序websocket心跳库——websocket-heartbeat-miniprogram

    前言 在16年的时候因为项目接触到websocket,而后对心跳重连做了一次总结,写了篇博客,而后18年对之前github上的demo代码进行了再次开发和开源,最终封装成库.如下: 博客:https: ...

  10. 最近很火的namebase羊毛, 手把手教你怎么薅

    闲话少说直接说步骤: 1. 羊毛 https://www.namebase.io/airdrop 要求条件: 1) 要有github账号 2) 2019年2月之前有16+个follower 3) 要有 ...