Linux性能监控工具的选择
一、常用系统监控工具介绍
1、系统监控
系统监控是一种向用户提供有关系统实际计时行为的数据的有用方法。用户可以使用这些监视器提 供的数据执行进一步的分析。系统监控的目标之一是确定当前执行是否满足指定的技术要求。 这些监视工具检索通常查看的信息,可以通过命令行或图形用户界面(由系统管理员确定)使用。这 些工具显示有关Linux系统的信息,如空闲磁盘空间、CPU温度和其他基本组件,以及网络信息, 如系统IP地址和当前上传和下载速率
2、ps,top,free,lsblk,findmnt,df,du,gnome-system-monitor
## 1. ps — 看进程 - 看当前终端进程 ps - 看所有进程(常用) ps aux - 看进程树 ps auxf ## 2. top — 实时进程/资源监控 top - 按 M 按内存排序 - 按 P 按CPU排序 - 按 q 退出 ## 3. free — 看内存 free-h --h 人类可读单位(G/M) ## 4. lsblk — 看磁盘/分区结构 lsblk 列出所有磁盘、分区、挂载点、大小。 ## 5. findmnt — 查看挂载点 findmnt 比 mount 输出更清晰,看所有挂载。 ## 6. df — 看磁盘使用 df-h 看各分区已用/可用空间。 ## 7. du — 看目录/文件大小 - 看当前目录总大小 du-sh - 看所有子目录大小 du-h--max-depth=1 ## 8. gnome-system-monitor — 图形系统监视器 gnome-system-monitor GNOME 桌面下的任务管理器(进程、资源、文件系统)。
二、查看系统状态工具介绍
1、sysstat相关命令
Linux 下的性能分析,包括CPU使用情况,内存使用情况,IO状态等等与系统相关的状态,少不了要使用 sysstat 工具包中的命令,它包括:cifsiostat iostat mpstat pidstatsadf sar tapestat 七条命令。 sysstat 服务启动后,它会自动每个10分钟收集一次系统状态信息,并将它们存储到 /var/log/sa目录下。每天一个文件,文件名分别是sa01,sa02,... sa30..1.mpstatmpstat是Multiprocessor Statistics的缩写,是实时监控工具,报告与cpu的一些统计信息这些信息都存在/proc/stat文件中,在多CPU系统里,其不但能查看所有的CPU的平均状况的信息,而且能够有查看特定的cpu信息,mpstat最大的特点是:可以查看多核心的cpu中每个计算核心的统计数据;而且类似工具vmstat只能查看系统的整体cpu情况。2.iostatiostat主要用于建库系统设备的io负载情况,iostat首次运行时会显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息,用户可以通过指定统计的次数和时间来获得所需的统计信息3.pidstatpidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。4.tapestat报告连接到系统的磁带驱动器的统计信息5.cifsstat报告CIFS统计6.sarsar命令 是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。用户可以选择使用其他Linux系统监视工具(如top、ps和free命令)来获取系统范围的信息。sysstat包中的实用程序提供以下特性:用户可以配置历史统计数据的存档长度。用户可以将统计数据保存在文件中,以便日后查看,也可以导出CSV、JSON、XML等多种文件格式。用户可以使用统计数据生成图形。例如,isag命令允许用户绘制上次sar运行时存储在daly数据文件中的数据。sysstat包实用程序自动选择测量单位来显示尺寸,以便于阅读。ysstat包实用程序支持热插拔设备mpstat命令提供关于每个cpu活动的静态数据。mpstat提供的所有数据都来自于/proc。例如cpu使用率和系统中断汇总数据是从/proc/stat文件中获取的,每秒中断数量是从/proc/interrupts文件中获取。缺省情况下mpstat命令只打印系统总体的信息。mpstat-P ALL 1 3mpstat-I summarympstat-o JSONiostat命令显示每个磁盘的i/O统计信息,并提供工作负载特性、利用率和饱和度的指标。性能管理员使用该命令来调查磁盘I/O问题。使用iostat命令的开销可以忽略不计,因为它使用内核计数器来收集统计信息。当带任何参数执行iostat命令时,将显示CPU和disk I/O的利用率指标。-c显示CPU利用率报告,-d显示磁盘I/O利用率报告。-y将省略自系统引导以来包含统计信息的第一个报告。-z忽略任何没有活动的设备。pidstat命令根据进程或线程报告CPU、磁盘I/O、内存使用情况,包括细分为用户空间和内核空间的CPU使用率百分比。该命令还可以监视这些进程和线程的子进程在下面的示例中,pidstat每隔一秒显示23354进程ID的三个CPU利用率报告。-p选项允许进程id列表作为参数。pidstat-p 23354 1 3如果没有进程id指定,就列出所有进程的信息-t参数为进程列出每个线程的统计信息-d参数为进程列出磁盘统计信息,只有root可以访问其它用户的统计信息-r参数显示进程的页面错误和内存利用率-u参数为进程列出cpu使用率,缺省就是列出cpu的使用率在排除与内存相关的性能问题时,最有用的工具之一是vmstat。vmstat命令是procps-ng包的一部分,其中包括free和top等其他有用的性能分析命令。vmstat命令(如果没有给出参数)将显示自引导以来各种系统统计数据的平均值。vmstat命令接受两个类似于sysstat包实用程序的参数。 第一个参数是延迟选项,第二个参数是计数选项。默认情况下,内存统计信息在KiB中报告。-S选项允许将报告修改为KB、MB或MiB,分别使用-Sk、-S m和-S M选项。在下面的输出中,vmstat命令显示三个报告,间隔1秒,报告以兆字节为单位。vmstat-S m 1 3
2、生成系统活动报告
系统活动报告,sar,监控当前的系统活动,并可以配置为存档和报告历史统计。sar命令从内核计数器收集指标,并有一个按预定时间执行的代理来记录系统活动。这个命令也可以用来收集关于系统状态的瞬时数据。

# sar -o report.out 1 3sar命令的输出默认情况下输出cpu的利用率并且-o参数创建一个输出文件保存输出值。这个命令以1s一次的间隔输出3次然后同时的写到输出文件和控制台。上面的命令交互式的使用sar命令。为了非交互的使用sar命令,可以使用cron命令来创建一个周期性的任务来搜集数据。sa1脚本包含了/usr/lib64/sa/sadc来每秒搜集一次数据。缺省情况下cron每10分钟运行一次sa1脚本然后sa2脚本写入每日报告到/var/log/sa/saDD或者/var/log/sa/saYYYMMDD文件,DD表示当前的天,MM表示当前月份,YYYY表示当前年份设置sysstat服务在系统启动时启动。sysstat服务通过在当前每日数据文件中插入一个假记录来标记计数器复位的时间,从而将所有metric计数器设置为0#sar命令参数-B 报告内存页统计-b 为所有设备报告I/O和传输统计-d 为每个块设备报告磁盘I/O统计-n 报告网络统计-r 报告内存利用率统计sar命令可以使用-f参数来读有个sar命令生成的数据文件。sar-q-f /var/log/sa/sa03一些配置可以在/etc/sysconfig/sysstat文件中完成。/etc/sysconfig/sysstat文件可以被sa1和sa2脚本读取并且允许一些可配置的参数用于sar命令。例如,改变HISTORY变量来sar命令的存档天数。
3、使用、systemd的timerunit
随着systemd在Red Hat Enterprise Linux 7中的出现,现在有了一个新的调度函数systemdtimer单元。systemd timer单元激活另一个不同类型的单元(例如服务),它的单元名称与计时器单元名称相匹配。timer单元允许基于timer的其他单元的激活。为了更容易调试,systemd在系统日志中记录计时器事件。#timer unit实例sysstat包提供了一个systemd timer单元叫做sysstat-collect.timer来每10分钟搜集系统统计信息。下列输出展示了/usr/lib/systemd/system/sysstat-collect.timer的配置行

OnCalendar=*:00/10表示timer单元每10分钟激活一次sysstat-collect.service在你完成修改timer unit之后,使用systemctl daemon-reload命令使改变生效。
三、PCP工具
1、PerformanceCo-Pilot介绍
https://pcp.io/ PCP工具是RHEL7/Centos7里引入的一个非常强大的性能分析监控工具,其可以提供GUI的观察平 台,也可以通过提供数据给vector、grafana、webjs等前端平台,通过这些平台以web的形式将 监控的结果展示出来。 PCP的架构是分布式的,因为任何PCP工具都可以远程执行。被监视的主机,每个性能度量域,无 论是内核、服务层、web服务器,还是其他,都需要一个性能度量域代理(PMDA),该代理负责从该 域收集性能度量。所有pmda都由同一主机上的性能指标收集器守护进程(PMCD)控制。 客户端应用程序(监视工具)连接到pmcd守护进程,它通过将请求转发到适当的PMDA并将响应返回 给客户端,充当请求的路由器。客户端还可以从PCP档案集(使用pmlogger命令创建)中访问性能 数据,以进行回顾性分析。 PCP和传统工具的功能几乎是一对一的。PCP的一个优点是,它利用了一个通用的存储结构,可以 与许多更新的工具一起使用,同时保 留了与传统工具类似的功能
2、安装PCP
yum-y install pcp yum-y install pcp-gui systemctl enable --now pmcd pcp-system-tools包提供了一组扩展的PCP工具和子命令,它们作为参数传递给PCP命令。这个 包中包括旧命令的PCP版本,如iostat、pidstat、free和其他。 yum-y install pcp-system-tools
3、生成并列出性能数据
pcp-system-tools包提供了大量的命令行工具来采集和列出性能数据。pcp free命令提供一个 内存使用情况的输出。 yum-y install pcp-system-tools systemctl enable --now pmcd pcp free pcp-dstat命令是通用的性能分析工具。pcp-dstat命令用于在同一时间间隔内查看多个系统资 源。例如,你可以结合磁盘控制器的中断来比较磁盘使用率,或者直接比较网络带宽数和磁盘吞吐 量。 当不使用参数的时候缺省的参数组合是-cdngy。缺省参数表示--cpu,--disk,--net,--page 和--sys 其他有用的选项包括在每一行输出中添加时间戳,在每次更新之间添加延迟,以及要显示的更新计 数。下面的命令显示时间戳的完整字选项,每隔8秒报告一次CPU和进程统计信息。


pmstat命令提供类似于vmstat的信息。与vmstat一样,pmstat支持调整收集间隔(-t)和样本数 量(-s)的选项。

另一个方便的实用程序是pmcollectl。这个实用程序是流行的开源存储统计应用程序collectl的 Python端口。

Performance Co-Pilot有一个基于文本的机制,用于查询单独跟踪的指标。要获取存储在 Performance Co-Pilot数据库中的指标列表,请使用pminfo命令。使用带有度量的pmval命令 收集相关数据。 pminfo pminfo-dt proc.nprocs pmval-s 5 proc.nprocs
4、使用图形工具查看PCP数据
pcp-gui包提供了一个pmchart图形实用程序,可以绘制来自多个活动主机的性能度量值。本地主 机和远程主机可以显示在同一个视图中。一组或多组PCP档案可以用作历史数据的来源。pmchart 命令显示来自其他机器的实时数据和数据,并可以重播来自存档数据文件的数据。
5、日志中的PCP数据
PCP也可以使用pmlogger命令将数据存储在日志文件中。缺省情况下pmlogger命令存储日志文件 在/var/log/pcp/pmlogger/HOSTNAME目录中 在pmlogger存档中收集数据之后,将使用pmval或pmchart等工具,根据选择的性能指标查询和 处理数据。pmlogger命令可以作为守护进程由pcp init脚本启动。也可以手动启动。缺省情况 下,pmlogger每秒收集一次数据。 pmlogger /var/log/pcp/pmlogger/host.example.com 在前面的示例中,在/var/log/pcp/pmlogger/host.example.com中创建了一个日志。日志文 件名以ISO格式日期开头。除了日志文件之外,还创建了其他几个文件来存储元数据和索引信息。 使用pmdumplog命令查看性能指标归档日志的内部详细信息。添加-Z EST+5选项以确保时间戳以 与归档文件的时间戳相同的格式显示,本质上覆盖了本地系统的时区。 pmdumplog-L-Z EST+5 /var/log/pcp/pmlogger/host.example.com/20290708.12.24.0 注意:当导出日志到另一个系统时,复制日志文件和相关的.meta文件。如果缺少任何文件,那么 分析工具将无法读取日志数据。 一旦创建了日志,命令行pcp工具将使用-a选项来指示应该针对数据存档而不是实时数据运行日 志。pmval和pmchart命令有用于指定开始和结束时间的附加选项,应该使用这些选项将数据缩小 到特定的时间跨度

使用pmval命令查看2019年7月07日03:03:00至03:04:00的平均负载:
