首頁 > 軟體

Linxu下效能指標採集工具之nmon工具的使用

2023-09-16 06:01:14

前言

近期在測試JefLogTail,由於JefLogTail使用的是輪詢的方式來監聽資料夾,所以對cpu的消耗可能會高一些,所以在測試的時候著重關注CPU,Linux下檢視CPU資訊一般採用top命令來實時觀察,但是這種對於只是通過觀察資料的變化來評估cpu的實時情況顯然不太科學。如果想要通過圖示的形式來表現則需要藉助一些外部工具,今天就來講解一下nmon工具的使用。

nmon工具下載

官方下載地址:nmon.sourceforge.net/pmwiki.php?…需要根據自己的Linux主機版本來下載對應的版本,筆者這裡下載的是nmon16m_helpsystems.tar.gz,下載完成後在linux主機上解壓後,會出現很多版本,選擇對應的版本執行即可。 筆者的主機設定為:

Linux version 3.10.0-514.el7.x86_64 (mockbuild@x86-039.build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Wed Oct 19 11:24:13 EDT 2016

nmon對應筆者主機的版本為:

nmon_x86_64_rhel7

執行./nmon_x86_64_rhel7,如果成功則會展示如下介面:

使用範例:
根據提示輸入C,展示的為CPU的各項指標
輸入M,展示的為記憶體的各項指標
輸入d,展示的為磁碟的各項指標等等

nmon使用擴充套件

nmon不僅可以實時監聽,還提供命令監聽,並寫入到檔案,最後通過excel來展示圖形化的介面。

使用如下命令可監聽系統的各項指標。並彙總檔案中。

./nmon_x86_64_rhel7 -ft -s 1000 -c 60 -m /test_path

命令引數說明:
-f   監控結果以檔案形式輸出,預設機器名+日期.nmon格式 (YYYYMMDD_HHMM.nmon)
-F   指定輸出的檔名,比如test.nmon
-s   指的是取樣的頻率,單位為毫秒
-c   指的是取樣的次數,即以上面的取樣頻率採集多少次
-m   指定生成的檔案目錄
上述命令的意思為:每1秒鐘採集一次,共採集60秒,並且將生成的檔案儲存到根目錄下的test_path資料夾下。執行完該命令後,在/test_path下就會生成一個名為:localhost_230426_1359.nmon的檔案。

.nmon檔案解析

檔案解析需要下載官方的解析工具,這個工具不需要安裝,只是一個excel宏命令檔案,所以可以放心下載。 地址:nmon.sourceforge.net/pmwiki.php?…

下載完成後,解壓開啟nmon analyser v66.xlsm檔案,點選Analyze nmon data按鈕,如果此時報錯,提示類似“無法執行xxxx宏可能是因為該宏在此工作簿中不可用,或者所有宏都被禁用”,需要設定一下excel宏,設定路徑:檔案=》選項=》信任中心=》信任中心設定=》宏設定,勾選啟用所有宏。設定完畢重啟即可。之後按照提示傻瓜式操作。

解析之後的圖形化excel

# 啟動指令
monitor_system_start () {

  # 頻率預設為1000ms採集一次
  frequency=1000
  # 取樣次數預設為60次
  count=60
  # 預設儲存路徑
  save_path='/home/xxx/tools/nmonData/'

  if [ "$1" != "" ]; then
    frequency=$1
  fi

  if [ "$2" != "" ]; then
    count=$2
  fi

  if [ "$3" != "" ]; then
    save_path=$3
  fi

  commond='/home/xxx/tools/nmonData/tools/nmon/nmon_x86_64_rhel7 -ft -s '$frequency' -c '$count' -m '$save_path
  $commond
  echo "start success"
}

# 強制停止指令
monitor_system_stop () {
  commond="ps -ef | grep nmon_x86_64_rhel7 | grep -nv 'grep' | awk -F ' *' '{print $"2"}'"
  pid=`eval $commond`
  echo $pid
  kill -9 $pid
  echo "stop success PID="$pid
}

command_array=("monsysstop" "monsysstart")
if [ $# -lt 1 ]; then
    echo "請明確指令:"
    length=${#command_array[@]}
    for ((i=0;i<$length; i++));
        do
        echo ${command_array[$i]}
        done
    exit
else
  if [[ $1 == 'monsysstart' || $1 == '-monsysstart' || $1 == "MONSYSSTART" ]]
   then
    monitor_system_start $2 $3 $4
  elif [[ $1 == 'monsysstop' || $1 == '-monsysstop' || $1 == "MONSYSSTOP" ]]
   then
    monitor_system_stop

使用方式:
1、預設啟動

sh xxx.sh monsysstart

2、自定義引數啟動

sh xxx.sh monsysstart 1000 60 /test_path

3、強行停止(正常執行完指定的採集次數後會自動停止,一般不需要強行停止):

sh xxx.sh monsysstop

到此這篇關於Linxu下效能指標採集工具之nmon工具的使用的文章就介紹到這了,更多相關Linxu nmon工具的使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com