背景
在新項目A中,要結合業務做性能測試。對於做過N次性能測試的我,這次有些巧婦有難無米之炊的感覺。以往的項目,服務器都是部署在AWS或者阿里雲,像這樣的雲服務器廠商是可以通過輕松配置各種Dashboard來實時監控整個系統服務器的各種新能。然而,這一次,服務器不在雲上,並且不允許連接外網。那出一個類似的服務器CPU和內存實時使用情況的折線圖,該如何做呢?
思路
以結果為導向,需要的是一張壓測時服務器CPU和內存的折線圖,那么如何畫圖?Excel可以插入類似的折線圖,那么數據怎么來?Linux中有些命令可以記錄當時的服務器CPU和內存的情況,如果有腳本或者命令把這些數據實時記錄下來,並且把這些數據導出到csv文件,然后借助Excel就能得我們要的結果。
過程
腳本
#!/bin/bash
fileName=$1
echo "CPU%,MEM%,TIME" > $fileName
for (( i = 0; i < 3000; i++ )) do
output=`top -b -n1 | grep "Cpu(s)" | awk '{print $2 ","}' | tr -d '\n' && free -m | grep 'Mem' | awk '{print $3/$2 * 100 ","}' | tr -d '\n' && date | awk '{print $4}'`>temp
echo "$output" >> $fileName
sleep 1
done