热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

基于Linux的性能监测比拼和实现攻略

文章标题:基于Linux的性能监测比拼和实现攻略。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  性能监测的基本概念:

  当今企业对关键服务效能和稳定性方面的要求不断提高,所以如何科学以及准确地获得服务运行方面的综合信息显得越来越重要。于是企业在部署服务的同时也都会通过各种各样的方式和手段来部署对服务以及其外围环境资源的监测。监测的对象除服务本身之外还包括服务所运行的基本环境,如CPU、内存、I/O、存储空间、网络吞吐量等使用情况。通过对这种长期监测所收集到的数据来使用不同的图形化分析软件进行整理和分析,我们不难判断出服务在当前以及长期所运行的情况,并为以后的性能调优以及系统排错建立参考的依据。

  基于Linux上性能监测的基本原理以及种类:

  在Linux系统上的性能监测所采用的方式基本上有两种:

  第一种,通过snmp + 数据采集软件来实现:

  通过在Linux服务器上启动snmp简单网络管理协议来动态采集服务器在软件甚至硬件各方面的运行参数,这样服务器就成为了一个被监测的节点。然后在其它的网管工作站上一部分的客户端软件能够采集snmp数据并动态生成可以通过Web页面访问的HTML信息,而另外一部分的客户端软件本身集成了更强大的数据采集以及绘图功能,结合到一起可以生成更加直观和具体的web页面。这种类型的监测所获得的数据格式标准而且全面,配置简单,所以从综合监测的角度看是一个不错的方案。

  第二种,通过性能监测命令编写script + 数据采集软件来实现:

  在某些情况下snmp协议的配置相对比较麻烦,但是系统本身提供了很多诸如sar,iostat以及free等不同的可以周期和规律性执行的性能监测命令,这就给监测提供了相当的便利。因为可以将这些命令嵌入到脚本中以周期性生成性能监测软件所需要的数据,最终一样可以通过这些数据绘制出直观的统计图。这种类型的监测所获得的信息更加灵活和精确,对于一些熟悉scripts编程的用户来说,使用起来相当得心应手。

  除此之外,利用命令监测可以无限制扩展,用户可以通过各种管道来获得和定制自己的监测脚本。所以综上所述,这两种监测的方案各有其优势。因此我们会在下文中针对两种方案各提供一部分案例由简单到复杂,一步步对各种方案的操作方法予以说明和讲解。

  在更多的情况下很多企业都倾向于选择通过SNMP来获取服务器运行的各种信息,因此我们花点时间来介绍一下SNMP协议的基本概念以及工作原理。

  简单网络管理协议SNMP是一种广泛用于监测网络设备(计算机、路由器)甚至其它设备(例如UPS)的网络协议,也是专门设计用于在IP网络管理网络节点(包括服务器、工作站、路由器、交换机及 HUBS 等)的一种标准,属于应用层协议。SNMP使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告),网络管理系统将获知网络出现的各种问题。

  SNMP 管理的网络有三个主要组成部分:被管理的设备(Managed Device)、代理(Agent)和网络管理系统(Network Management Station即NMS)。

  被管理的设备是一个网络节点,包含ANMP代理并处在管理网络之中,有时也称为网络单元,用于收集并存储网络信息,通过SNMP、NMS能得到这些信息。被管理的设备可能是路由器、访问服务器,交换机和网桥、HUBS、主机或打印机等。

  SNMP代理是被管理设备上的一个网络管理软件模块。SNMP代理拥有本地的相关管理信息,并将它们转换成与SNMP兼容的格式。

  NMS运行应用程序以实现监测被管理设备。此外,NMS还为网络管理提供了大量的处理程序及必须的储存资源。任何受管理的网络至少需要一个或多个NMS。

  目前,SNMP有3种不同的版本:SNMPv1、SNMPv2和SNMPv3。第1版和第2版没有太大差距,但SNMPv2是增强版本,包含了其它协议操作。前两种snmp协议主要使用基于团体名称(community)的方式来实现网管工作站对代理的访问认证,与前两种相比SNMPv3则包含更多安全和远程配置,在认证方面可以使用基于某种对称和非对称加密协议来加密的用户名和密码来实现网管工作站对代理的访问认证。而且为解决不同SNMP版本间的不兼容问题,RFC3584定义了三者共存策略。

  另外SNMP协议包括了四种基本的动作:

  Get:如果网络管理系统需要获得被监测的设备信息,则会执行get动作。

  GetNext:如果要获得的某个项目信息是一个项目列表中多个项目之一,网络管理系统会执行getnext获得相关所有项目信息。

  Set:网络管理系统使用set命令来改变被管理项目的某个值。

  Trap:如果被管理设备需要通知网络管理系统某些信息,需要执行trap命令。

  最后在Red Hat中的SNMP相关包,在该包中提供了MIB,其信息文件是/usr/share/snmp/mibs。MIB是关于某个设备层次化的数据库(Management Information Base)。对于这个设备的每个值都采用唯一的Object Identifier即OID表示,OID格式包括可用名称,前缀或者数字。

  如果在系统中安装了net-snmp-utils包,则snmp中的MIB和OID信息可以通过snmptranslate命令来显示出整个MIB树以及其上OID的信息,snmptranslate主要用于转换以文字名称或者数字ID显示的OID信息以及列出snmp的MIB结构树。


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
author-avatar
手机用户2702935673
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有