linux - linux中的性能监控脚本

标签 linux performance scripting

我正在尝试创建一个脚本来监控 CPU 利用率、内存利用率、I/O 利用率和网络利用率。目前,我有一个脚本应该在 linux 上运行必要的命令。希望最后,我能够每 15 分钟左右运行一次,然后使用特定信息来分析数据。下面是脚本:

#!/bin/sh
########################################################
OUTPUT="ServerPerf`date '+%d%m%y'`.out"
(
echo "=================================================="
echo " Script Starting Time : `date` "
echo "================================================="
echo " Disk I/O Status "
echo "================================================="
echo
iostat
echo
echo "================================================="

echo "##################################################"
echo " NETWORK TCP PARAMETERS STATUS "
echo "##################################################"
echo
echo
netstat -sp tcp
echo
echo " Processes List "
echo
ps -elf
echo
echo " END "
echo
echo "##################################################"
echo "##################################################"
echo " NETWORK CONNECTION PARAMETER "
echo "##################################################"
echo
echo
netstat -an
echo
echo
echo "##################################################"
echo " NETWORK TRAFFIC STATUS ON INTERFACES "
echo "##################################################"
echo
echo
netstat -i
echo
echo
echo "##################################################"
echo " SERVER MEMORY/CPU Utilization Report "
echo "##################################################"
echo
top -d1 -n 5
echo "=================================================="
echo " VMSTAT INFO "
echo "=================================================="
echo
vmstat 5 5
echo
echo "=================================================="
echo " Script Ending Time : `date` "
echo
echo "=================================================="
) >> $OUTPUT

现在,我想从这些创建的文件中获取有用的数据。数据可以分为几类:

  1. 平均负载
  2. CPU 空闲百分比
  3. 内核利用率
  4. 内存利用率
  5. 交换事件

我正在尝试使用这些命令生成这 5 个文件,但似乎遇到了困难。

grep "load avg" /home/test/logs/ServerPerf180610.out | awk '{ print $6 }' | awk -F, '{ print $1 }' > load_avg.txt
grep "CPU states" /home/test/logs/ServerPerf180610.out | awk '{ print $3 }' | awk -F% '{ print $1 }' > cpu_idle.txt
grep "CPU states" /home/test/logs/ServerPerf180610.out | awk '{ print $7 }' | awk -F% '{ print $1 }' > cpu_kernel.txt
grep "Memory" /home/test/logs/ServerPerf180610.out | awk '{ print $5 }' | awk -FG '{ print $1 }' > memory_util.txt
grep "Memory" /home/test/logs/ServerPerf180610.out | awk '{ print $11 }' | awk -FG '{ print $1 }' > swap_util.txt

虽然这些命令运行,但输出文件只是空的。有谁知道为什么我无法生成这些文件?

非常感谢您的帮助。

谢谢, 亚伦

UDPATE:这是输出文件的副本: http://www.queencitytech.com/ServerPerfRepo180610.out

最佳答案

也许这是一个错字,但您正在搜索的文件和您正在创建的文件是不同的。

也就是说,OUTPUT=... 行显示的是 DAY-MONTH-YEAR,但是 grep 行显示的是 MONTH-DAY-YEAR

编辑:好的,您发布了输出文件。 top 命令中有各种特殊字符。您可以将批处理 (top -d1 -n1 -b) arg 添加到 top 以隐藏它吗?

另一个编辑:您的 grep 命令似乎是特定于案例的。那是故意的吗?结果与您的几个 grep 过滤器没有匹配项。尝试在命令中添加忽略大小写 (grep -i)。此外,您正在搜索“load avg”,但输出显示为“load average”,因此您应该永远找不到它。

关于linux - linux中的性能监控脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3072542/

相关文章:

linux - bash 中的 cut 命令以引号结尾

python-2.7 - 如何在 windows 上使用 expresser for python

windows - 在 PowerShell v2 中打破 foreach 循环

linux - 导出 rootfs 或 tmpfs

linux - 如何在列表中的所有字符串上添加一个小数点?

MySQL 使用 OR 条件将表与自身连接

将方程式转换为位移运算

linux - GitHub SSH 访问无效

linux - virtualbox 上的 Ubuntu 服务器 TFTP

android - 应用程序变量的效率?