一、性能分析系统级别指标 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下最常用的进程查看命令;
- 使用技巧:
- 可以配合管道命令 | 和查找命令 grep 同时执行来查看特定进程。
- 可以配合管道命令 | 和文本分析命令 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 操作系统上使用的性能监控与分析工具
- 使用技巧:
- 下载位置:http://nmon.sourceforge.net , 从 Binaries 中下载可执行程序包
- 解压之后选择使用所在操作系统对应的可执行程序
- 可以使用 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 数据文件保存的目录
- 图形化分析工具下载位置: https://nmon.sourceforge.net/pmwiki.php?n=Site.Nmon-Analyser
- 用 Excel 打开,需要启用宏
- 在 Analyser 文件中打开性能监控数据文件 *.nmon 浏览图形化性能分析报告
五、 基本性能监控系使用
1、 基本性能监控系统组成
- Collectd + InfluxdDB + Grafana
- Collectd 是一个守护(daemon)进程,用来定期收集系统和应用程序的性能指标,同时提供了以不同的方式来存储这些指标值的机制;
- InfluxDB 开源的、高性能的时序型数据库
- Grafana 一个非常酷的数据可视化平台,常常应用于显示监控数据,支持多种数据源
2、 环境搭建
- 利用 Docker 部署环境
- 步骤:
-
- 准备数据文件 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
-
- 启动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
-
- 启动grafana
docker run -d \
--name=grafana \
-p 3000:3000 \
--link influxdb:influxdb grafana/grafana
-
- 启动collectd
docker run -d \
--name collectd \
--hostname localhost \
--link influxdb:influxdb \
-v <your path>/collectd.conf:/etc/collectd/collectd.conf \
mwaeckerlin/collectd
3、 环境配置与监控环境的使用
- Grafana中配置数据源
- 类型: InfluxDB
- URL: http://influxdb:8086
- Database: _internal
- Grafana 中配置Dashboard
- Import id 555
- collectd 启用对应的监控数据
- 编辑配置文件 collectd.conf
- 启用对应的监控选项