性能监控体系-L1-性能测试工具

一、性能分析系统级别指标 io cpu mem net

1、 io 指标监控命令 iostat

  • 命令描述: 监控系统设备的IO负载情况
  • 命令演示: iostat

2、 io 指标监控命令 df

  • 命令描述: 列出⽂件系统的整体磁盘空间使⽤情况
  • 命令演示: df -h

3、 cpu 指标监控命令 uptime

  • 命令描述: 用于显示系统总共运行了多长时间和系统的平均负载
  • 命令演示: uptime

4、 cpu 指标监控命令 cat /proc/cpuinfo

  • 命令描述: 查看CPU的配置信息
  • 命令演示: cat /proc/cpuinfo

5、 cpu 指标监控命令 mpstat

  • 命令描述: 是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标
  • 命令演示: mpstat
    • %usr:用户进程所占CPU当前的执行时间的百分比;
    • %sys:系统进程所占CPU的时间点百分比;
    • %iowait:等待进行io所使用的进程占用CPU时间的百分比;
    • %idle:CPU空闲时间的百分比

6、 cpu 指标监控命令 sar

  • 命令描述: 是一个Linux下的监控工具,可以用来监控CPU性能状况
  • 命令演示: sar -u 1 1

7、 mem 指标监控命令 cat /proc/meminfo

  • 命令描述: 查看内存相关配置信息
  • 命令演示: cat /proc/meminfo

8、 mem 指标监控命令 vmstat

  • 命令描述: 用来获得有关进程、内存、虚拟内存、页面交换空间及 CPU活动的信息
  • 命令演示: vmstat
    • proc:进程相关的内容
    • r:所有等待执行的任务数,任务数超过cpu核数,代表当前系统运行已经超过CPU的瓶颈
    • b:等待io进程的数量,数量大于1,系统等待io的进程较多,需要注意
    • swpd:表示正在使用虚拟内存的大小,单位为k
    • free:空闲内存
    • buff:已用buff的大小
    • cache:已用cache的大小
    • 每秒从交换区写入内存的大小,单位kb/s
    • si:写入
    • so:读入
    • bi:每秒写入的part数
    • bo:每秒读入的part数
    • in:每秒的中断数
    • cs:每秒产生上下文的切换数
    • us:用户进程消耗CPU时间的占比
    • sy:系统进程消耗CPU时间的占比
    • id:空闲时间占比
    • wa:等待进行io所使用进程的占用CPU的时间占比
    • st:虚拟机窃取物理机的使用数量,一般都为0

9、 mem 指标监控命令 free

  • 命令描述: 显示系统使用和空闲内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存
  • 命令演示: free, free -g

10、 net 指标监控命令 ping

  • 命令描述: 向目标系统发送报文,检测网络连通性的工具
  • 命令演示: ping

11、 net 指标监控命令 ifconfig

  • 命令描述: 用于获取网卡配置与网络状态等信息
  • 命令演示: ifconfig

12、 net 指标监控命令 hostname

  • 命令描述: 显示本机的hostname, 修改本机的hostname
  • 命令演示: hostname
  • 展示IP地址:hostname -i

13、 net 指标监控命令 netstat

  • 命令描述: 用于显示各种网络相关信息,如网络连接,路由表,接口状态等
  • 命令演示:
    • netstat -an (将地址转换为IP地址)
    • netstat -at(tcp协议的展示)
    • netstat -au(udp协议的展示)
    • netstat -aun(将udp对应的地址转换为IP地址)
    • netstat -p (展示对应的进程名称和进程号)
    • netstat -aunp (展示udp的进程名称和进程号)

二、 top 命令使用

  • 命令描述: 实时的显示系统中各个进程的资源占用情况

  • 统计信息: 前五行是系统的整体统计信息。

  • 进程信息: 统计信息下方类似表格的区域显示的是进程的详细信息,默认5秒刷新一次。

  • 命令演示: top

    键盘敲1:展示每个CPU,再次敲1收回;
    改变系统排序,如按照CPU进行排序:敲大写P,由高到低排序;
    按照内存大小进行排序:敲大写M;
    改变整个top的刷新速度:敲1

三、 ps 命令

  • 命令描述: ps是命令是 Process Status 的缩写,linux下最常用的进程查看命令;
  • 使用技巧:
    1. 可以配合管道命令 | 和查找命令 grep 同时执行来查看特定进程。
    2. 可以配合管道命令 | 和文本分析命令 awk 同时执行来定位具体进程参数值
  • 命令演示:
    • ps
    • ps -aux
    • ps -ef
    • ps -ef | grep | awk
    • ps -ef | grep tomcat
    • ps -ef | grep tomcat | grep -v color(把独立的tomcat搜索出来)
    • ps -ef | grep tomcat | grep -v color|awk ‘{print $2}’ (把进程号搜索出来)

四、 nmon 工具

1、 nmon 简介

  • nmon是一种可以在 AIX 与 Linux 操作系统上使用的性能监控与分析工具
  • 使用技巧:
    1. 下载位置:http://nmon.sourceforge.net , 从 Binaries 中下载可执行程序包
    2. 解压之后选择使用所在操作系统对应的可执行程序
    3. 可以使用 ln 命令将 nmon 程序软链接添加到 /urs/bin 目录下,这样可以通过 nmon 命令直接运行该程序 参考命令: ln -s nmon

2、 nmon 使用

  • 运行 nmon 直接启动
  • 常用快捷参数
    • c: cpu
    • m: 内存
    • d: 硬盘
    • n: 网络
    • t: top进程
    • q: 退出

3、 nmon 监控与结果分析

  • 启动 nmon 后台监控程序
  • 命令: nmon -f -t -s 10 -c 10 -m
    • -f 监控结果以文件形式输出,**默认:**机器名_日期_时间
    • -F 指定输出文件名
    • -t 显示资源占用率高的进程
    • -s 采样频率,单位秒
    • -c 采样次数
    • -m nmon 数据文件保存的目录


五、 基本性能监控系使用

1、 基本性能监控系统组成

  • Collectd + InfluxdDB + Grafana
  • Collectd 是一个守护(daemon)进程,用来定期收集系统和应用程序的性能指标,同时提供了以不同的方式来存储这些指标值的机制;
  • InfluxDB 开源的、高性能的时序型数据库
  • Grafana 一个非常酷的数据可视化平台,常常应用于显示监控数据,支持多种数据源

2、 环境搭建

  • 利用 Docker 部署环境
  • 步骤:
      1. 准备数据文件 types.db 和 collectd.conf
> docker create --name temporary mwaeckerlin/collectd
> docker cp temporary:/usr/share/collectd/types.db types.db
> docker cp temporary:/etc/collectd/collectd.conf collectd.conf
> sudo mkdir -p <your path>
> sudo mv -i types.db <your path>
> sudo mv -i collectd.conf <your path>
> docker rm temporary
    1. 启动influxDB
docker run -d \
    --name influxdb \
    -e INFLUXDB_COLLECTD_ENABLED=true \
    -e INFLUXDB_COLLECTD_DATABASE=_internal \
    -e INFLUXDB_COLLECTD_TYPESDB=/usr/share/collectd/types.db \
    -e INFLUXDB_COLLECTD_SECURITY_LEVEL=none \
    -v <your path>/types.db:/usr/share/collectd/types.db \
    influxdb:1.8
    1. 启动grafana
docker run -d \
    --name=grafana \
    -p 3000:3000 \
    --link influxdb:influxdb grafana/grafana 
    1. 启动collectd
docker run -d \
    --name collectd \
    --hostname localhost \
    --link influxdb:influxdb \
    -v <your path>/collectd.conf:/etc/collectd/collectd.conf \
    mwaeckerlin/collectd

3、 环境配置与监控环境的使用

  • Grafana中配置数据源
  • Grafana 中配置Dashboard
    • Import id 555
  • collectd 启用对应的监控数据
  • 编辑配置文件 collectd.conf
  • 启用对应的监控选项