免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3127 | 回复: 1
打印 上一主题 下一主题

使用 Cognos 分析 nmon 采集的 AIX 性能数据 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-19 17:39 |只看该作者 |倒序浏览
引言
nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能。它所监控的操作系统资源比 AIX 和 Linux 操作系统自身提供的一些命令要全面。用五、六个工具做到的事情,通过这一个免费的工具就可以全部做到。所以,很多系统管理员喜欢 nmon,尽管其不是 IBM“正式”支持的工具。
IBM Cognos 提供大量的报告和分析功能,并支持面向服务的体系结构(SOA)。尽管 nmon analyser 作为生成 AIX 性能报告的免费工具,可从 nmon 的输出中生成大量的图形化报告。但是,与 IBM Cognos 相比,其生成的图表报告比较简单,并且由于电子表格的限制建议最多收集 300 个快照。而通过 IBM Cognos 可以有效地整合海量数据并为性能专家提供一个直观的、动态的和友善的界面。方便用户进行详细的 AIX 性能分析和定位,进而能找到问题的所在。此外,还可以支持大批量的快照。本文是针对 AIX 性能数据分析方面所做的一个有益的尝试。

先决条件
本文假设您具有使用 AIX 和 IBM Cognos 的经验,并且能够访问 AIX 和 IBM Cognos 以执行管理任务。
本文假设您安装了以下软件:
  • 运行在 AIX 上的 nmon 工具;
  • 运行在 Windows® 上的 Cognos 8(8.1,8.2,8.3 和 8.4),安装并配置好。

数据采集
运行带 -f 标志的 nmon 命令。有关详细信息,请参阅 nmon -h。但是作为示例,可以尝试运行下面的 nmon 命令来,告知 nmon 创建文件,并每隔 30 秒的时间进行一次数据收集,共采集 180 次(共计 1.5 个小时):
nmon -f -s 30 -c 180

-f 表示生成的数据文件名中有时间;
-s 30 表示每 30 秒采集一次数据;
-c 180 表示采集 180 次,30*180=5400 秒,刚好是 1 个半小时的数据,这样运行一次这个程序就会生成一个采集 1 个半小时数据的文件。
该行命令将在当前目录中创建输出文件,其名称为:
<hostname>_date_time.nmon

"hostname" 是这台主机的主机名。
该文件是采用逗号分隔值 (CSV) 的格式。由于 nmon 的输出文件中存在列数不一致的情况,所以这种文件并不能直接导入到 Cognos 中。因此要进行数据转换,生成 Cognos 识别的格式文件。

数据转换
CPU 使用率和磁盘 I/O 速度、传输及读 / 写比率能在很大程度上反映操作系统的综合性能。因此,可以通过编写一个 shell 脚本来转换 nmon 采集到的相关数据,从而方便使用 Cognos 来迅速抽取不同维度的性能概览数据,进而分析 AIX 性能数据。
数据转换脚本的实现
第一步,为了方便用户使用,定义帮助信息。实现代码如下:
清单 1. 帮助信息函数
#Output helpful information regarding how to use the function and its parameters  
#  用法
#  -h 帮助信息
#  -n 指定抽取数据的类别:CPU 或 DISK  
#  -f 指定 nmon 生成的输出文件
help() {
    echo "usage:  $0 [-h] -n <name> -f <filename>"
    echo "   -h            FULL help information"
    echo "   -n Specify the name."\
    echo "      Valid name are: CPU, DISK"
    echo "   -f Specify the nmon output file."
    exit 0  
}

第二步,对输入参数进行校验。包括校验输入的参数个数,输入的抽取数据类别,以及输入的 nmon 生成的数据文件名称等等。具体实现代码如下:
清单 2. 输入参数校验
if [ $# -eq 0 ]  
then
    help  
fi  
while getopts ":hf:n:" optchar ; do
    case $optchar in
    f) filename=$OPTARG
       ;;
    n) name=$OPTARG
       ;;
    h) help
       ;;
    *) error "Invalid option"
      ;;
     esac  
done  

# Ensure that we got a name  
# 确保输入的抽取数据类别名不为空
if [ "${name}" == "" ] ; then
    error "No name specified"
fi  

# Ensure that we got a filename  
# 确保输入的 nmon 输出文件名不为空
if [ "${filename}" == "" ] ; then
    error "No filename specified"
fi  

# Ensure that the input file existed  
# 确保输入的 nmon 输出文件存在
if [ ! -f $filename ] ; then
     error "$filename does not exist!"
fi   if [ -z $filename ] ; then
     error "$filename file size is zero"
fi   if (test ! -r $filename ) ; then
     error "Cannot read file $filename"
fi   

# Validate the name as one of the names allowable  
# 校验输入的抽取数据类别名
case "$name" in
    "CPU" )
           outputname=${filename}_${name}."csv"
      echo $outputname
      echo "CPU,seq,Edate,Etime,User%,Sys%,Wait%,Idle%" > ${outputname}
       ;;
  "DISK" )
       outputname=${filename}_${name}."csv"
       echo $outputname
       > ${outputname}
       ;;
   "" )  
       error "No name provided"
      ;;      
   *) error "Invalid name provided"
      ;;  
esac

第三步,以 nmon 性能工具生成的文件作为输入,然后从中抽取 CPU 使用率和磁盘 I/O 速度、传输及读 / 写比率等性能数据。实现代码如下:
清单 3. 抽取性能数据
i=0  
j=0  
t1=""
line=""
while read line; do
   # get seqno, Edate, Etime from file head
   # 从文件头中获取序号、日期、时间
  if [[ $line == ZZZZ* ]] ; then
      seq1=`echo $line|awk -F',' '{print $2}'`
      Edate=`echo $line|awk -F',' '{print $4}'`
      Etime=`echo $line|awk -F',' '{print $3}'`
      let j=$j+1
      let i=$i+1
      continue
   fi
   if [ $j -eq 0 ] ; then
      let i=$i+1
      # Special process of meta data on the DISKXFER
      # 对 DISKXFER 元数据进行特殊处理
      if [ $name == "DISK" ] ; then
      if [[ $line == DISKXFER* ]] ; then
         others=`echo $line|cut -d, -f 3-11`
         echo "DISK,seq,Edate,Etime",$others > ${outputname}
      fi
      fi
      continue
   fi
   # processing CPU data
   # 处理 CPU 数据
   if [ $name == "CPU" ] ; then
   if [[ $line == $name* ]] ; then
      t1=`echo $line|awk -F',' '{print $1}'`
      seq2=`echo $line|awk -F',' '{print $2}'`
      others=`echo $line|cut -d, -f 3-6`
      if [[ $seq1 == $seq2 ]] ; then
         echo $t1,$seq1,$Edate,$Etime,$others >> ${outputname}
      fi
      let j=$j+1
      let i=$i+1
      continue
   fi
   fi
   # processing DISK data
   # 处理 DISK 数据
   if [ $name == "DISK" ] ; then
   if [[ $line == DISK* ]] ; then
      t1=`echo $line|awk -F',' '{print $1}'`
      seq2=`echo $line|awk -F',' '{print $2}'`
      others=`echo $line|cut -d, -f 3-11`
      if [[ $seq1 == $seq2 ]] ; then
         echo $t1,$seq1,$Edate,$Etime,$others >> ${outputname}
      fi
      let j=$j+1
      let i=$i+1
      continue
   fi
   fi
   let i=$i+1
  done < ${filename}
  echo $i
  echo $j

最后,数据转换脚本在本文中命名为 nmonext.ksh。
数据转换脚本的使用
本文中数据转换脚本使用的 AIX 操作系统的 Level 是 6.1.3.0,使用的 shell 的名称是 Korn Shell。
数据转换脚本的使用分以下三步:
首先,把数据转换脚本 nmonext.ksh 用 ftp 上传到 AIX 机器的 nmon 工具生成输出文件的目录。例如:/home/root/nmon/
然后,执行授权命令:#chmod +x nmonext.ksh
最后,分别运行带不同抽取数据类别(如:CPU 或 DISK)的数据转换脚本 nmonext.ksh。
有关详细信息,请参阅 nmonext.ksh -h。作为示例,可以尝试运行下面的命令来从主机 p5m01 上的文件 p5m01_100310_2359.nmon 中抽取 CPU 使用率:
nmonext.ksh -n CPU -f p5m01_100310_2359.nmon

该行命令将在当前目录中创建输出文件,其名称为:
p5m01_100310_2359.nmon_CPU.csv

该文件是采用逗号分隔值 (CSV) 的格式,并且能被 Cognos 识别。
然后,尝试运行下面的命令来从主机 p5m01 上的文件 p5m01_100310_2359.nmon 中抽取磁盘 I/O 速度、传输及读 / 写比率:
nmonext.ksh -n DISK -f p5m01_100310_2359.nmon

该行命令将在当前目录中创建输出文件,其名称为:
p5m01_100310_2359.nmon_DISK .csv                        

实际命令执行及输出如下所示:
p5m01> nmonext.ksh -n CPU -f p5m01_100310_2359.nmon
p5m01_100310_2359.nmon_CPU.csv
7943
2520
p5m01> nmonext.ksh -n DISK -f p5m01_100310_2359.nmon
p5m01_100310_2359.nmon_DISK.csv
7943
1080
p5m01>                        

数据文件的上传
完成上述步骤以后,把数据转换脚本生成的两个 .csv 后缀的数据文件用 ftp 方式上传到装有 Cognos 的 Windows 机器上。

创建 Cube 及生成 AIX 性能报告
Cognos 目录设置
Cube 的设计生成涉及多种文件,为了 cube 开发的规范和逻辑清晰,目录规范设置必不可少。本文中目录设置如下。
+nmon
+csv -- 存放源数据文件
+log -- 存放日志文件
+mdc -- 存放 cube 文件
+mdl -- 存放模型文件
+ppx -- 存放报表文件
+tmp -- 存放临时文件
具体设置方法是,在 Windows 机器上依次点击“开始 - 〉所有程序 - 〉 cognos8- 〉 tools- 〉 PowerPlay Transformer”从而,打开 Cognos PowerPlay Transformer。然后,依次点击
“file- 〉 preferences- 〉 directories”,进入到目录设置:
Models: C:\nmon\mdl
Datasource: C:\nmon\csv
Powercubes: C:\nmon\mdc
Data temporary files(dir1;dir2): C:\nmon\tmp
Models temporary files: C:\nmon\tmp
Log files: C:\nmon\log
创建 CPU Cube 及生成相关 AIX 性能报告
新建模型:
file- 〉 new- 〉 model name: nmon_CPU.mdl
下一步 - 〉 Data source name: 默认 Data source type:delimited-field text with column titles
下一步 - 〉 file name: C:\nmon\csv\ p5m01_100310_2359.nmon_CPU.csv
下一步 - 〉去掉 autodesign
完成 - 〉设计向导退出,出现设计界面。
设计模型:
在设计界面 Datasource 框,seq 和 Edate 字段上右键点击‘删除 column ’,将这两个不用的字段删除。
将 Datasource 框中 CPU 字段拖拽到 demension map 框上部横条处释放,就填加了 CPU 维度。同理将 Etime 字段拖拽到 demension map 框上部横条处释放,填加 Etime 维度。
将 Datasource 框中 User 字段拖拽到 measures 框释放,就填加了 User 指标。同理将字段 Sys、Wait、Idle 拖拽到 measures 框释放,就填加了 Sys、Wait、Idle 指标。如图 1 所示:

图 1 .CPU Cube 设计模型

检查模型:
Tools- 〉 check model,检查模型。如果有问题按提示解决模型问题,如果没有问题,会显示“Check model is finished. No problems were found.”。
建立 cube:
Run- 〉 create Powercubes,会生成 cube。
浏览 cube:
Tools- 〉 powerplay。如图 2 所示:

图 2. CPU Cube

显示柱状图的方法:
Explore- 〉 swap rows and columns 将行列交换。
将指标拖拽到行区域,然后删除 idle 指标。
Explore- 〉 change to reportor 将工作模式从探查模式转换到报表模式。
删除报表上汇总信息:将鼠标放在报表区 cpu 那一列,按‘ del ’键删除 cpu 汇总信息。Explore- 〉 change display- 〉选择累积柱状图。
通过上述操作以后,可以显示柱状图。如图 3 所示:

图 3 .CPU 分析报告

此报表可保存。File- 〉 save- 〉 nmon_CPU.ppx。以后可以打开这个报表查看。
创建 DISK Cube 及生成相关 AIX 性能报告
新建模型:
file- 〉 new- 〉 model name: nmon_DISK.mdl
下一步 - 〉 Data source name: 默认 Data source type:delimited-field text with column titles
下一步 - 〉 file name: C:\nmon\csv\ p5m01_100310_2359.nmon_DISK.csv
下一步 - 〉去掉 autodesign
完成 - 〉设计向导退出,出现设计界面。
设计模型:
在设计界面 Datasource 框,seq 和 Edate 字段上右键点击‘删除 column ’,将这两个不用的字段删除。
将 Datasource 框中 DISK 字段拖拽到 demension map 框上部横条处释放,就填加了 DISK 维度。同理将 Etime 字段拖拽到 demension map 框上部横条处释放,填加 Etime 维度。
将 Datasource 框中 hdisk0 字段拖拽到 measures 框释放,就填加了 hdisk0 指标。同理将字段 hdisk0、hdisk1、hdisk2 拖拽到 measures 框释放,就填加了 hdisk0、hdisk1、hdisk2 指标。如图 4 所示:

图 4. DISK Cube 设计模型

检查模型:
Tools- 〉 check model, 检查模型。如果有问题按提示解决模型问题,如果没有问题,会显示‘ Check model is finished. No problems were found. ’。
建立 cube:
Run- 〉 create Powercubes,会生成 cube。
浏览 cube:
Tools- 〉 powerplay。如图 5 所示:

图 5. DISK Cube

显示折线图的方法:
Explore- 〉 change to reportor 将工作模式从探查模式转换到报表模式。
删除报表上汇总信息:将鼠标放在报表区 DISK 那一行,按‘ del ’键删除 DISK 汇总信息。将鼠标放在报表区 etime 那一列,按‘ del ’键删除 etime 汇总信息。
Explore- 〉 change display- 〉选择多折线。
通过上述操作以后,可以显示折线图图。如图 6 所示:

图 6. DISK 分析报告

此报表可保存。File- 〉 save- 〉 nmon_DISK.ppx。以后可以打开这个报表查看。

结束语
Cognos 提供了直观和强大的展现和操纵数据的前端,通过它可以很好地对 nmon 采集的 AIX 性能数据进行分析。

作者简介
李尚忠,IBM 软件工程师,国家软件系统分析师。现在 IBM 中国软件开发中心长期从事存储软件的相关工作。具有丰富的存储技术经验。

徐贤良,GBICC 软件工程师,PMP。长期从事对商业智能相关工作,有相当丰富的商业智能工作经验,对数据仓库相关领域和技术有独到的理解。


http://www.ibm.com/developerworks/cn/aix/library/1008_lisz_cognosaix/index.html


论坛徽章:
10
处女座
日期:2015-01-22 16:08:50技术图书徽章
日期:2018-09-13 11:25:52技术图书徽章
日期:2018-09-13 11:25:45技术图书徽章
日期:2018-09-13 11:25:37技术图书徽章
日期:2018-09-13 11:25:29黑曼巴
日期:2018-06-04 09:03:192017金鸡报晓
日期:2017-01-10 15:19:56极客徽章
日期:2016-12-07 14:03:402015年迎新春徽章
日期:2015-03-04 09:50:28技术图书徽章
日期:2018-09-13 11:26:01
2 [报告]
发表于 2012-01-24 20:48 |只看该作者
很好的东西,学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP