使用 Cognos 分析 nmon 采集的 AIX 性能数据

作者: nick 分类: linux 发布时间: 2011-06-12 03:19 ė 6没有评论
李 尚忠, 软件工程师, IBM
李尚忠,IBM 软件工程师,国家软件系统分析师。现在 IBM 中国软件开发中心长期从事存储软件的相关工作。具有丰富的存储技术经验。
徐 贤良, 软件工程师, IBM
徐贤良,GBICC 软件工程师,PMP。长期从事对商业智能相关工作,有相当丰富的商业智能工作经验,对数据仓库相关领域和技术有独到的理解。

简介: nmon 是监控 AIX 和 Linux 性能的免费工具。通过它可以捕获操作系统大量有价值的性能统计信息。而 IBM Cognos 具有非常丰富而灵活的报表展现功能。在本文中,将两者相结合,通过遵循必要的步骤,使得 Cognos 用户方便快捷地创建关于 AIX 性能数据的报告和图表。首先通过 nmon 采集 AIX 的性能数据,然后通过 SHELL 脚本将 nmon 的数据捕获文件转换为 Cognos 识别的格式文件,最后,通过 Cognos 生成 AIX 性能报表。本文方法简便易行,从中既体现了 nmon 数据采集的优势,又充分展现了 Cognos 在报表生成和分析方面的强大功能。

本文的标签: nmon, 性能, 故障检修, 系统管理

发布日期: 2010 年 8 月 25 日
级别: 中级
访问情况 2137 次浏览
建议: 1 (查看或添加评论)

1 star2 stars3 stars4 stars5 stars 平均分 (共 7 个评分 )

引言

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 设计模型
图 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
图 2. CPU Cube

显示柱状图的方法:

Explore- 〉 swap rows and columns 将行列交换。

将指标拖拽到行区域,然后删除 idle 指标。

Explore- 〉 change to reportor 将工作模式从探查模式转换到报表模式。

删除报表上汇总信息:将鼠标放在报表区 cpu 那一列,按‘ del ’键删除 cpu 汇总信息。Explore- 〉 change display- 〉选择累积柱状图。

通过上述操作以后,可以显示柱状图。如图 3 所示:
图 3 .CPU 分析报告
图 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 设计模型
图 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
图 5. DISK Cube

显示折线图的方法:

Explore- 〉 change to reportor 将工作模式从探查模式转换到报表模式。

删除报表上汇总信息:将鼠标放在报表区 DISK 那一行,按‘ del ’键删除 DISK 汇总信息。将鼠标放在报表区 etime 那一列,按‘ del ’键删除 etime 汇总信息。

Explore- 〉 change display- 〉选择多折线。

通过上述操作以后,可以显示折线图图。如图 6 所示:
图 6. DISK 分析报告
图 6. DISK 分析报告

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


回页首

结束语

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


回页首

获取 nmon 工具

您可以从 IBM Wiki 的 http://www-941.haw.ibm.com/collaboration/wiki/display/WikiPtype/nmon下载 nmon 及其工具


回页首

下载

描述 名字 大小 下载方法
示例代码 nmonext.ksh 4KB HTTP

关于下载方法的信息

参考资料

学习

  • nmon 性能:分析 AIX 和 Linux 性能的免费工具” 这个免费的工具可以在一个屏幕上为您提供大量的信息。
  • nmon analyser ——生成 AIX 性能报告的免费工具”:了解如何使用这工具生成所需的图形化报告。
  • Information Management 专区 Cognos 专题:学习关于 Cognos 的更多产品信息和技术资源。
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版: 本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

讨论

作者简介

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

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

原文:http://www.ibm.com/developerworks/cn/aix/library/1008_lisz_cognosaix/

本文出自 传播、沟通、分享,转载时请注明出处及相应链接。

本文永久链接: https://www.nickdd.cn/?p=1563

发表评论

您的电子邮箱地址不会被公开。

Ɣ回顶部