解读Cluster Health Monitor之二CHM使用

原文链接: http://www.dbaleet.org/understand_rac_cluster_health_monitor_usage_of_chm

上篇文章对CHM做了一个整体的概述,本篇则着重介绍CHM的架构以及如何使用CHM收集操作系统的性能诊断信息。

一. CHM架构:

以下是两个节点的RAC CHM的架构图:

 

CHM的自身的架构非常简单:总共包括三个守护进程(daemon): osysmond,ologgerd和oproxyd。

  • osysmond 这个进程在所有节点上运行,负责监控和收集本地操作系统的性能数据,并将本节点其收集到的信息发送给ologgerd进程。
  • ologgerd这个进程在所有节点上运行,但是属于primary-standby的模式,也就是真正工作的只有运行在master节点的primary,其它节点上的进程作为备用。这个进程接收来自所有节点osysmond收集的信息,并将其存入到Berkeley DB(BDB), 在存入以前它会对原始数据进行压缩以节约空间。可以使用如下命令来获得master节点的信息:
    $ oclumon manage -get master
    Master = racnode1
    done
  • oproxyd 这个进程运行在所有的节点,实际上是运行在公网之上的一个监听程序,使用端口61027。前面也提到过CHM为可以在图形界面客户端(oclumon命令行也是可以的)发送指令然后在Server端执行,并将结果返回client端。oproxyd相当于一个client/server的一个代理。

 

二. CHM Repository

默认情况下,会存在于GI的ORACLE_HOME下 ,占用1 GB 的磁盘空间,可以将其增加到使用3天的大小。

获取路径:

$ oclumon manage -get reppath
CHM Repository Path = /u01/app/grid/crf/db/racnode1
Done

修改路径:

$ oclumon manage -repos reploc /shared/Oracle/chm

获取大小:

$ oclumon manage -get repsize
CHM Repository Size = 86400
Done

修改大小:

 $ oclumon manage -repos resize 68083

tips:

注意其保留的时间范围在一个小时到 在3600秒到 259200之间,也就是其retention在1个小时到3天之间,目前版本不支持保留更长的时间,但是可以使用以下workaround保存更长时间区间:其方法是定期归档整个Berkeley DB: (例如每天归档一次) 需要读取其归档信息的时候,首先将BDB启动到归档模式:ologdbg -d <bdb location>, 待其启动后,使用oclumon dumpnodeview来获取归档的BDB信息:oclumon dumpnodeview -n <node name> -s <start time> -e <end time> -v

三. CHM管理工具:

oclumon为CHM的命令行管理工具。以上我们就使用了oclumon来管理repository信息,当然我们也可以使用oclumon来获取系统的负载信息:

获取oclumon的帮助信息:

$ oclumon -h
For help from command line
: oclumon <verb> -h
For help in interactive mode : <verb> -h
Currently supported verbs are :
showtrail, showobjects, dumpnodeview, manage, version, debug, quit and help

获取oclumon的版本信息:

$ oclumon version
Instantaneous Problem Detection - OS Tool, Version 1.04.20091223 - Production
Copyright 2009 Oracle. All rights reserved

从上面的帮助信息,可以看到当前常用的命令包括 showobjects, dumpnodeview, Showgaps,debug, manage(已经介绍)和 showtrail(已经过期)。以下只介绍最常用的debug和dumpnodeview。

debug log用来修改CHM守护进程的日志级别,这条命令主要用于诊断CHM自身的问题时使用的。debug log的语法如下:

oclumon debug [log daemon module:log_level] [version]

其中可以设置的进程包括:

osysmond: CRFMOND, CRFM, and allcomp
ologgerd: CRFLOGD, CRFLDBDB, CRFM, and allcomp
client: OCLUMON, CRFM, and allcomp
all: CRFM,allcomp

可以设置的日志级别0,1,2,3四个级别。例如将osysmond的CRFMOND日志级别设置为3。

oclumon debug log osysmond CRFMOND:3

 

dumpnodeview用来收集节点的性能信息,因为收集的种类较多,无法在这里一一列出,具体包含那写信息请参考以下链接:

http://docs.oracle.com/cd/E11882_01/rac.112/e16794/troubleshoot.htm#CHDBHGCH

dumpnodeview的语法如下:

oclumon dumpnodeview [[-allnodes] | [-n node1 node2] [-last "duration"] | 
[-s "time_stamp" -e "time_stamp"] [-v] [-warning]] [-h]

以下命令收集node1, node2, node3最近12个小时的信息:

$ oclumon dumpnodeview -n node1 node2 node3 -last "12:00:00"

以下命令收集所有节点最近15分钟的dumpview信息:

$ oclumon dumpnodeview -allnodes -last "00:15:00"

以下命令收集所有节点从2012年12月8日08:30:00到9:00:00的dumpview信息:

$ oclumon dumpnodeview -allnodes -v -s "2012-12-08 08:30:00" -e "2012-12-08 09:00:00"

 

四. CHM信息收集:

如果要收集CHM的信息诊断信息,我们甚至无需使用上面的oclumon dumpnodeview,而是11gR2 GI自带使用diagcollection.pl脚本就可以了。

简单的运行一下命令就可以收集全部CHM收集到的系统性能诊断信息:

# <Grid_home>/bin/diagcollection.pl --collect --chmos

或者使用以下命令指定开始的时间和收集持续时间:

#<Grid_home>/bin/diagcollection.pl -collect -chmos -incidenttime inc_time -incidentduration duration

其中inc_time是指开始时间,格式为MM/DD/YYYY24HH:MM:SS, duration指的是持续时间。
例如:# diagcollection.pl -collect -crshome /u01/app/11.2.0/grid -chmoshome  /u01/app/11.2.0/grid -chmos -incidenttime 12/08/201208:30:00 -incidentduration 00:30

 

五. 启动和关闭CHM资源:

如果使用CHM,会自动在CRS中注册一个叫做ora.crf的资源,属于ohasd管辖的资源。

$ crsctl stat res -t -init | grep crf
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       Cluster Resources
ora.crf        ONLINE  ONLINE       racnode1

这个资源不支持禁用模式,也就是说用户不能将其禁用。可以使用crsctl进行起停。

停用ora.crf资源(grid用户):

crsctl stop res ora.crf -init

自动ora.crf资源(grid用户):

crsctl start res ora.crf -init

 

以上CHM的所有内容就介绍到这里,稍后我在评论中上传RAC的product manager两篇介绍CHM的ppt。

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号