Linux 服务器监控

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

标签:iostat/free/top/dstat

概述  

 文字主要讲述使用linux自带的几个命令监控io、CPU、磁盘、内存、服务器整体信息等。

 

IO监控

iostat命令

主要用于监控系统设备的IO负载情况

查看命令帮助

iostat --help

[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ][ <设备> [...] | ALL ] [ -p [ <设备> [,...] | ALL ] ]

 

iostat

Linux 2.6.32-71.el6.x86_64 (localhost.localdomain) 2015年12月24日 _x86_64_(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           1.98    0.00    0.80    3.04    0.00   94.18

%user:进程处于用户状态所占CPU时间百分比

%nice: 改变过优先级的进程的占用CPU的百分比.

%system:进程处于内核状态所占CPU时间百分比

%iowait:CPU等等IO操作所占用的CPU百分比,当磁盘IO比较大的时候该值会增加。

%steal:分配给虚拟机占用的CPU百分比

%idle:CPU空闲时间的百分比

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda              17.78       128.39      1107.66    9968098   86000772

tps: 每秒钟发送到的I/O请求数(可以理解成每秒磁盘IO处理的请求,这样可能更好理解)Blk_read /s: 每秒读取的block数
Blk_wrtn/s: 每秒写入的block数
Blk_read:   读入的block总数
Blk_wrtn:  写入的block总数

 

-c参数:

分成CPU的状态,也就是上面的CPU部分

-d参数

分析磁盘设备状态,也就是上面的Device部分。

-n参数

分析文件系统的状态

Filesystem:              rBlk_nor/s   wBlk_nor/s   rBlk_dir/s   wBlk_dir/s   rBlk_svr/s   wBlk_svr/s     ops/s    rops/s    wops/s 

[-N或者-h]参数

和直接运行iostat的区别主要是device部分,这里显示的是设备每秒的读写、读写字节情况,默认是kB

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           2.06    0.00    0.82    3.09    0.00   94.03

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda              18.20        65.63       556.45    5169933   43834154

kB_read/s:每秒从设备读的KB数

kB_wrtn/s:每秒写入设备的KB数

kB_read:每秒从设备读的KB字节

kB_wrtn:每秒写入设备的KB字节

[ -k | -m ]参数

是单位,分别是KB和MB,默认单位是KB,用来做磁盘分析的时候使用

例如iostat -d -M(以MB作为单位显示)

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn

sda              18.65         0.06         0.55       5102      43654

-t参数

显示的时候打印出时间

2015年12月24日 09时39分31秒

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

               2.07    0.00    0.83    3.17    0.00   93.94

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda              18.59       131.96      1128.88   10450530   89403980

[-v或-Z]参数

暂时没发现什么特别的功能

-x参数

最详细的显示CPU和设备信息

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           2.06    0.00    0.83    3.16    0.00   93.96

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util

sda               1.58   125.86    2.49   16.04   131.51  1124.71    67.80     0.41   22.29   2.69   4.98

其中CPU部分没有什么变化,这里主要来看device部分:

rrqm/s:将读入请求合并后,每秒发送到设备的读入请求数.
wrqm/s:将写入请求合并后,每秒发送到设备的写入请求数.
r/s:每秒发送到设备的读入请求数.
w/s:每秒发送到设备的写入请求数.
rsec/s:每秒从设备读入的扇区数.
wsec/s:每秒向设备写入的扇区数.
rkB/s:每秒从设备读入的数据量,单位为K.
wkB/s:每秒向设备写入的数据量,单位为K.
avgrq-sz:发送到设备的请求的平均大小,单位是扇区.
avgqu-sz:发送到设备的请求的平均队列长度.
await:I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.
svctm:发送到设备的I/O请求的平均执行时间.单位是毫秒.
%uti:在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率.
当这个值接近100%时,表示设备带宽已经占满.

-P参数

分析指定的设备:例如sda,sdb

iostat -p sda

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           2.05    0.00    0.82    3.13    0.00   93.99

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda              18.40       130.78      1116.56   10472250   89406772

sda1              0.01         0.07         0.00       5232         28

sda2             16.72       118.34      1089.36    9476202   87228408

sda3              0.36        12.36        27.20     989616    2178336

常见的用法:

显示设备和CPU状态,每秒打印一次,并显示时间

iostat -x -k -t 1

显示设备和CPU状态,每秒显示一次,显示10次,并显示时间

iostat -x -k -t 1 10

显示设备sda和CPU状态,每秒显示一次,显示10次,并显示时间

iostat -x -k -t -p sda 1 10

CPU监控

mpstat

mpstat命令主要用来分析CPU的性能,并且可以分析单个cpu的性能状态。

mpstat -P ALL

 

%user:进程处于用户状态所占CPU时间百分比

%nice: 改变过优先级的进程的占用CPU的百分比.

%system:进程处于内核状态所占CPU时间百分比

%iowait:CPU等等IO操作所占用的CPU百分比,当磁盘IO比较大的时候该值会增加。

%steal:分配给虚拟机占用的CPU百分比

%idle:CPU空闲时间的百分比

内存监控

free命令

free
             total       used       free     shared    buffers     cached
Mem:      32830608   32501660     328948          0     285540   10956472
-/+ buffers/cache:   21259648   11570960
Swap:     16383992     216520   16167472

free:内存中剩余未被使用的空间大小

buffers:文件缓存大小,linux本身就是一个文件型系统,所以linux会为每个文件进行缓存用来加速文件的查找。

cached:页缓存,所有以页为单位的缓存都会被缓存到这来,所以从这里其实也可以大概看出服务器的内存使用情况,因为大部分的内存都是以页进行缓存的 

total=used+free

total=(-buffers/cache)+(+buffers/cache)

-/+ buffers/cache:反应的是内存的实际使用情况

-buffers/cache:21259648=used-buffers-cached,这部分也是真正被使用掉的内存

+buffers/cache:11570960=(free+buffers+cached),这部分是可以直接拿来用的内存,所以看内存的剩余可用情况可以参考+buffers/cache

查看文件/etc/proc/ meminfo

注意:还需要关注swap:used,如果swap:used使用很高那么可能需要考虑内存是否够用。

磁盘监控

df命令

查看文件cat /etc/proc/diskstats

进程监控

top命令

例:查看mysql用户进程

top -u mysql

复制代码
top - 11:45:50 up 1 day, 23:39,  1 user,  load average: 0.04, 0.01, 0.00
Tasks: 185 total,   2 running, 183 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.2%sy,  0.0%ni, 99.5%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32864496k total,  4749428k used, 28115068k free,   167268k buffers
Swap:  1048572k total,        0k used,  1048572k free,   259776k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  2285 mysql     20   0 27.5g 3.8g 8236 S  0.3 12.1   7:56.92 mysqld    
复制代码

top这行信息可以参考下面的uptime的解释。load average分别表示5分钟内的、10分钟内的、15分钟内排队的进程数,只要第一个数字即5分钟内的负载不大于5,系统就是健康的

tasks:185个进程总数,2个正在运行的进程,183个睡眠的进程,0个停止的进程,0个僵尸进程

cpu:0.1%us(用户占用), 0.2%sy(系统占用), 0.0%ni, 99.5%id(空闲), 0.1%wa(等待输入输出的CPU时间百分比), 0.0%hi, 0.0%si, 0.0%st

Mem: 32864496k total(总内存), 4749428k used(已使用内存), 28115068k free(未使用的内存), 167268k buffers(内核缓存)

Swap: 1048572k total(交换区总大小), 0k used(已使用), 1048572k free(未使用), 259776k cached(缓冲的交换区总量)

PID:进程ID

USER:用户

PR:优先级

NI:nice值。负值表示高优先级,正值表示低优先级

S:进程状态(R:运行,S:睡眠,T:停止,Z:僵尸进程,D:不可中断的睡眠状态)

%CPU:占用的CPU百分比

%MEM:占用的内存百分比

TIME+:累计占用的CPU时间

COMMAND:命令

 

进程信息只列举了一些重要的字段,其它的字段如果想了解可以去查看资料。

这里有每个进程的文件:/etc/proc

注意:在top里面除了关注每个进程的内存使用情况,还需要关注的就是{load average: 0.04, 0.01, 0.00}进程负载情况。

系统负载

uptime命令

10:18:23 up 22:43,  3 users,  load average: 0.00, 0.00, 0.79

  • 当前时间 10:18:23
  • 系统已运行的时间 22小时43分钟
  • 当前在线用户 3 user
  • 平均负载:0.00, 0.00, 0.79最近1分钟、5分钟、15分钟系统的负载

查看文件

cat /proc/loadavg

0.00 0.00 0.70 1/317 41562

除了前3个数字表示平均进程数量外,后面的1个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程ID

 

系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:

  • 它没有在等待I/O操作的结果
  • 它没有主动进入等待状态(也就是没有调用'wait')
  • 没有被停止(例如:等待终止)

一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.

uptime部分摘自:http://www.cnblogs.com/kaituorensheng/p/3602812.html

 

vmstat命令

该命令可以用来分析整个服务器的基本情况,包括内存、交换分区、IO、system、cpu

vmstat

 

 

网络流量监控

可以使用nload工具来做网络流量监控,该工具可以动态的显示流入和流出的网络流量

yum -y install nload

总结

 linux系统自带的这几个命令做为日常监控使用还是挺不错的,当然还有很多第三方工具也很不错,比如监控IO的dstat工具,后面有时间会单独讲一下dstat工具的使用。

 






本文转自pursuer.chen(陈敏华)博客园博客,原文链接:http://www.cnblogs.com/chenmh/p/5072704.html,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
安全 Java Linux
Websoft9:为开发者打造的高效 Linux 服务器面板
Websoft9 是一款以开源应用部署与管理为核心的服务器面板,采用“环境即服务”模式。它通过运行环境标准化、自动化配置、安全融合和资源管理四个方面实现平台与环境的深度协同。支持多语言框架预集成、云原生组件整合,提供 200+ 应用模板一键部署,并具备全流程安全防护和统一资源监控能力,助力开发者高效管理和扩展应用环境。
20 0
|
20天前
|
关系型数据库 应用服务中间件 Linux
Linux云服务器如何搭建LNMP环境
LNMP环境是Linux系统中常用的Web服务架构,由Linux、Nginx、MySQL/MariaDB和PHP组成,适用于高效托管动态网站。本文以CentOS 7为例,详细介绍了LNMP环境的搭建步骤,包括Nginx、MariaDB和PHP的安装与配置,以及最终通过创建`index.php`文件验证环境是否成功部署。具体操作涵盖配置YUM仓库、安装服务、编辑配置文件、启动服务等关键步骤,确保用户能够顺利搭建并运行LNMP环境。
44 1
Linux云服务器如何搭建LNMP环境
|
6天前
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
12天前
|
Linux 虚拟化 Docker
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
64 1
|
2月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
3月前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
265 6
|
4月前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
W9
|
4月前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
478 1
|
4月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
180 4
|
4月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
186 4