OSWbb(OSWatcher Black Box)的简介和使用

0    337    1

Tags:

👉 本文共约45003个字,系统预计阅读时间或需170分钟。

OSWatcher Black Box, 简称OSW,是提供的一个小但是非常有用的工具,它通过调用OS自己提供的命令来记录OS运行时的一些性能参数,比如CPU/Memory/Swap/Network IO/Disk IO相关的信息。

+++ 为什么一定要部署OSW?

OSW并不是强制要部署的,并且有很多工具可以提供一样的功能,比如说mrtg, cacti, sar, nmon, enterprise manger grid control.

但是部署OSW有很多好处:

\1. 它比较容易部署,并且容易删除。

\2. 资源消耗比较小,不管是从CPU,内存还是磁盘空间来说。

\3. 平时不需要维护,并且在发生问题时可以帮我们迅速定位问题是否发生在OS端

数据库是运行在OS之上的,如果OS发生了异常,那么数据库肯定也会受到影响;如果我们仅仅从数据库的角度去分析这样的问题时,很难有个好结果.

在平时的工作中,有一类问题很常见:在过去的某个时间段,数据库发生了一些问题,我们往往要找到问题的原因(root cause),之后才能做某些改动来避免它再次发生。对于这样的问题,OSW是非常有用的,举几个小例子:

1. 发生的问题并不是由于OS的异常引起的。这时候如果我们有在发生问题的时候收集的OSW数据,我们就可以立刻排除OS方面,把注意力投向DB/应用层。

2. 对于ORACLE Database Performance的问题,我们往往第一个方向就是排除OS的问题。

比如OS在某个时间段发生了很频繁的Swapping,那么内存相关的操作就会受到影响,数据库性能也会下降,表现在AWR中就会发现数据库有latch/mutex相关的等待。

3. 应用在某个时间段响应非常慢。AWR显示数据库非常的空闲,top5等待事件也都是很正常;从CPU,内存,Swap, Disk IO方面看也都很正常。后来发现OSW中关于网络的数据显示,发生问题时有非常多的丢包现象。如果当时没有收集到OSW的数据,那么基本上是不可能找到原因了。

4. 又比如某些ORA-04030的错误或者CJQ0, P00X, J00X进程不能启动的问题,如果我们部署了OSW,那么我们就能立刻知道这些错误是不是由于OS的内存短缺引起的。

5. 如果某个server process莫名hung住,我们可以通过OSW的信息来看当时这个进程是不是出于suspend的状态,是不是占用了太多的CPU/Memory。

6. 某些Listener hung的问题,我们也需要OSW的历史信息来进行下一步的分析。

7. Login Storm问题:客户的数据库系统突然变慢,从应用端,数据库的ASH,AWR报告中没有发现任何异常。但是通过OSW的ps的输出发现,在发生问题时, oracle 的server process比平时多了上千个。

实际上,OSW对于我们分析问题是非常有帮助的。如果当前OS上并没有部署任何的监控软件,那么强烈建议DBA来部署OSW。很多重要的生产环境都部署了OSW,在有关于DB Performance的问题时,他们往往会先提交OSW的输出。

+++ 大家对部署OSW的顾虑往往是:

1. 生产环境已经正常运行了很久了,基于稳妥的考虑,不能随便安装软件

2. OSW会不会带来副作用

OSW的工作机制是每隔一段时间调用OS提供的一些工具,比如ps, vmstat, netstat, mpstat, top;然后把这些工具的输出打印到文件里。 它不可避免的会消耗CPU, Disk IO, Disk Space, Memory;但是这些消耗的资源都是非常少的,在大部分的系统里都是可以忽略的。只有在某些极端情况下,部署OSW才会带来负面影响:系统已经是非常的忙,CPU使用率在90%以上;磁盘的free space已经没有了。所以大家的顾虑在大部分的情况下都是不必要的,部署OSW是没有什么风险的。

+++ 下面讲一下如何在UNIX/LINUX上安装/部署OSW:

\1. 从文档301137.1上下载OSW

\2. 随便放在某个地方(/tmp除外),然后解压缩。不需要用root权限

$ tar xvf osw.tar

\3. 启动

$ nohup ./startOSWbb.sh 60 48 gzip &

这个命令的含义是,启动OSW,然后每隔60秒收集一下信息,总共保留最近的48小时的数据(历史数据会被自动清除),保留的数据是以gzip格式压缩的。

\4. 如何关闭?

$ ./stopOSWbb.sh

收集的信息会存放在archive目录下。



Linux监控工具介绍系列——OSWatcher Black Box

2016-12-22 12:00 by 潇湘隐者, 1210 阅读, 1 评论, 收藏, 编辑

OSWatcher Balck Box**简介**

OSWatcher Black Box (oswbb)是Oracle开发、提供的一个小巧,但是实用、强大的系统工具,它可以用来抓取操作系统的性能指标,用于辅助监控系统的资源使用。其安装部署、卸载都非常简单;资源消耗也比较小,原理也十分简单,它通过调用OS的的一些命令(例如vmstat、iostat等)来采集、存储CPU/Memory/Swap/Disk IO/Nentwork相关数据。安装和运行oswbba可以帮助在性能诊断时提供丰富多样的各类性能数据、图文报表支持。

OSWatcher 在4.0的版本时被命名为OSWatcher Black Box,简称为oswbb,同时增加了数据分析功能,即OSWatcher Black Box Analyzer (OSWbba)这个绘图和分析工具,其捆绑在 OS Watcher Black Box当中。替代了之前的OSWg。 也就是说在OSWatcher 4.0 之前是:OSWatcher 和 OSWg的关系,OSWatcher 4.0 后变成了: OSWbb 与 OSWbba 的关系。

OSWatcher Black Box(oswbb)支持多个操作系统,也分Linux与Window版本,当然这两个版本有所差别,本篇只讲述Linux版本。另外,OSWatcher Black Box(oswbb)由两个部分组成:

\1. oswbb: 一个Unix的 shell script脚本集合,其用来收集和归档数据,从而帮助定位问题。

\2. oswbba: 一个Java工具来自动分析数据,提供建议,并且生成一个包含图形的 html 文档。

OSWatcher Black Box(oswbb)的官方下载地址以及相关资料如下(Oracle Metalink上的资料需要账号)

How To Start OSWatcher Black Box (OSWBB) Every System Boot Using RPM oswbb-service(文档 ID 580513.1)

OSWatcher Analyzer User Guide (文档 ID 461053.1)

官方介绍文档对oswbb,oswbba的介绍如下:

OSWatcher (oswbb) is a collection of UNIX shell scripts intended to collect and archive operating system and network metrics to aid support in diagnosing performance issues. OSWatcher operates as a set of background processes on the server and gathers OS data on a regular basis, invoking such Unix utilities as vmstat, netstat and iostat. OSWatcher can be downloaded from this note. OSWatcher is also included in the RAC-DDT script file, but is not installed by RAC-DDT. For more information on RAC-DDT see RAC-DDT User Guide. OSWatcher is installed on each node where data is to be collected. Installation instructions for OSWatcher are provided in this user guide.

The OSWatcher Analyzer (oswbba) is a graphing and analysis utility which comes bundled with OSWatcher v4.0 and higher. oswbba allows the user to graphically display data collected, generate reports containing these graphs and provides a built in analyzer to analyze the data and provide details on any performance problems it detects. The ability to graph and analyze this information relieves the user of manually inspecting all the files.

NOTE: oswbba replaces the utility OSWg. This was done to eliminate the confusion caused by having multiple tools in support named OSWatcher. oswbba is only supported for data collected by oswbb and no other tool.

安装**OSWatcher**

Linux平台的安装简单到了不能再简单,如下所示,解压安装包生成oswbb文件夹。当然你最好将其部署或移动到合适的目录。

[oracle@DB-Server monitoring]$ tar -xvf oswbb734.tar

[oracle@DB-Server monitoring]$ ls -lrt

total 6196

drwxr-xr-x 6 oracle oinstall 4096 Jul 25 22:22 oswbb

-rw-r--r-- 1 oracle oinstall 6318080 Nov 8 02:33 oswbb734.tar

[oracle@DB-Server monitoring]$ cd oswbb

[oracle@DB-Server oswbb]$ ls –lrt

clip_image001

卸载**OSWatcher**

卸载OSWatche也是非常简单,只要稍懂Linux的应该都会。

1:卸载前先停止OSWatcher

./stopOSWbb.sh

2:删除OSWatcher的目录oswbb

rm –fr oswbb

启动**OSWatcher**

启动OSWatcher也非常简单,只需要执行startOSWbb.sh脚本即可,如下所示

./startOSWbb.sh 10 2

后面参数表示10秒采集一次数据,只保留最后采集2个小时的数据在归档文件中。首次启动的日志最好做一下检查,注意是否存在Warning信息,如下测试所示,检查时发现ifconfig命令找不到(oracle账户下无法运行ifconfig命令)

./startOSWbb.sh

如果没有指定参数,默认参数为30,48,意味着30秒采集一次数据,只保留最后48小时的数据到归档文件当中。其实startOSWbb.sh可以定义四个参数

参数1: 指定多少秒采集一次数据。

参数2: 指定采集的数据文件在归档路径保留多少个小时

参数3: 可选参数,打包压缩工具, 在完成收集后OSW 将使用其来打包压缩归档文件

参数4: 可选参数,指定采集归档数据的输出目录,默认为系统变量OSWBB_ARCHIVE_DEST的值。

clip_image002

使用上面方式启动OSWatcher,会被输出信息一直刷屏。基本上很少使用这种方式,一般使用nohup启动,这样可以让OSW能够在后台持续运行并在当前会话终止后不会被挂断。当然如果系统重启,那么OSWatcher就会停止。

nohup ./startOSWbb.sh 30 48 &

第一次启动OSWatcher会在oswbb目录下创建 gif、archive、tmp、locks目录。其归档文件夹和osw<工具名> 子文件夹会被建

clip_image003

OSWatcher采集的数据都存放在archive(目录路径)下,下面会生成oswiostat、oswmeminfo、oswmpstat等10个目录

[oracle@DB-Server archive]$ tree

.

|-- oswifconfig

|-- oswiostat

| |-- DB-Server.localdomain_iostat_16.12.09.1300.dat

| |-- DB-Server.localdomain_iostat_16.12.09.1400.dat

| `-- DB-Server.localdomain_iostat_16.12.09.1500.dat

|-- oswmeminfo

| |-- DB-Server.localdomain_meminfo_16.12.09.1300.dat

| |-- DB-Server.localdomain_meminfo_16.12.09.1400.dat

| `-- DB-Server.localdomain_meminfo_16.12.09.1500.dat

|-- oswmpstat

| |-- DB-Server.localdomain_mpstat_16.12.09.1300.dat

| |-- DB-Server.localdomain_mpstat_16.12.09.1400.dat

| `-- DB-Server.localdomain_mpstat_16.12.09.1500.dat

|-- oswnetstat

| |-- DB-Server.localdomain_netstat_16.12.09.1300.dat

| |-- DB-Server.localdomain_netstat_16.12.09.1400.dat

| `-- DB-Server.localdomain_netstat_16.12.09.1500.dat

|-- oswprvtnet

|-- oswps

| |-- DB-Server.localdomain_ps_16.12.09.1300.dat

| |-- DB-Server.localdomain_ps_16.12.09.1400.dat

| `-- DB-Server.localdomain_ps_16.12.09.1500.dat

|-- oswslabinfo

| |-- DB-Server.localdomain_slabinfo_16.12.09.1300.dat

| |-- DB-Server.localdomain_slabinfo_16.12.09.1400.dat

| `-- DB-Server.localdomain_slabinfo_16.12.09.1500.dat

|-- oswtop

| |-- DB-Server.localdomain_top_16.12.09.1300.dat

| |-- DB-Server.localdomain_top_16.12.09.1400.dat

| `-- DB-Server.localdomain_top_16.12.09.1500.dat

`-- oswvmstat

|-- DB-Server.localdomain_vmstat_16.12.09.1300.dat

|-- DB-Server.localdomain_vmstat_16.12.09.1400.dat

`-- DB-Server.localdomain_vmstat_16.12.09.1500.dat

10 directories, 24 files

采集的数据文件命名格式为OSWatcher 输出文件格式为:<节点名>_<操作系统工具名>_YY.MM.DD.HH24.dat 。如下所示,

clip_image004

配置**OSWatcher**自启动

OSWatcher在系统重启过后,是无法自动重启的,如果需要设置OSWatcher开机自启动,需要安装、配置osw-service这个RPM包。这个安装包可以从How To Start OSWatcher Black Box (OSWBB) Every System Boot Using RPM oswbb-service (文档 ID 580513.1)出下载。

[root@DB-Server tmp]# rpm -ivh oswbb-service-7.2.0-1.noarch.rpm

Preparing... ########################################### [100%]

1:oswbb-service ########################################### [100%]

[root@DB-Server tmp]#

安装osw-service这个RPM包后,需要配置/etc/oswbb.conf文件后,才能配置OSWatcher自启动。如下所示:

clip_image005

[root@DB-Server ~]#

[root@DB-Server ~]# /sbin/chkconfig oswbb on

[root@DB-Server ~]# /sbin/service oswbb start

Starting OSWatcher: [ OK ]

[root@DB-Server ~]#

关闭**OSWatcher**

关闭OSWatcher也是非常简单,网上有种说法:stopOSWbb.sh 是Oracle唯一支持的用于停止OSW的方法,其实不然,应该说有两种方法

1:执行脚本stopOSWbb.sh关闭OSWatcher

./stopOSWbb.sh

2:kill进程方法

clip_image006

如果你查看stopOSWbb.sh脚本,你会发现它停止OSWatcher也是通过kill OSWatcher program相关进程的方法,如下所示:

OSWatcher bba**使用总结**

OSWatcher now provides an analysis tool oswbba which analyzes the log files produced by OSWatcher. This tool allows OSWatcher to be selfanalyzing.

This tool also provides a graphing capability to graph the data and to produce a html profile. See the "Graphing and Analyzing the Output" section below.

oswbba is written in java and requires as a minimum java version 1.4.2 or higher. oswbba can run on any Unix X Windows or PC Windows platform. An X Windows environment is required because oswbba uses Oracle Chartbuilder which requires it.

OSWatcher bba 是一个Java语言写的应用程序,需要安装Java 1.4.2 或更高的版本。oswbba能够在任何有X Windows的Unix平台或Windows平台上运行, X Windows环境是必须的,因为oswbba需要用到Oracle Chartbuilder组件,而这个组件需要它。

如果你只想生成某个时间段的报表,你可以使用参数-B -E 如下案例所示

[root@DB-Server oswbb]#java -jar -Xmx256m oswbba.jar -i /home/oracle/scripts/oswbb/archive -B Dec 7 15:30:00 2016 -E Dec 7 17:00:00 2016

在处理过程OSWatcher有下面一些参数可供选择,如下所示。根据具体需要选择。 生成对应的html报表后,将其下载到本机,你就可以做一些分析了。

clip_image007

如下截图所示,这些图表仅仅是其中部分,OSWatcher给人印象最深的就是丰富的图表,而不是一堆枯燥的数字。

clip_image008

clip_image009

clip_image010

clip_image011

当然oswbba也能生成一个非常详细的分析报告,是文本格式,如下部分截图所示。

clip_image012

其实使用OSWatcher的使用并没有什么难度,反而是你要理解报表或分析报告中的指标意义,能够结合AWR、ASH以及其他数据库诊断信息来分析、诊断问题。这个才是有难度的。关于具体指标的详细说明,OSWatcher Analyzer User Guide (文档 ID 461053.1) 中已有详细解说,在此就不班门弄斧了。

OSWatcher**常见应用问题**

1: 如何判断OSWatcher是否正在运行

判断OSWatcher是否正在运行,非常简单,使用ps命令查看是否存在OSWatcher的相关进程即可。如下所示

[oracle@DB-Server ~]$ ps -ef | grep -i OSWatcher

oracle 23532 1 0 08:01 pts/2 00:00:14 /bin/sh ./OSWatcher.sh 10 2

oracle 23587 23532 0 08:02 pts/2 00:00:00 /bin/sh ./OSWatcherFM.sh 2 /home/oracle/monitoring/oswbb/archive

oracle 25808 24564 0 09:22 pts/3 00:00:00 grep --color=auto -i OSWatcher

[oracle@DB-Server ~]$

2: 没有设置JAVA环境变量,会遇到下面错误:

如下所示,设置JAVA环境变量后,然后执行oswbba的相关命令即可。

3:运行"java -jar oswbba.jar ..."命令时报"Exception in thread "main" java.lang.OutOfMemoryError"

这个是因为JAVA的堆栈设置太小的缘故,加载到内存中的数据量过于庞大,需要设置参数-Xmx 可以用-Xmx256m或-Xmx512m 如下所示

java -jar -Xmx256m oswbba.jar -i /home/oracle/scripts/oswbb/archive

oswbba parses all the archive files in memory prior to generating graphs or performing an analysis. If you have a large amount of files to parse you may need to allocate more memory in the java heap. If you experience any error messages regarding out of memory such as java.lang.OutOfMemoryError, you may have to increase the size of the java heap. To increase the size of the java heap use the -Xmx flag.

4:oswbba是否可以在命令行界面生成html报告文件? 答案是可以,当然你会遇到很多杂七杂八问题,下面列举了一些我遇到的问题

1: ”No X11 DISPLAY variable was set, but this program performed an operation which requires it“

clip_image013

如果是root账号,只要执行export DISPLAY=:0.0命令后,即可在SecureCRT或 命令窗口生成报表文件。如下所示:

上面使用的是root用户,如果是oracle用户,还是有可能还会遇到下面问题

clip_image014

此时需要切换到root账号,执行下面命令,然后切换到oracle用户下执行命令

当然,在SecureCRT中,你不能选择1-5这几个选项,否则依然会遇到 Can't connect to X11 window server using ':0.0'这个错误。这个只能在图形化界面才能执行。例如通过VNC来生成。

clip_image015

java -jar -Xmx256m oswbba.jar -i /home/oracle/oswbb/archive -B Mar 5 16:00:00 2016 -E Mar 5 16:30:00 2016

java -jar -Djava.awt.headless=true -Xmx256m oswbba.jar -i /home/oracle/oswbb/archive -B Mar 5 16:00:00 2016 -E Mar 5 16:30:00 2016

clip_image016

参考资料:

OSWatcher(包括:[视频]) (文档 ID 1526578.1)

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复