监控Linux服务器

简介: 详细介绍了如何监控Linux服务器,包括监控CPU、内存、磁盘存储和带宽的使用情况,以及使用各种系统监控工具如vmstat、iostat、sar、top和dstat来分析系统性能,并推荐了一些开源监控系统。

作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Linux系统监控基础

  从性能的角度来看,监控Linux系统主要监控CPU,内存,磁盘存储和带宽的使用情况。
AI 代码解读

1>.监控CPU使用情况

  只要没有使用100%的CPU容量,就可以在系统中使用剩余的容量来支持更多的活动。CPU的使用达到峰值是常见的,但是在CPU使用率过高时,我们的目标是跟踪那些进程导致CPU使用过多。

  检查CPU使用去考试应该注意下面几个关键因素:  
    (1)用户与系统使用情况:  
      与用户维护操作系统运行的时间成正比,可以确定CPU用于用户应用程序的时间百分比。显然,如果CPU的大部分时间由系统占用了,则可能还需要进一步检查。  
    (2)可运行进程:  
      在任务给定的时间,进程要么在运行,要么在等待资源被释放。正在等待资源分配的进程称为可运行进程。大量可运行进程的存在表明系统可能面临容量危机,它是CPU绑定的。  
    (3)上下文切换和中断:  
      当操作系统在进程之间切换时,所谓的上线文切换回导致一些开销。如果有太多次的上下文切换时,则CPU使用率会恶化。当完成某些硬件或软件相关任务时,如果操作系统造成的中断太多,也会产生类似的开销。
AI 代码解读

2>.监控内存使用情况

  内存是我们遇到性能问题是首先应该关注的资源之一。如果服务器上的内存不足(RAM),系统可能由于内存交换过多而变慢。内存交换意味着系统将内存页面传输到磁盘设备为其他进程释放内存。  

  当检查系统内存使用情况时,请注意以下几点:  
    (1)页面输入和页面输出:  
      如果在内存使用情况统计信息中看到大量的页面输入和页面输出,则意味着系统正在执行过多的分页,这涉及将页面从内存移动到磁盘,如果可用内存不足的话。  
      过多的分页可能导致抖动情况,这意味着你正在使用关键系统资源做内存和磁盘之间的页面移动。  
    (2)换入和换出:  
      交换统计信息还可以指示系统当前内存分配的充足成都。  
    (3)活动和非活动页面:  
      如果活动内存页面太少,则可能意味着物理内存不足。
AI 代码解读

3>.监控磁盘存储

  监控磁盘涉及两件事情。首先,检查以确保没有用尽空间,应用程序持续添加更多数据,因而必须不断添加更多的存储空间。其次,观察磁盘性能,磁盘输入/磁盘输出性能较慢,是否存在瓶颈?

  要查找的基本信息如下所示:  
    (1)检查可用空间  
      使用简单的命令,系统管理员或DBA可用检查系统剩余的可用空间量。最好是定期检查,在资源紧张是监控就太晚了。可用使用dfdu命令检查系统上的可用空间。  
    (2)读取和写入  
      读取/写入数据可以帮助你了解磁盘的运行有多"热"。通过检查读取/写入数据,可以了解系统是否正在处理其工作负载,或者在任何给定时间是否处理额外的I/O负载。
AI 代码解读

4>.监控带宽

  通过监测网络带宽使用情况,可以计算设备间数据穿度的效率。带宽比简单的I/O或内存使用更难测定,但收集带宽相关统计信息非常有用。

  网络是系统的重要组成部分,如果网络连接速度较慢,则一切都会运行缓慢。简单的网络统计信息(如接受和发送的字节数)可帮助我们识别网络问题。

  高网络数据包冲突率以及过多的数据传输错误会导致传输瓶颈。需要使用netstat等工具来检查网络,看网络是否存在瓶颈。
AI 代码解读

二.Linux系统监控工具

  为了找出正在运行的进程,最常使用Linux进程命令ps。当然,为了健康系统性能,需要使用比ps命令更复杂的工具。下面介绍可用于监控系统性能的一些重要工具。
AI 代码解读

1>.监测内存使用vmstat

  [root@hadoop101.yinzhengjie.com ~]# vmstat -S M 1

  输出如下图所示,个字段说明如下:
    procs(进程):
      r: 
        运行队列中进程数量
      b: 
        等待IO的进程数量

    memory(内存):
      swpd: 
        使用虚拟内存大小,我禁用了swap分区,因此你会看到虚拟内存始终为0      free: 
        剩余空闲内存,即可用内存大小
      buff: 
        用作缓冲的内存大小
      cache: 
        用作缓存的内存大小

    swap(虚拟内存我已经禁用了,因此该字段数值始终为0,我们忽略即可):
      si: 
        每秒从交换区写到内存的大小
      so: 
        每秒写入交换区的内存大小

    io:(磁盘I/O的情况统计信息)
      bi: 
        每秒读取的块数,块大小通常是4k,即(4096bytes)。当然,若也可以自定义了文件的块大小,这个我在之前的笔记已经分享过。
      bo: 
        每秒写入的块数。

    system(系统信息统计):
      in: 
        每秒中断(interrupt)数,包括时钟中断。
      cs: 
        每秒上下文切换数,单位为:counts/second。
  
    cpu(CPU的以百分比表示):
      us: 
        用户进程执行时间(user time)
      sy:   
        系统进程执行时间(system time)
      id:   
        空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
      wa:   
        等待IO时间
AI 代码解读

2>.使用meminfo查看内存使用情况和内存空闲情况

  如下图所示,检查服务器内存使用情况的简单方法是使用"/proc/memeinfo"命令。许多Linux工具(如top,free)看了眼使用meminfo文件中的数据作为源。
AI 代码解读

3>.使用iostat查看I/O统计信息

  iostat使用程序可以提供程序上所有磁盘的输入/输出统计信息。

  avg-cpu属性值说明:
    %user:
      CPU处在用户模式下的时间百分比。
    %nice:
      CPU处在带NICE值的用户模式下的时间百分比。
    %system:
      CPU处在系统模式下的时间百分比。
    %iowait:
      CPU等待输入输出完成时间的百分比。若该值持续过高,则说明硬盘存在I/O瓶颈。
    %steal:
      管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
    %idle:
      CPU空闲时间百分比。若该值持续过高,则说明CPU比较空闲。
      如果%idle值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。
      如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU。

  Divice属性值说明:
    tps:
      该设备每秒的传输次数
    kB_read/s:
      每秒从设备(drive expressed)读取的数据量;
    kB_wrtn/s:
      每秒向设备(drive expressed)写入的数据量;
    kB_read:  
      读取的总数据量;
    kB_wrtn:
      写入的总数量数据量;

  温馨提示:
    如果你是最小化安装,则可以先安装iostat工具,以CentOS发行版本为例,可在命令行中执行以下命令"yum -y install sysstat"进行安装即可。
AI 代码解读

4>.使用sar分析读/写操作

  Linux sar(系统活动报告器)使用程序是一个非常强大的工具,它可以分析从磁盘到缓冲区花奴才能以及从缓冲区到磁盘的读/写操作。通过sar命令的各种选项,可以监视磁盘和CPU活动,以及缓冲区缓存活动。

  如下图所示,这是一个典型的sar命令的输出,这里使用-u选项来监视服务器的CPU活动,每个1秒刷新一次,共计刷新10次。

  主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。    
  以下是sar各字段的含义:  
    %user:
      用户空间的CPU使用
    %nice:
      改变过优先级的进程的CPU使用率
    %system:
      内核空间的CPU使用率
    %iowait:
      CPU等待IO的百分比 
    %steal:
      虚拟机的虚拟机CPU使用的CPU
    %idle:
      空闲的CPU
AI 代码解读

5>.使用top命令监视资源使用情况

  如下图所示,top命令可以查看哪些用户/进程使用的服务器资源最多。

  CPU瓶颈抑郁识别,我们会看到非常高的处理器加载时间,例如80%或90%,甚至更高。还可以看到整个集群中的加载程序加载的时间大于50%或60%。由于涉及不当的hadoop作业,单个进程可能会占用太多的CPU时间。

  在这种情况下,调整map或减少人为会降低CPU使用率。当然,切换到更快的处理器或添加更多处理器也有助于环节CPU争用问题。

  可以通过查看上下文切换和中断来了解CPU争用情况。Linux操作系统是一个具有多核CPU的多任务系统。操作系统会在进程切换时存储称为上线文的CPU状态,从而从中断除恢复执行。

  恢复上下文称为上下文切换。如果上下文切换次数过多,则表明CPU正忙,需花费大量时间存储/恢复进程状态。通常这是由于为每个节点分配太多map或减少任务造成的。

  博主推荐阅读:
    https://www.cnblogs.com/yinzhengjie/p/10367853.html
AI 代码解读

6>.使用dstat进行网络监控

  当在shuffle阶段,reduce任务获得map任务输出时,hadoop会大量使用网络。当reduce作业将结果输出到HDFS时,网络利用率也高。监控网络有助于识别潜在的网络瓶颈。

  一个很好的网络监控工具(如dstat)可以显示网络的工作负载,下面有一些 有用的经验法则:  
    (1)如果网络数据速率约为网络带宽的20%或更高,则表示网络过载;  
    (2)高中断率表示网络流量超载,dstat工具还同时显示网络数据速率和中断数量,如下图所示。  

  温馨提示:  
    如果你的服务器未安装该命令,可以手动安装,以CentOS为例,可以执行"yum -y install dstat"命令进行安装。
AI 代码解读

三.开源的监控系统

  开源的监控系统就多了去了,它们都可以监控Linux操作系统。比如Cacti,Nagios,Zabbix,Open Falcon,Prometheus,Ganglia等等。  

  每个开源监控系统都有自己擅长的领域,比如Cacti擅长监控网络设备,Nagios有很好的报警功能,Zabbix有不错的WebUI,Open Falcon可以监控数以万计的服务器,Prometheus擅长监控容器,Ganglia擅长大数据组件的监控等等。  

  温馨提示:  
    可以结合公司现有的应用,统一使用一个监控系统来监控所有应用。
AI 代码解读
目录
打赏
0
0
0
0
178
分享
相关文章
|
4月前
|
Websoft9:为开发者打造的高效 Linux 服务器面板
Websoft9 是一款以开源应用部署与管理为核心的服务器面板,采用“环境即服务”模式。它通过运行环境标准化、自动化配置、安全融合和资源管理四个方面实现平台与环境的深度协同。支持多语言框架预集成、云原生组件整合,提供 200+ 应用模板一键部署,并具备全流程安全防护和统一资源监控能力,助力开发者高效管理和扩展应用环境。
104 0
从Linux到Windows:阿里云服务器系统镜像适配场景与选择参考
阿里云为用户提供了丰富多样的服务器操作系统选择,以满足不同场景下的应用需求。目前,云服务器的操作系统镜像主要分为公共镜像、自定义镜像、共享镜像、镜像市场和社区镜像五大类。以下是对这些镜像类型的详细介绍及选择云服务器系统时需要考虑的因素,以供参考。
|
1月前
|
Linux下版本控制器(SVN) -服务器端环境搭建步骤
Linux下版本控制器(SVN) -服务器端环境搭建步骤
53 0
Linux下版本控制器(SVN) -服务器端环境搭建步骤
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
114 24
服务器数据恢复—Linux系统服务器数据恢复案例
服务器数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程中突然崩溃。管理员将服务器操作系统进行了重装。 用户方需要恢复服务器中的数据库、办公文档、代码文件等。
Linux运维笔记 - 如何使用WGCLOUD监控交换机的流量
WGCLOUD是一款开源免费的通用主机监控工具,安装使用都非常简单,它可以监控主机、服务器的cpu、内存、磁盘、流量等数据,也可以监控数据库、中间件、网络设备
|
3月前
|
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
258 28
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
176 28
在Linux服务器中遇到的立即重启后的绑定错误:地址已被使用问题解决
总的来说,解决"地址已被使用"的问题需要理解Linux的网络资源管理机制,选择合适的套接字选项,以及合适的时间点进行服务重启。以上就是对“立即重启后的绑定错误:地址已被使用问题”的全面解答。希望可以帮你解决问题。
185 20
|
4月前
|
Linux系统管理:服务器时间与网络时间同步技巧。
以上就是在Linux服务器上设置时间同步的方式。然而,要正确运用这些知识,需要理解其背后的工作原理:服务器根据网络中的其他机器的时间进行校对,逐步地精确自己的系统时间,就像一只犹豫不决的啮齿动物,通过观察其他啮齿动物的行为,逐渐确定自己的行为逻辑,既简单,又有趣。最后希望这个过程既能给你带来乐趣,也能提高你作为系统管理员的专业素养。
524 20
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问