Linux 性能监控之CPU&内存&I/O监控Shell脚本1

简介: Linux 性能监控之CPU&内存&I/O监控Shell脚本1

Linux性能监控之CPU&内存&I/O监控Shell脚本1

 


#!/bin/bash

#获取要监控的本地服务器IP地址

IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`

echo "IP地址:"$IP

 

#获取cpu总核数

cpu_num=`grep -c "model name" /proc/cpuinfo`

echo "cpu总核数:"$cpu_num

 

# 1、获取CPU利用率

#获取用户空间占用CPU百分比

cpu_user=`top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"`

echo "用户空间占用CPU百分比:"$cpu_user

 

#获取内核空间占用CPU百分比

cpu_system=`top -b -n 1 | grep Cpu | awk '{print $3}' | cut -f 1 -d "%"`

echo "内核空间占用CPU百分比:"$cpu_system

 

#获取空闲CPU百分比

cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "%"`

echo "空闲CPU百分比:"$cpu_idle

 

#获取等待输入输出占CPU百分比

cpu_iowait=`top -b -n 1 | grep Cpu | awk '{print $3}' | cut -f 1 -d "%"`

echo "等待输入输出占CPU百分比:"$cpu_iowait

 

#2、获取CPU上下文切换和中断次数

#获取CPU中断次数

cpu_interrupt=`vmstat -n 1 1 | sed -n 3p | awk '{print $11}'`

echo "CPU中断次数:"$cpu_interrupt

 

#获取CPU上下文切换次数

cpu_context_switch=`vmstat -n 1 1 | sed -n 3p | awk '{print $12}'`

echo "CPU上下文切换次数:"$cpu_context_switch

 

#3、获取CPU负载信息

#获取CPU15分钟前到现在的负载平均值

cpu_load_15min=`uptime | awk '{print $11}' | cut -f 1 -d ','`

echo "CPU 15分钟前到现在的负载平均值:"$cpu_load_15min

 

#获取CPU5分钟前到现在的负载平均值

cpu_load_5min=`uptime | awk '{print $10}' | cut -f 1 -d ','`

echo "CPU 5分钟前到现在的负载平均值:"$cpu_load_5min

 

#获取CPU1分钟前到现在的负载平均值

cpu_load_1min=`uptime | awk '{print $9}' | cut -f 1 -d ','`

echo "CPU 1分钟前到现在的负载平均值:"$cpu_load_1min

 

#获取任务队列(就绪状态等待的进程数)

cpu_task_length=`vmstat -n 1 1 | sed -n 3p | awk '{print $1}'`

echo "CPU任务队列长度:"$cpu_task_length

 

#4、获取内存信息

#获取物理内存总量

mem_total=`free | grep Mem | awk '{print $2}'`

echo "物理内存总量:"$mem_total

 

#获取操作系统已使用内存总量

mem_sys_used=`free | grep Mem | awk '{print $3}'`

echo "已使用内存总量(操作系统)"$mem_sys_used

 

#获取操作系统未使用内存总量

mem_sys_free=`free | grep Mem | awk '{print $4}'`

echo "剩余内存总量(操作系统)"$mem_sys_free

 

#获取应用程序已使用的内存总量

mem_user_used=`free | sed -n 3p | awk '{print $3}'`

echo "已使用内存总量(应用程序)"$mem_user_used

 

#获取应用程序未使用内存总量

mem_user_free=`free | sed -n 3p | awk '{print $4}'`

echo "剩余内存总量(应用程序)"$mem_user_free

 

 

#获取交换分区总大小

mem_swap_total=`free | grep Swap | awk '{print $2}'`

echo "交换分区总大小:"$mem_swap_total

 

#获取已使用交换分区大小

mem_swap_used=`free | grep Swap | awk '{print $3}'`

echo "已使用交换分区大小:"$mem_swap_used

 

#获取剩余交换分区大小

mem_swap_free=`free | grep Swap | awk '{print $4}'`

echo "剩余交换分区大小:"$mem_swap_free

 

#5、获取磁盘I/O统计信息

echo "指定设备(/dev/sda)的统计信息"

#每秒向设备发起的读请求次数

disk_sda_rs=`iostat -kx | grep sda| awk '{print $4}'`

echo "每秒向设备发起的读请求次数:"$disk_sda_rs

 

#每秒向设备发起的写请求次数

disk_sda_ws=`iostat -kx | grep sda| awk '{print $5}'`

echo "每秒向设备发起的写请求次数:"$disk_sda_ws

 

#向设备发起的I/O请求队列长度平均值

disk_sda_avgqu_sz=`iostat -kx | grep sda| awk '{print $9}'`

echo "向设备发起的I/O请求队列长度平均值"$disk_sda_avgqu_sz

 

#每次向设备发起的I/O请求平均时间

disk_sda_await=`iostat -kx | grep sda| awk '{print $10}'`

echo "每次向设备发起的I/O请求平均时间:"$disk_sda_await

 

#向设备发起的I/O服务时间均值

disk_sda_svctm=`iostat -kx | grep sda| awk '{print $11}'`

echo "向设备发起的I/O服务时间均值:"$disk_sda_svctm

 

#向设备发起I/O请求的CPU时间百分占比

disk_sda_util=`iostat -kx | grep sda| awk '{print $12}'`

echo "向设备发起I/O请求的CPU时间百分占比:"$disk_sda_util

 

注:针对不同类型、版本的操作系统,以上脚本可能需要做适当修改才可适用

 

运行效果:

 

 

附:

脚本下载地址:Linux 性能监控之CPU&内存&IO监控Shell脚本1.zip

 

 

目录
相关文章
|
24天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
63 7
|
21天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
1月前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
220 1
|
7月前
|
SQL 运维 监控
关系型数据库性能监控工具
【5月更文挑战第21天】
138 2
|
4月前
|
监控 Java 开发者
揭秘Struts 2性能监控:选对工具与方法,让你的应用跑得更快,赢在起跑线上!
【8月更文挑战第31天】在企业级应用开发中,性能监控对系统的稳定运行至关重要。针对流行的Java EE框架Struts 2,本文探讨了性能监控的工具与方法,包括商用的JProfiler、免费的VisualVM以及Struts 2自带的性能监控插件。通过示例代码展示了如何在实际项目中实施这些监控手段,帮助开发者发现和解决性能瓶颈,确保应用在高并发、高负载环境下稳定运行。选择合适的监控工具需综合考虑项目需求、成本、易用性和可扩展性等因素。
48 0
|
4月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`<s:checkbox>`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
96 0
|
4月前
|
SQL 监控 关系型数据库
SQL性能监控与调优工具的神奇之处:如何用最佳实践选择最适合你的那一个,让你的数据库飞起来?
【8月更文挑战第31天】在现代软件开发中,数据库性能监控与调优对应用稳定性至关重要。本文对比了数据库内置工具、第三方工具及云服务工具等几种常用SQL性能监控与调优工具,并通过示例代码展示了如何利用MySQL的EXPLAIN功能分析查询性能。选择最适合的工具需综合考虑功能需求、数据库类型及成本预算等因素。遵循了解工具功能、试用工具及定期维护工具等最佳实践,可帮助开发者更高效地管理和优化数据库性能,迎接未来软件开发中的挑战与机遇。
62 0
|
5月前
|
运维 监控 Java
(十)JVM成神路之线上故障排查、性能监控工具分析及各线上问题排错实战
经过前述九章的JVM知识学习后,咱们对于JVM的整体知识体系已经有了全面的认知。但前面的章节中,更多的是停留在理论上进行阐述,而本章节中则更多的会分析JVM的实战操作。
133 1
|
4月前
|
存储 监控 Ubuntu
完全交互式!易于使用的 Linux 性能监控工具
完全交互式!易于使用的 Linux 性能监控工具
|
5月前
|
Prometheus 监控 数据可视化
性能测试:主流性能监控工具介绍
Linux系统中,`vmstat`和`top`提供基本监控;Nmon是实时性能分析工具,轻量且功能丰富;Collectd+InfluxDB+Grafana组合用于系统数据收集、存储和可视化;Prometheus+Grafana则提供灵活的监控和定制化仪表板。这些工具帮助企业监控系统性能,及时发现和解决问题。