【网络编程实践--陈硕】2.4.4 procmon 程序的设计实现
2023-09-27 14:28:32 时间
procmon 设计思想
要如何实现这样一个 procmon 程序。
从框架的设计上我们可以采用(主动式监控的)侵入式设计,也可以使用(被动式监控的)非侵入式设计,同时针对web页面中的绘图功能也有多种解决方案。
-
侵入式 or 非 侵入式:(Intrusive or non-intrusive)
- 侵入式:将程序做成一个库,被监控程序主动使用该库暴露其内部状态。
优点:可以暴露其内部数据,例如运行期间收到多少次请求、成功/失败次数、响应情况、延迟等。因为侵入式监控程序,和被监控的程序在同一个地址空间中,它的权限和被监控的进程是一样的。因此,侵入式的监控程序可以获得的信息也跟多。
缺点:需要知道目标程序的源码,同时库与目标程序在语言上的适配情况也需要考虑。 - 非侵入式:直接从操作系统提供的接口获取(/proc/pid…)
优点:可以监控任何程序,无需修改目标程序的源码进行重新编译。
缺点:无法探查目标程序内部状态,只能从操作系统角度观察程序的总体资源使用情况。
- 侵入式:将程序做成一个库,被监控程序主动使用该库暴露其内部状态。
-
如何绘图
- 方案一:工具只收集数据,将图像绘制交给专门的绘图服务器。
<img src=https://chart/?data=1,0.9,0.8,0.2>
我们在web上嵌入一个外链,通过访问该链接返回一个绘制好的图片。 - 方案二:返回json数据,通过js动态绘制。jqPlot,flot
优点,不只是单纯的图片,通过鼠标的移动产生交互,体验更好。 - 方案三:直接让程序生成图片,然后返回到web上。
<img src="/cup.png">
优点:可以独立使用,没有额外依赖,浏览器兼容也更容易。
- 方案一:工具只收集数据,将图像绘制交给专门的绘图服务器。
以上从一些技术点上出发进行设计上的分析,从整体实现上来看procmon实际上是一个定制的专用HTTP服务器,我们的业务逻辑实际上是嵌入到这个HTTP服务器进程中的。
这里procmon的功能只是一个单纯的进程监控程序,实现上最好资源占用较少、并且出于设计方面的的考虑采用了一体化的设计,没有使用现有的http服务器。除此之外,我们也可以使用一些轻量级的HTTP服务器如Nginx或使用CGI、FCGI等实现也是可以的。
需要说明的是,示例中的 procmon 代码使用非侵入式设计,图片绘制采用的是本地进程生成图片的方式。
相关文章
- 《软件定义网络:SDN与OpenFlow解析》
- bat批处理设置静态、动态、ping、查看网络配置
- 程序与数学 转自网络
- 【微信小程序】-- 网络数据请求(十九)
- 傅里叶与电阻网络
- 买了等保安全设备就一定安全吗?就一定能抵御网络风险呢?
- 诺基亚CEO批评"网络中立",索尼发布运动智能耳机...
- Android入门之网络图片查看器
- 一文搞懂常见的网络I/O模型
- python网络爬虫 - 如何伪装逃过反爬虫程序
- 小程序 openid 的原始请求和网络请求
- 《Windows网络与通信程序设计(第3版)》——1.3 网络程序寻址方式
- 《Python核心编程(第3版)》——第2章 网络编程 2.1 简介
- 打脸NSA:法国前情报官员证实NSA曾入侵法国总统府网络
- 英国安全报告 “网络军备竞赛”黑客完胜
- 使用BSD socket编写Windows版的网络程序
- 99%的程序都没有考虑的网络异常?使用Fundebug.notify()主动上报
- Unix 网络编程 dup和dup2函数
- 秋式广告杀手技术分享:网络请求基础知识
- Sitecore Digital Marketing System, Part 1: Creating personalized, custom content for site visitors(自定义SiteCore中的 Item的Personalize的Condition) -摘自网络
- Headless MSBuild Support for SSDT (*.sqlproj) Projects [利用msbuild自动化部署 .sqlproj]- 摘自网络
- 部署 外网 ASP.NET程序时, IIS安全性 配置 -摘自网络
- C#网络编程TCP通信实例程序简单设计
- 计算机网络管理 Wireshark网络抓包程序的安装,过滤器命令语法的学习
- 小程序建网络组图拓扑Topo
- 计算机网络-网络传输媒介之“陆地无线电信道”