zoukankan      html  css  js  c++  java
  • 性能监控工具nmon

    工具集:

    • Nmon:性能数据收集分析工具
    • Nmon analyser:性能数据分析工具,excel文件

    nmon概述:
         nmon是收集AIX或Linux主机的性能数据并分析的工具,使用简单易用。主要有两个,一个是nmon采集数据的工具,一般名称为nmon_**,例如 nmon_aix5.3,另一个是分析结果的工具,它是一个excel的文件,名称为:nmon analyser v33A.xls。nmon在一个屏幕上显示所有重要的性能数据,并动态地对其进行更新。还可以将数据捕获到一个文本文件,便于以后对报告进行分析和绘制图形。nmon_analyser工具以NMON性能工具生成的文件作为输入,然后将它们转换为Excel电子表格,并自动地生成相应的图形。nmon工具对测试结果提供了丰富直观的性能资源图像,建议在出测试报告时使用。

         nmon工具可以为AIX和Linux性能专家提供监视和分析性能数据的功能,其中包括:CPU使用率、内存使用情况、内核统计信息和运行队列信息、磁盘I/O速度、传输和读/写比率、文件系统中的可用空间、磁盘适配器、网络I/O速度、传输和读/写比率、页面空间和页面速度、消耗资源最多的进程、计算机详细信息和资源

    nmon可以交互式运行:

    1)启动该工具 ./ nmon_x86_sles10

        


    2)使用单键命令来查看您所需要的数据。例如,要获取 CPU、内存和磁盘统计信息,启动nmon并输入: c m d
    3)获取相关的帮助信息,按h键。
    使用下面这些键来切换显示状态:

    • c = CPU 
    • l = CPU Long-term 
    • - = Faster screen updates 
    • m = Memory 
    • j = Filesystems 
    • + = Slower screen updates 
    • d = Disks 
    • n = Network 
    • V = Virtual Memory
    • r = Resource 
    • N = NFS 
    • v = Verbose hints
    • k = kernel 
    • t = Top-processes 
    • . = only busy disks/procs
    • h = more options 
    • q = Quit


    捕获数据到文件

    每1秒捕获数据快照,捕获20次

    nmon –f -s 1 -c 20

    每30秒捕获数据快照,捕获120次,包含进程信息

    nmon –ft -s 30 -c 120

    参数说明:

    -f以文件的形式输出,默认输出是机器名+日期.nmon的格式(<hostname>_date_time.nmon),也可以用-F指定输出的文件名,例如: 

         ./nmon_x86_rhel4 –F test.nmon -s 30 –c 100

    • -s 是采样频率,隔多长时间收集一次,这里我指定的是30秒一次
    • -c 是采样次数,一共要收集多少次,这里我指定的是100次。注意:这里单次收集的文件大小最多不能超过65K行(EXCEL里的限制),大约是在nmon中-c的值不超过330次就OK
    • -f  输出文件
    • -T 输出最耗资源的进程

    定时任务方式收集:

       若生成的文件比较大,建议每次收集的次数不要太多,若需要收集很长时间的数据,建议分开收集,也就是生成多个文件,LINUX里可以用建多个job的方式进行,例如:

    先创建一个脚本,例如命名为nmon.sh:

     #!/bin/sh ./nmon_x86_rhel4 -F 6326081116_6AM.nmon -s 60 -c 240 

    给这个文件授权:

    #chmod 777 nmon.sh

    然后建一个job:

    # at –f nmon.sh 6:00 January 16(如果要建长期任务可以用crontab命令进行,建议一般不要用这个命令,否则很容易忘记你建过多少任务,造成后台事务消耗资源)

    nmon_analyser

        nmon_analyser工具以NMON性能工具生成的文件作为输入,然后将它们转换为Microsoft Excel电子表格,并自动地生成相应的图形。nmon_analyser工具设计用于最新版本的nmon,但出于向后兼容性的考虑,也使用旧版本对其进行了测试。每当在对nmon进行更新时,同时也将对该工具进行更新。将生成的.nmon文件转为excel能识别的.csv文件:

    # sort test.nmon > test.csv(生成的.csv文件就可以放到windows平台下进行分析了)

    更多参考:

    《nmon性能:分析AIX和Linux性能的免费工具》:http://www.ibm.com/developerworks/cn/aix/library/analyze_aix/


    #!/bin/sh
    ##################################################################################
    #Copyright (C), 1998-2014, xxxx. Co., Ltd.
    #FileName:    nmon_monitor.sh
    #Author:    yezhaohui
    #Description:
    #Version:    1.0
    #Date    2014-12-2
    #example:./nmon.sh -m 30   ./nmon.sh -h 1     ./
    ##################################################################################
    
    nmonpage_name="nmon_linux_14i.tar.gz"
    nmon_name="nmon_x86_64_rhel54"
    
    
    usage()
    {
        echo "usage: $0 -m|-h  minute|hour"
    }
    
    
    check_pid()
    {
    #进程检查
    nmonpid=`ps -ef | grep  ${nmon_name} | grep -v grep | awk '{print $2}'`
    #echo "nmonpid is ${nmonpid}"
    if [ -n "${nmonpid}" ];then
        echo "process nmon is running!"
            echo "kill process nmon? y/n"
        while true
        do
            read x
            case "$x" in
                y | yes | Y | Yes | YES)
                    kill -9 $nmonpid
                    if [ $? != 0 ];then
                        echo "kill -9 $nmonpid fail!"
                        exit -1
                    fi
                    #echo "kill -9 $nmonpid success!"
                                    break
                    ;;
                n | no | N | No | NO)
                    echo "nothing to do!"
                    exit -1
                    ;;
                *) 
                    echo "Please enter yes or no"
                    ;;
            esac
        done
    fi
    }
    
    
    #参数检查
    if [ $# -ne 2 ];then
        usage
        exit 1
    fi
    
    opt="$1"
    optdata="$2" 
    
    if [ ! ${optdata} -eq ${optdata} ]; then
        echo "$optdata is not a number"  
        usage
        exit 1
    fi
    
    
    #进程检查
    check_pid
    
    
    #包解压
    if [ ! -f $nmonpage_name ];then
        echo "don't find $nmonpage_name file! "
        exit 1
    fi
    chmod 775 $nmonpage_name
    
    pwdpath=`pwd`
    if [ ! -d ${pwdpath}/bin ];then
       mkdir ${pwdpath}/bin
    fi
    nmonpath="${pwdpath}/bin/"
    
    if [ ! -d ${pwdpath}/logs ];then
       mkdir ${pwdpath}/logs
    fi
    logpath="${pwdpath}/logs/"
    
    tar -zxvf $nmonpage_name -C $nmonpath > /dev/null
    
    
    #启动nmon监控
    case  "$opt"  in
    -m)
        if [ $optdata -le 60 ];then
           ntime=$((${optdata} * 60 / 2))
           ${nmonpath}${nmon_name} -fT -s 2 -c $ntime -m $logpath
        elif [ $optdata -le 600 ];then
            ntime=$((${optdata} * 60 / 5))
            ${nmonpath}${nmon_name} -fT -s 5 -c $ntime -m $logpath
        elif [ ${optdata} -le 1440 ];then
            ntime=$((${optdata} * 60 / 10))
            ${nmonpath}${nmon_name} -fT -s 10 -c $ntime -m $logpath
        else 
            ntime=$((${optdata} * 60 / 15))
            ${nmonpath}${nmon_name} -fT -s 15 -c $ntime -m $logpath
            fi
            echo "nmon monitor success!"
    ;;
    
    -h) 
        if [ $optdata -le 1 ];then
            ntime=$((${optdata} * 60 * 60 / 2))
            ${nmonpath}${nmon_name} -fT -s 2 -c $ntime -m $logpath
        elif [ $optdata -le 10 ];then
            ntime=$((${optdata} * 60 * 60 / 5))
            ${nmonpath}${nmon_name} -fT -s 5 -c $ntime -m $logpath
        elif [ ${optdata} -le 24 ];then
            ntime=$((${optdata} * 60 * 60 / 10))
            ${nmonpath}${nmon_name} -fT -s 10 -c $ntime -m $logpath
        else 
            ntime=$((${optdata} * 60 * 60 / 15))
            ${nmonpath}${nmon_name} -fT -s 15 -c $ntime -m $logpath  
            fi    
            echo "nmon monitor success!"
    ;;
    *)
        echo "$opt is error!"
        usage
    ;;
    esac
  • 相关阅读:
    【杭电】[2016]数据的交换输出
    【杭电】[2015]偶数求和
    【杭电】[2015]偶数求和
    【杭电】[2026]首字母变大写
    【杭电】[2026]首字母变大写
    【杭电】[2075]A|B?
    【杭电】[2075]A|B?
    【杭电】[2043]密码
    【杭电】[2043]密码
    SQL 06: 内连接 (多表查询)
  • 原文地址:https://www.cnblogs.com/yezhaohui/p/3404924.html
Copyright © 2011-2022 走看看