ITPub博客

首页 > 数据库 > Oracle > 使用基于python的图形分析器pyNmonAnalyzer以图形展现redhat5.4的nmon历史性能数据

使用基于python的图形分析器pyNmonAnalyzer以图形展现redhat5.4的nmon历史性能数据

原创 Oracle 作者:wisdomone1 时间:2015-09-04 22:42:28 0 删除 编辑

结论:

1,可以采用基于python的图形分析器展现自linux或aix采集的历史性能数据

2,基于python的图形分析器可以交互式即实时展现性能数据,也可以展现历史性能数据

3,基于python的图形分析器运行必须先生成一个配置文件report.config
   这个配置文件作用类似于到底展现性能数据中哪些数据,比如磁盘,网卡,内核,内存等

4,https://github.com/madmaze/pyNmonAnalyzer/tree/master/release可以下载基于python分析nmon的图形分析器

5,基于python分析nmon的图形分析器较之于ibm发布的nmon图形分析器,优点在于不需要使用excel

测试:

1,操作系统版本
[root@seconary nmon_test]# more /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
[root@seconary nmon_test]#

2,查看nmon如何使用
[root@seconary nmon_test]# ./nmon_x86_64_rhel54 --help
./nmon_x86_64_rhel54: invalid option -- -

Hint: nmon_x86_64_rhel54 [-h] [-s <seconds>] [-c <count>] [-f -d <disks> -t -r <name>] [-x]

-h FULL help information
Interactive-Mode:
read startup banner and type: "h" once it is running
For Data-Collect-Mode (-f)
-f spreadsheet output format [note: default -s300 -c288] —默认每天生成历史的采样性能数据文件,10分钟采样一次,采一天性能数据
optional
-s <seconds> between refreshing the screen [default 2]
-c <number> of refreshes [default millions]
-d <disks> to increase the number of disks [default 256]
-t spreadsheet includes top processes
-x capacity planning (15 min for 1 day = -fdt -s 900 -c 96)

[root@seconary nmon_test]#

3,默认生成的nmon性能历史数据文件,其文件格式为:主机名称_年月日_nmon开始采样的具体时间(精确到时分)
[root@seconary nmon_test]# ll -l
total 432
-rwxrwxrwx 1 root root 185939 Sep 4 03:39 lmon.c
-rwxr-xr-x 1 root root 219751 Sep 4 05:22 nmon_x86_64_rhel54
-rw-r--r-- 1 root root 22956 Sep 4 06:11 seconary_150904_0611.nmon
[root@seconary nmon_test]#

4,查看nmon进程是否正在运行
[root@seconary nmon_test]# ps -ef|grep nmon
root 14330 1 0 06:11 pts/1 00:00:00 ./nmon_x86_64_rhel54 -f
root 15800 6012 0 06:19 pts/2 00:00:00 tail -f seconary_150904_0611.nmon
root 15902 19483 0 06:19 pts/1 00:00:00 grep nmon

5,nmon性能数据文件好像没有变化
[root@seconary nmon_test]# ll
total 432
-rwxrwxrwx 1 root root 185939 Sep 4 03:39 lmon.c
-rwxr-xr-x 1 root root 219751 Sep 4 05:22 nmon_x86_64_rhel54
-rw-r--r-- 1 root root 24022 Sep 4 06:16 seconary_150904_0611.nmon
[root@seconary nmon_test]#
[root@seconary nmon_test]#
[root@seconary nmon_test]# ll
total 432
-rwxrwxrwx 1 root root 185939 Sep 4 03:39 lmon.c
-rwxr-xr-x 1 root root 219751 Sep 4 05:22 nmon_x86_64_rhel54
-rw-r--r-- 1 root root 24022 Sep 4 06:16 seconary_150904_0611.nmon
[root@seconary nmon_test]# ll
total 432
-rwxrwxrwx 1 root root 185939 Sep 4 03:39 lmon.c
-rwxr-xr-x 1 root root 219751 Sep 4 05:22 nmon_x86_64_rhel54
-rw-r--r-- 1 root root 24022 Sep 4 06:16 seconary_150904_0611.nmon

6,杀掉nmon进程
[root@seconary nmon_test]# kill -9 14330

7,重新以每2次刷新1次nmon且监控1天
[root@seconary nmon_test]# ./nmon_x86_64_rhel54 -s 2 -c 288 -f
[root@seconary nmon_test]#

8,nmon的采样数据文件可以实时变化
[root@seconary nmon_test]# tail -f seconary_150904_0622.nmon
部分内容略
CPU_ALL,T0022,1.5,1.5,0.5,96.5,,1
MEM,T0022,3956.9,0.0,3956.9,6024.0,215.4,0.0,215.4,5640.9,-0.0,79.1,517.5,-1.0,2.5,24.4,8.8
HUGEPAGES,T0022,1539,557,2.0
VM,T0022,34,0,0,19281,16724,10132,0,132,0,0,63,1,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
PROC,T0022,1,0,1654.0,-1.0,-1.0,-1.0,3.0,-1.0,-1.0,-1.0
NET,T0022,0.9,0.0,0.0,0.9,0.6,0.0,
NETPACKET,T0022,18.5,0.5,0.0,18.5,0.5,0.0,
JFSFILE,T0022,47.7,12.3,4.3,83.4,50.5,nan,100.0
DISKBUSY,T0022,0.0,0.0,0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
DISKREAD,T0022,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
DISKWRITE,T0022,16.0,0.0,16.0,2.0,40.0,40.0,0.0,2.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0,0.0,16.0,0.0,0.0
DISKXFER,T0022,1.0,0.0,1.0,0.5,2.5,2.5,0.0,0.5,0.5,0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.5,0.0,4.0,0.0,0.0
DISKBSIZE,T0022,16.0,0.0,16.0,4.0,16.0,16.0,0.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,0.0,4.0,0.0,0.0
ZZZZ,T0023,06:23:13,04-SEP-2015
CPU001,T0023,1.0,0.5,0.0,98.5
CPU_ALL,T0023,1.0,0.5,0.0,98.5,,1


9,下载基于python的nmon图形分析器

10,解压安装介质并安装
zhaixunyang:nmon zhaixunyang$ pwd
/Volumes/Untitled/nmon
zhaixunyang:nmon zhaixunyang$
zhaixunyang:nmon zhaixunyang$ ls -l
total 3072
-rwxrwxrwx@ 1 zhaixunyang  staff  185939  8 11  2010 lmon14a.c
-rwxrwxrwx@ 1 zhaixunyang  staff    4154  5  3 22:37 makefile
-rwxrwxrwx@ 1 zhaixunyang  staff   40977  9  4 18:31 pyNmonAnalyzer-1.0.zip
zhaixunyang:nmon zhaixunyang$ cp pyNmonAnalyzer-1.0.zip pyNmonAnalyzer-1.0.zip.bak
zhaixunyang:nmon zhaixunyang$ 

zhaixunyang:nmon zhaixunyang$ unzip pyNmonAnalyzer-1.0.zip
Archive:  pyNmonAnalyzer-1.0.zip
e983b270c48cb8b4ba90295573002e701de88f3e
 extracting: .gitattributes         
  inflating: .gitignore             
  inflating: README.md              
  inflating: interactiveReport.tpl.html 
  inflating: pyNmonAnalyzer.py      
  inflating: pyNmonParser.py        
  inflating: pyNmonPlotter.py       
  inflating: pyNmonReport.py        
  inflating: test.nmon  

11,pynmonanalyzer.py图形分析器的命令使用
zhaixunyang:nmon zhaixunyang$ ./pyNmonAnalyzer.py
usage: pyNmonAnalyzer.py [-h] [-x] [-d] [-i INPUT_FILE] [-o OUTDIR] [-c] [-b]
                         [--buildInteractiveReport] [-r CONFFNAME]
                         [--defaultConfig] [-l LOGLEVEL]

nmonParser converts NMON monitor files into time-sorted CSV/Spreadsheets for
easier analysis, without the use of the MS Excel Macro. Also included is an
option to build an HTML report with graphs, which is configured through
report.config.

optional arguments:
  -h, --help            show this help message and exit
  -x, --overwrite       overwrite existing results (Default: False)
  -d, --debug           debug? (Default: False)
  -i INPUT_FILE, --inputfile INPUT_FILE
                        Input NMON file
  -o OUTDIR, --output OUTDIR
                        Output dir for CSV (Default: ./report/)
  -c, --csv             CSV output? (Default: False)
  -b, --buildReport     report output? (Default: False)
  --buildInteractiveReport
                        Compile interactive report? (Default: False)
  -r CONFFNAME, --reportConfig CONFFNAME
                        Report config file, if none exists: we will write the
                        default config file out (Default: ./report.config)
  --defaultConfig       Write out a default config file
  -l LOGLEVEL, --log LOGLEVEL
                        Logging verbosity, use DEBUG for more output and
                        showing graphs (Default: INFO)
zhaixunyang:nmon zhaixunyang$ 

12,生成用于生成图形展示的默认配置文件,好像报错了
zhaixunyang:nmon zhaixunyang$ ./pyNmonAnalyzer.py --defaultConfig
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 851, in emit
    msg = self.format(record)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 724, in format
    return fmt.format(record)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 464, in format
    record.message = record.getMessage()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 328, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Logged from file pyNmonAnalyzer.py, line 45
zhaixunyang:nmon zhaixunyang$ 

13,mac上面的python版本
zhaixunyang:nmon zhaixunyang$ python
Python 2.7.6 (default, Sep  9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D

zhaixunyang:nmon zhaixunyang$

14,我们分析python报错
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 328, in getMessage












zhaixunyang:nmon zhaixunyang$ ls -l
total 15360
-rwxrwxrwx@ 1 zhaixunyang  staff    3971  6 24  2013 README.md
-rwxrwxrwx@ 1 zhaixunyang  staff    2134  6 24  2013 interactiveReport.tpl.html
-rwxrwxrwx@ 1 zhaixunyang  staff  185939  8 11  2010 lmon14a.c
-rwxrwxrwx@ 1 zhaixunyang  staff    4154  5  3 22:37 makefile
-rwxrwxrwx@ 1 zhaixunyang  staff   40977  9  4 18:31 pyNmonAnalyzer-1.0.zip
-rwxrwxrwx@ 1 zhaixunyang  staff   40977  9  4 18:38 pyNmonAnalyzer-1.0.zip.bak
-rwxrwxrwx@ 1 zhaixunyang  staff    8573  6 24  2013 pyNmonAnalyzer.py
-rwxrwxrwx@ 1 zhaixunyang  staff    3879  6 24  2013 pyNmonParser.py
-rwxrwxrwx  1 zhaixunyang  staff    3949  9  4 18:41 pyNmonParser.pyc
-rwxrwxrwx@ 1 zhaixunyang  staff    6820  6 24  2013 pyNmonPlotter.py
-rwxrwxrwx  1 zhaixunyang  staff    6795  9  4 18:41 pyNmonPlotter.pyc
-rwxrwxrwx@ 1 zhaixunyang  staff    4309  6 24  2013 pyNmonReport.py
-rwxrwxrwx  1 zhaixunyang  staff    4378  9  4 18:41 pyNmonReport.pyc
-rwxrwxrwx  1 zhaixunyang  staff     518  9  4 18:43 report.config
-rwxrwxrwx@ 1 zhaixunyang  staff  155220  6 24  2013 test.nmon


zhaixunyang:nmon zhaixunyang$ 

16,查看report.config配置文件
zhaixunyang:nmon zhaixunyang$ more report.config

# Plotting configuration file.
# =====
# please edit this file carefully, generally the CPU and MEM options are left blank
#       since there is under the hood calculations going on to plot used vs total mem and
#       CPU plots usr/sys/wait for all CPUs on the system
# Do adjust DISKBUSY and NET to plot the desired data
#
# Defaults:
# CPU_ALL=user,sys,wait{stackedGraph: true, fillGraph: true}
# DISKBUSY=sda1,sdb1{}
# MEM=memtotal,active{}
# NET=eth0{}

CPU=user,sys,wait
DISKBUSY=sda1,sdb1
MEM=memtotal,active
NET=eth0

17,生成nmon图形文件(注:-o指定生成的图形文件输出目录,-i指定输入的nmon源性能历史数据文件,-b表明生成图形文件)
zhaixunyang:nmon zhaixunyang$ ./pyNmonAnalyzer.py -b -o testreport -i test.nmon
zhaixunyang:nmon zhaixunyang$ ll
-bash: ll: command not found
zhaixunyang:nmon zhaixunyang$ ls -l
total 16384
-rwxrwxrwx@ 1 zhaixunyang  staff    3971  6 24  2013 README.md
-rwxrwxrwx@ 1 zhaixunyang  staff    2134  6 24  2013 interactiveReport.tpl.html
-rwxrwxrwx@ 1 zhaixunyang  staff  185939  8 11  2010 lmon14a.c
-rwxrwxrwx@ 1 zhaixunyang  staff    4154  5  3 22:37 makefile
-rwxrwxrwx@ 1 zhaixunyang  staff   40977  9  4 18:31 pyNmonAnalyzer-1.0.zip
-rwxrwxrwx@ 1 zhaixunyang  staff   40977  9  4 18:38 pyNmonAnalyzer-1.0.zip.bak
-rwxrwxrwx@ 1 zhaixunyang  staff    8573  6 24  2013 pyNmonAnalyzer.py
-rwxrwxrwx@ 1 zhaixunyang  staff    3879  6 24  2013 pyNmonParser.py
-rwxrwxrwx  1 zhaixunyang  staff    3949  9  4 18:41 pyNmonParser.pyc
-rwxrwxrwx@ 1 zhaixunyang  staff    6820  6 24  2013 pyNmonPlotter.py
-rwxrwxrwx  1 zhaixunyang  staff    6795  9  4 18:41 pyNmonPlotter.pyc
-rwxrwxrwx@ 1 zhaixunyang  staff    4309  6 24  2013 pyNmonReport.py
-rwxrwxrwx  1 zhaixunyang  staff    4378  9  4 18:41 pyNmonReport.pyc
-rwxrwxrwx  1 zhaixunyang  staff     518  9  4 18:43 report.config
-rwxrwxrwx@ 1 zhaixunyang  staff  155220  6 24  2013 test.nmon
drwxrwxrwx  1 zhaixunyang  staff  524288  9  4 19:21 testreport

18,查看生成的图形文件
zhaixunyang:nmon zhaixunyang$ cd testreport/
zhaixunyang:testreport zhaixunyang$ ls -l
total 2048
drwxrwxrwx  1 zhaixunyang  staff  524288  9  4 19:21 img
-rwxrwxrwx  1 zhaixunyang  staff     623  9  4 19:21 report.html
zhaixunyang:testreport zhaixunyang$ 

19,打开图形文件



20,继续学习,我们加载一个运行历史较久的nmon源数据文件
  使用-x选项直接覆盖已有的图形文件目录
zhaixunyang:nmon zhaixunyang$ ./pyNmonAnalyzer.py -b -o testreport -i seconary_150904_0622.nmon
ERROR:root:Results directory already exists, please remove or use '-x' to overwrite
zhaixunyang:nmon zhaixunyang$ ./pyNmonAnalyzer.py -x -b -o testreport -i seconary_150904_0622.nmon
zhaixunyang:nmon zhaixunyang$ 

21,关于图形不再列出,略

个人简介


8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问。
服务过的客户:
中国电信
中国移动
中国联通
中国电通
国家电网
四川达州商业银行
湖南老百姓大药房
山西省公安厅
中国邮政
北京302医院     
河北廊坊新奥集团公司

 项目经验:
中国电信3G项目AAA系统数据库部署及优化
      中国联通4G数据库性能分析与优化
中国联通CRM数据库性能优化
中国移动10086电商平台数据库部署及优化
湖南老百姓大药房ERR数据库sql优化项目
四川达州商业银行TCBS核心业务系统数据库模型设计和RAC部署及优化
四川达州商业银行TCBS核心业务系统后端批处理存储过程功能模块编写及优化
北京高铁信号监控系统RAC数据库部署及优化
河南宇通客车数据库性能优化
中国电信电商平台核心采购模块表模型设计及优化
中国邮政储蓄系统数据库性能优化及sql优化
北京302医院数据库迁移实施
河北廊坊新奥data guard部署及优化
山西公安厅身份证审计数据库系统故障评估
国家电网上海灾备项目4 node rac+adg 
       贵州移动crm及客服数据库性能优化项目
       贵州移动crm及客服务数据库sql审核项目
       深圳穆迪软件有限公司数据库性能优化项目

联系方式:
手机:18201115468
qq   :   305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900    
itpub博客名称:wisdomone1    http://blog.itpub.net/9240380/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-1791154/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12689910