通过dotnet-counter moniter可以在应用外部启动监控应用,当然也可以在进程内来来进行监控指标的收集或展示。

进程内监控的好处是不用启用多个服务来完成监控和服务的分离,只要应用启动,监控指标也就产生,是紧密关系。

  class Program{static void Main(){ Demo01.Run();           }  }public class Demo01{public static void Run(){Console.WriteLine("监控开始");var listener = new MyEventListener();listener.WriteEvent += Listener_WriteEvent;Console.ReadLine();}private static void Listener_WriteEvent(string key, string value){Console.WriteLine($"{key}:{value}");}}//输出代理public delegate void WriteContent(string key, string value);//事件监控public class MyEventListener : EventListener{protected readonly string[] _countersName = new string[]{"System.Runtime"};//回写事件public event WriteContent WriteEvent;protected override void OnEventSourceCreated(EventSource source){if (_countersName.Contains(source.Name)){EnableEvents(source, EventLevel.Verbose, EventKeywords.All, new Dictionary<string, string>(){//EventCounterIntervalSec,这是1秒中收集一次监控指标["EventCounterIntervalSec"] = "1"});}}protected override void OnEventWritten(EventWrittenEventArgs eventData){if (!eventData.EventName.Equals("EventCounters")){return;}for (int i = 0; i < eventData.Payload.Count; ++i){if (eventData.Payload[i] is IDictionary<string, object> eventPayload){var counterName = "";var counterValue = "";if (eventPayload.TryGetValue("DisplayName", out object displayValue)){counterName = displayValue.ToString();}if (eventPayload.TryGetValue("Mean", out object value) ||eventPayload.TryGetValue("Increment", out value)){counterValue = value.ToString();}WriteEvent(counterName, counterValue);}}}}

用事件监控的子类,实现把监控到的指标在应用内采集到,_countersName 可以放置要监控的provider,《dotnet中的counters说明一》,《dotnet中的counters说明二》,《dotnet中的counters说明三》里有说明。

代码20行处,只是把指标输出到控制台上了,这里可以让ES进行收集,进行展示;也可以把这里换成,写入到时序数据库中,用Grafana进行展示,并于展示是另一个话题,这里就行进行展开说明了。

应用内moniter相关推荐

  1. .NET6之MiniAPI(二十七):Metrics

    应用的各种Metrics是保证应用健康稳定运行的基础,特别对于一些可用性有所要求的应用,本文介绍prometheus-net这个三方指示库. prometheus-net的工作原理是,在应用内部埋点, ...

  2. 500道逻辑训练题 弱爆了

    逻辑思维训练500题 正文前序:思维训练让你更高.更强! 前 言 第一章 假设法 第二章 计算法 第三章 排除法 第四章 分析法 第五章 观察法 第一章 假设法 一个真实的假设往往可以让事实呈现眼前, ...

  3. Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)

    zset 可能是 Redis 提供的最为特色的数据结构,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权 ...

  4. Linux shell 学习笔记(3)— shell 父子关系及内建命令

    1. shell 类型 只要用户登录到某个虚拟控制台终端或是在 GUI 中启动终端仿真器,默认的 shell 程序就会开始运行. 默认的交互 shell 会在用户登录某个虚拟控制台终端或在 GUI 中 ...

  5. Python 常用内置函数map、zip、filter、reduce、enumerate

    Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...

  6. python内置库之学习configparser库(一)

    python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...

  7. LeetCode简单题之在区间范围内统计奇数数目

    题目 给你两个非负整数 low 和 high .请你返回 low 和 high 之间(包括二者)奇数的数目. 示例 1: 输入:low = 3, high = 7 输出:3 解释:3 到 7 之间奇数 ...

  8. LeetCode简单题之检查是否区域内所有整数都被覆盖

    题目 给你一个二维整数数组 ranges 和两个整数 left 和 right .每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 . 如 ...

  9. 实时双频Wi-Fi如何实现下一代车内连接

    实时双频Wi-Fi如何实现下一代车内连接 How real simultaneous dual band Wi-Fi enables next-generation in-vehicle connec ...

  10. 10分钟内基于gpu的目标检测

    10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...

最新文章

  1. 3月7日 ArrayList集合
  2. 实现HTTP协议Get、Post和文件上传功能——使用libcurl接口实现
  3. 类和对象—对象特性—静态成员函数
  4. 【若依(ruoyi)】树表代码生成
  5. const_cast的应用
  6. 使用Python可以做些什么
  7. 处理 git 合并冲突
  8. 华为s5700-SI交换机常用命令
  9. html——float与position的兼容性探究
  10. 【CoreBluetooth】iOS 系统蓝牙框架
  11. coolpad手机量身打造的刷机工具--下载助手_V2.2.4(Mini_AD_Coolpad)
  12. excel一列求和_学会这15组Excel函数,解决数据分析中80%的难题
  13. tinymce 上传本地视频
  14. Beats: 使用 Filebeat 进行日志结构化 - Python
  15. 微信显示android23,微信7.0.23内测版发布 新增6个新功能
  16. Nagios被监控端简单搭建
  17. ​【技术】机器视觉技术原理解析及应用领域
  18. [附源码]java毕业设计旅游管理系统
  19. 关于css设置第n个元素
  20. 定义python函数时如果函数中没有return语句_定义Python函数时,如果函数中没有return语句,则默认返回空值None。...

热门文章

  1. 给定一个设备编号区间[start, end],包含4或18的编号都不能使用,如:418、148、718不能使用,108可用
  2. 今日科技联播:滴滴5000亿上市计划或受影响,高德地图暂时下线顺风车业务
  3. LSTM之父最新长文:现代AI和深度学习发展史
  4. 手机浏览器类型( user agent)判断
  5. AWS亚马逊服务器配置过程
  6. [Objective-C] 010_Foundation框架之NSSet与NSMutableSet
  7. 计算机主板 也叫系统板或母版,电脑主板与CPU常见故障维修
  8. 给老笔记本换固态硬盘,能提升系统速度吗?
  9. source insight使用2---设置全选为Ctrl+a
  10. 快手、携程等公司转战到 ClickHouse,ES 难道不行了?