应用内moniter
通过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相关推荐
- .NET6之MiniAPI(二十七):Metrics
应用的各种Metrics是保证应用健康稳定运行的基础,特别对于一些可用性有所要求的应用,本文介绍prometheus-net这个三方指示库. prometheus-net的工作原理是,在应用内部埋点, ...
- 500道逻辑训练题 弱爆了
逻辑思维训练500题 正文前序:思维训练让你更高.更强! 前 言 第一章 假设法 第二章 计算法 第三章 排除法 第四章 分析法 第五章 观察法 第一章 假设法 一个真实的假设往往可以让事实呈现眼前, ...
- Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)
zset 可能是 Redis 提供的最为特色的数据结构,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权 ...
- Linux shell 学习笔记(3)— shell 父子关系及内建命令
1. shell 类型 只要用户登录到某个虚拟控制台终端或是在 GUI 中启动终端仿真器,默认的 shell 程序就会开始运行. 默认的交互 shell 会在用户登录某个虚拟控制台终端或在 GUI 中 ...
- Python 常用内置函数map、zip、filter、reduce、enumerate
Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...
- python内置库之学习configparser库(一)
python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...
- LeetCode简单题之在区间范围内统计奇数数目
题目 给你两个非负整数 low 和 high .请你返回 low 和 high 之间(包括二者)奇数的数目. 示例 1: 输入:low = 3, high = 7 输出:3 解释:3 到 7 之间奇数 ...
- LeetCode简单题之检查是否区域内所有整数都被覆盖
题目 给你一个二维整数数组 ranges 和两个整数 left 和 right .每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 . 如 ...
- 实时双频Wi-Fi如何实现下一代车内连接
实时双频Wi-Fi如何实现下一代车内连接 How real simultaneous dual band Wi-Fi enables next-generation in-vehicle connec ...
- 10分钟内基于gpu的目标检测
10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...
最新文章
- 3月7日 ArrayList集合
- 实现HTTP协议Get、Post和文件上传功能——使用libcurl接口实现
- 类和对象—对象特性—静态成员函数
- 【若依(ruoyi)】树表代码生成
- const_cast的应用
- 使用Python可以做些什么
- 处理 git 合并冲突
- 华为s5700-SI交换机常用命令
- html——float与position的兼容性探究
- 【CoreBluetooth】iOS 系统蓝牙框架
- coolpad手机量身打造的刷机工具--下载助手_V2.2.4(Mini_AD_Coolpad)
- excel一列求和_学会这15组Excel函数,解决数据分析中80%的难题
- tinymce 上传本地视频
- Beats: 使用 Filebeat 进行日志结构化 - Python
- 微信显示android23,微信7.0.23内测版发布 新增6个新功能
- Nagios被监控端简单搭建
- ​【技术】机器视觉技术原理解析及应用领域
- [附源码]java毕业设计旅游管理系统
- 关于css设置第n个元素
- 定义python函数时如果函数中没有return语句_定义Python函数时,如果函数中没有return语句,则默认返回空值None。...
热门文章
- 给定一个设备编号区间[start, end],包含4或18的编号都不能使用,如:418、148、718不能使用,108可用
- 今日科技联播:滴滴5000亿上市计划或受影响,高德地图暂时下线顺风车业务
- LSTM之父最新长文:现代AI和深度学习发展史
- 手机浏览器类型( user agent)判断
- AWS亚马逊服务器配置过程
- [Objective-C] 010_Foundation框架之NSSet与NSMutableSet
- 计算机主板 也叫系统板或母版,电脑主板与CPU常见故障维修
- 给老笔记本换固态硬盘,能提升系统速度吗?
- source insight使用2---设置全选为Ctrl+a
- 快手、携程等公司转战到 ClickHouse,ES 难道不行了?