【环境介绍】

系统环境:Linux + osw + python 2.7.10

【背景描述】

需求:当系统服务器出现性能告警的时候,需要定位具体的时间点来进行有针对性的去查询产生的问题。OSW提供了很好的数据采取,同时也有图形显示看出性能问题的时间点,但是反映发现OSW只能看到CPU的idle情况图形显示。那么要求能否查询CPU的使用情况,而不是idel情况信息,同时需要图形显示出来。

【监控优化过程及思路】

对于上面描述的问题:

1,  主机信息数据采取。                         ----直接使用OSW采集的数据(osw配置可参考Oracle官网)

2,  针对数据来生成图形显示。              ----使用Python来进行图形显示处理

【测试结果及脚本】

通过测试库测试脚本。结果如下:

1,  数据信息:采用现有的OSW数据信息,截图如下:

2,  主机CPU使用率用Python最终结果:截图如下:

【通用日志处理】

主要实现功能的脚本如下:

1,  使用shell进行数据处理:

cat >linux_cpu.sh

######################################################################

# linux_cpu.sh

# This script is cpu check

# Author CZT

######################################################################

echo "eg :/home/oracle/archive/oswtop"

read -p "Enter the oswtop accuracy path:" v_path

while [ ! $v_path ]

do

read -p "Enter the oswtop accuracy path:" v_path

done

if [ ! -d $v_path ] && [ ! -x $v_path ];

then

echo -e "Note: The oswtop path does not exist."

else

echo -e "Get data,please wait......\c"

cat  $v_path/* |grep -i 'zzz'|awk '{for(i=3+1;i<=NF;i++)printf $i "  ";printf",\n"}' > ./DATE_TIME.txt》》》抽取时间数据

echo "......"

cat  $v_path/* |grep -i 'idle'|awk '{print int(100-$3)}'|sed 's/$/,/' > ./CPU.txt》》》抽取CPU数据

echo  "Get data successfully,Now run the python......"

fi

python linux_cpu.py》》》调用Linux_cpu.py实现表格生成

echo "Run the python successfully,done"

2,  Python实现连接多个数据库查询数据库状态信息:

cat > linux_cpu.py

######################################################################

# linux_cpu.py

# This script is system cpu check

# Author CZT

######################################################################

# -*- coding:UTF-8 -*-

import xlsxwriter

workbook = xlsxwriter.Workbook('linux_cpu.xlsx')》》》定义Excel文件信息

worksheet = workbook.add_worksheet()

bold = workbook.add_format({'bold': 1})

# Add the worksheet data that the charts will refer to.

patch_file_name1="DATE_TIME.txt"》》》定义时间信息数组X

inFile1= open(patch_file_name1,'r')

x = []

for line1 in open(patch_file_name1):

trainingSet = line1.split(',')

x.append(trainingSet[0])

patch_file_name2="CPU.txt"》》》定义CPU信息数组Y

inFile2= open(patch_file_name2,'r')

y = []

for line2 in open(patch_file_name2):

trainingSet = line2.split(',')

y.append(float(trainingSet[0]))

data = [

x,

y,

]》》》定义时间和CPU二维数组

headings = ['TIME', 'CPU(%)']》》》设置Excel中sheet中第一行信息

worksheet.write_row('A1', headings, bold)

worksheet.write_column('A2', data[0])》》》设置Excel中A2列插入二维数组data X

worksheet.write_column('B2', data[1])》》》设置Excel中A2列插入二维数组data Y

# Create a new chart object. In this case an embedded chart.

chart1 = workbook.add_chart({'type': 'line'})

# Configure the first series.

row=len(x)》》》设置二维数组data X的长度

chart1.add_series({

'name': ['Sheet1', 0, 1],

'categories': ['Sheet1', 1, 0, row, 0],

'values': ['Sheet1', 1, 1, row, 1],

})》》》指定Excel中sheet生成表格的范围

# Add a chart title and some axis labels.》》》定义表格的注释信息

chart1.set_title ({'name': 'Results of cpu analysis'})

chart1.set_x_axis({'name': 'Time list'})

chart1.set_y_axis({'name': 'Usage pct (%)'})

# Set an Excel chart style. Colors with white outline and shadow.

chart1.set_style(10)

# Insert the chart into the worksheet (with an offset).

worksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10})

workbook.close()

3,  用法:按照TXT文件创建两件文件linux_cpu.py/linux_cpu.sh后,直接运行sh linux_cpu.sh按照提示输入准确的oswtop目录即可。然后查看linux_cpu.xlsx Excel文件信息。

【问题思考】

1,  主机有一定的限制,例如HP,AIX。得有TOP命令生成的OSW数据才能使用该脚本;

2,  Python使用的限制,对于生产EXCEL表格,需要手动安装xlsxwriter插件才能使用。

【总结】:

1,  对数据库出现问题的时候主机性能情况肯定随之波动,使用该脚本更加细化的找到发生的时间点,对于问题定位和解决很有帮助和说服力;

本次脚本涉及shell和Python脚本,选择正确的语言和方式结合达到效果还是比较可观。

针对主机CPU idle性能情况需求脚本编写的更多相关文章

  1. 浅谈cpu.idle和cpu.load

    1.概述 大家经常对一个系统的容量进行评估时,会参考cpu.idle和cpu.load指标,但是这两个指标到底在什么区间,表示系统是正常或者异常呢,业内有不同的说法.因此本文搜集一些资料,并对一个系统 ...

  2. Linux系统CPU的性能监控及调优

    前言: 性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢.接口超时,服务器负载高.并发数低,数据库频繁死锁等.尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的 ...

  3. Linux iostat-监视系统输入输出设备和CPU的使用情况

    推荐:更多linux 性能监测与优化 关注:linux命令大全 iostat命令被用于监视系统输入输出设备和CPU的使用情况.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.同vmsta ...

  4. Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的性能稳定的操作系统,可免费使用并自由传播。

    Linux是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的性能稳定的操作系统,可免费使用并自由传播. Linux是众多操作系统之一 , 目前流行的服务器和 PC 端操作系统有 L ...

  5. CPU 硬盘性能

    CPU 硬盘性能到底相差多少 本文以一个现代的.实际的个人电脑为对象,分析其中CPU(Intel Core 2 Duo 3.0GHz)以及各类子系统的运行速度——延迟和数据吞吐量.通过粗略的估算PC各 ...

  6. [linux]iostat命令详解-监视系统输入输出设备和CPU的使用情况

    部分转载https://blog.csdn.net/sunansheng/article/details/51942281 iostat命令被用于监视系统输入输出设备和CPU的使用情况.它的特点是汇报 ...

  7. VPS/云主机CPU占用100%故障排查

    VPS/云主机CPU占用100%故障排查 方法/步骤 通常情况下云主机/VPS的CPU一般不会占用100%,内存资源也不会占完.若您的服务器经常CPU资源100%,可以打开任务管理器,查看是哪个进程引 ...

  8. 主机cpu突然飙高,如何快速排查问题

    [问题发现] 使用zabbix软件监控服务器时发现cpu突然异常,在业务主机上使用top命令查看系统的整体运行情况,使用top命令后发现mysqld占用CPU特别高,初步判断可能是mysqld出现问题 ...

  9. 一键获取linux内存、cpu、磁盘IO等信息脚本编写,及其原理详解

    更多linux知识,请关注公众号:一口Linux 一.脚本 今天主要分享一个shell脚本,用来获取linux系统CPU.内存.磁盘IO等信息. #!/bin/bash # 获取要监控的本地服务器IP ...

随机推荐

  1. LeetCode算法题-Kth Largest Element in a Stream(Java实现)

    这是悦乐书的第296次更新,第315篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第164题(顺位题号是703).设计一个类来查找流中第k个最大元素.请注意,它是排序顺序 ...

  2. docker容器日志收集方案(方案四,目前使用的方案)

    先看数据流图,然后一一给大家解释 ​ 这个方案是将日志直接从应用代码中将日志输出到redis中(注意,是应用直接连接redis进行日志输出),redis充当一个缓存中间件有一定的缓存能力,不过有限,因 ...

  3. 理论铺垫:阻塞IO、非阻塞IO、IO多路复用/事件驱动IO(单线程高并发原理)、异步IO

    完全来自:http://www.cnblogs.com/alex3714/articles/5876749.html 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同 ...

  4. .NET CORE学习笔记系列(5)——ASP.NET CORE的运行原理解析

    一.概述 在ASP.NET Core之前,ASP.NET Framework应用程序由IIS加载.Web应用程序的入口点由InetMgr.exe创建并调用托管,初始化过程中触发HttpApplicat ...

  5. kernel笔记——进程调度

    调度器完成以下任务: 时钟中断(或类似的定时器)时间内刷新进程的时间片,设置进程调度标志 系统调用返回或中断完成时检查调度标志 schedule函数 内核代码中完成进程调度的函数为schedule() ...

  6. Node.js完整的响应html页面(包括css,js文件)

    主要思想就是任何一个静态文件也应该做响应,一个获取静态文件都应当请求来处理,这是主要思想. 同时要注意两点.第一,对于不同的文件类型,比如html,css,js,请求头里面的文件类型需要根据不同的文件 ...

  7. 好程序员web前端分享css常用属性缩写

    好程序员web前端分享css常用属性缩写,使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如: #0000 ...

  8. jenkins编译打包nodejs

    第一步 安装nodejs插件 第二步 在全局配置管理里面添加 nodejs配置 第三步 新建任务,从git上面拉取代码 cd /opt/tomcat7/bin/workspace/confdev #进 ...

  9. KVM架构及模块简介

    1.简介 2.架构 3.KVM模块及QEMU 一.简介 KVM(Kernel Virtual Machine)基于内核的虚拟机.阿维·齐维迪(Avi Kivity)在一家名为Qumranet的初创企业 ...

  10. 如何解决一个从SkylineGlobe5版本升级到7版本遇到的小问题

    前些天,有朋友问,用Skyline5版本开发的WinForm程序,升级到7版本的时候,工程提示下面这样“创建组件AxHost失败”的错误,该如何解决呢? 后来经过百度搜索,找到了这样的答案, 测试发现 ...