Cluster Health Monitor

03.
Oktober
2013
Veröffentlicht von: Kurt Sauer

Cluster Health Monitor (CHM) ist ab der Version 11.2.0.2 (bei Linux) integraler Bestandteil der Grid Infrastruktur und dient dazu bei Cluster Problemen, wie z. B. plötzliches Stoppen eines Knotens oder Hänge-Situationen, detaillierte Informationen zur Verfügung zu stellen. CHM ermittelt Systemzustände pro Sekunde (bei 11.2.0.3 alle 5 Sekunden) bezüglich Prozesse, Storage, Memory und Netzwerk und stellt diese im Rahmen von bewerteten Metriken zur Verfügung.

1. Allgemein

Cluster Health Monitor (CHM) ist ab der Version 11.2.0.2 (bei Linux) integraler Bestandteil der Grid Infrastruktur und dient dazu bei Cluster Problemen, wie z. B. plötzliches Stoppen eines Knotens oder Hänge-Situationen, detaillierte Informationen zur Verfügung zu stellen. CHM ermittelt Systemzustände pro Sekunde (bei 11.2.0.3 alle 5 Sekunden) bezüglich Prozesse, Storage, Memory und Netzwerk und stellt diese im Rahmen von bewerteten Metriken zur Verfügung.

Die Daten werden innerhalb des Filesystems in einem sogenannten CHM-Repository, dessen Größe angepasst werden kann, gesammelt.

2. Unterschied zu OS Watcher

CHM läuft als OS API direkt im Grid-Infrastruktur-Stack und ermöglicht damit das Sammeln von Daten auch innerhalb eines stark ausgelasteten Cluster-Systems. Der OS Watcher benutzt Unix-Kommandos die das System stärker belasten und bei Engpäßen zu zusätzlichen Performance-Problemen führen können. Dennoch sollten beide Tools parallel laufen, da CHM bestimmte Funktionen des OS Watchers wie die UNIX-Tools „netstat“ oder „traceroute“ nicht unterstützt.

3. Verfügbarkeit von CHM

CHM ist bei Linux ab 11.2.0.2, bei Windows ab 11.2.0.3 verfügbar. Für GI-Versionen vor 11.2.0.2 kann CHM für Linux via Opens external link in new windowOTN heruntergeladen werden.
Für Linux steht unter der gleichen URL eine graphische Oberfläche zur Verfügung.

4. Überprüfung von CHM

Ist die Cluster-Ressource auf allen Knoten eines Clusters gestartet?

[grid@s-sl-rac05a:~]>crsctl stat res -t -init -w "NAME co crf"
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.crf
      1        ONLINE  ONLINE       s-sl-rac05a

 

Die Cluster-Ressource ora.crf (auf allen Knoten verfügbar) besteht aus folgenden Komponenten:

  • Cluster Logger Service
  • System Monitor Service

Der im Cluster Logger Service beinhaltete ologgerd-Daemon ist für die Synchronisation der Systemstatistiken der einzelnen Knoten mit dem Master-Repository zuständig.

Aufgabe des System Monitor Services ist das Sammeln von Systemdaten (bei 11.2.0.2 jede Sekunde, bei 11.2.0.3 alle 5 Sekunden) und das Übermitteln der Daten an das Master-Repository.

5. Verwaltung Repository

CHM verwendet pro Knoten ein lokales Directory zum Sammeln der Daten. Wenn ein Knoten die Verbindung zum Master Cluster Logger Service verliert, können die Daten weiterhin gespeichert werden.

Die CHM-Tools greifen aber auch auf Daten des zentralen Master-Repositories zu, welches auf einem einzelnen Knoten innerhalb des Clusters liegt.

 

So erhalten die das aktuelle Repository-Verzeichnis:

[grid@s-sl-rac05a:~]>oclumon manage -get reppath

CHM Repository Path = /u01/app/11.2.0/grid/crf/db/s-sl-rac05a

Done

 

So erhalten Sie die aktuelle Retention-Time des Repositories (in Sekunden):

[grid@s-sl-rac05a:~]>oclumon manage -get repsize

CHM Repository Size = 84400

Done

 

Die Standard–Retention bei 11.2.0.2 beträgt 3 Stunden, bei 11.2.0.3 nur 1 Stunde.

Empfehlung: Erhöhung auf 1 Tag (maximal 3 Tage möglich). Die Größe des Repositories beträgt ca. 1 GB/Knoten/Tag. 

Vergrößerung auf einen Tag (gilt für alle Knoten):

[grid@s-sl-rac05a:~]>oclumon manage -repos resize 86400

Done
[grid@s-sl-rac05a:~]>oclumon manage -get repsize

CHM Repository Size = 86400

Done

 

6. Sammeln von Daten

Für Service Requests über die My Oracle Support Webseite ist es manchmal notwendig, CHM Infos zu sammeln und hochzuladen. Deshalb sei hier das Sammeln der CHM Infos für die Version 11.2.0.3 beispielhaft aufgezeigt:

[root@s-tl-025:/home/grid]>diagcollection.pl --collect --chmos --incidenttime "07/01/201310:00:00" --incidentduration 01:00
Production Copyright 2004, 2010, Oracle.  All rights reserved
Cluster Ready Services (CRS) diagnostic collection tool
Cluster Health Monitor (OS) information has not been retrieved.
Run diagcollection on s-tl-029 to collect CHM/OS information
Collecting OS logs
Collecting sysconfig data

 

Die Daten werden aus dem Repository gelesen und als komprimierte Dateien im aktuellen Verzeichnis abgelegt:

[root@s-tl-025:/home/grid]>ls -l *s-tl-025**
-rw-r--r-- 1 root root   375 Oct  9 00:16 osData_s-tl-025_20131009_0016.tar.gz
-rw-r--r-- 1 root root 25967 Oct  9 00:16 sysconfig_s-tl-025_20131009_0016.txt

[root@s-tl-025:/home/grid]>tar -tvf osData_s-tl-025_20131009_0016.tar.gz
-rw------- root/root        49 2013-10-06 04:02:02 var/log/messages
-rw------- root/root       120 2013-10-05 01:00:01 var/log/messages.1
-rw------- root/root        49 2013-09-22 04:02:02 var/log/messages.2
-rw------- root/root        49 2013-09-15 04:02:02 var/log/messages.3
-rw------- root/root       120 2013-09-13 20:40:01 var/log/messages.4

 

Bei Version 11.2.0.2 hatten wir dabei leider auch schon mal folgendes Problem gesehen:

Hier hilft dann die folgende Alternative zum obigen Befehl für das Sammeln der CHM Infos weiter:

[root@s-sl-rac05a:/home/grid]>oclumon dumpnodeview -allnodes -v -s  "2013-10-09 00.32.00" -e "2013-10-09 00.33.00" > /tmp/chm.log
[root@s-sl-rac05a:/home/grid]>less /tmp/chm.log

----------------------------------------
Node: s-sl-rac05b Clock: '10-09-13 00.32.00' SerialNo:2879765
----------------------------------------

SYSTEM:
#cpus: 2 cpu: 2.19 cpuq: 1 physmemfree: 107716 physmemtotal: 4044532 mcache: 2013628 swapfree: 3928136 swaptotal: 4095992 ior: 95 iow: 1 ios: 5 swpin: 0 swpout: 0 pgin: 95 pgout: 1 netr: 109.54 netw: 82.69 procs: 222 rtprocs: 11 #fds: 4514 #sysfdlimit: 6815744 #disks: 16 #nics: 3  nicErrors: 0

TOP CONSUMERS:
topcpu: 'orarootagent.bi(11688) 0.99' topprivmem: 'ologgerd(11347) 84380' topshm: 'ologgerd(11347) 61056' topfd: 'ocssd.bin(11278) 162' topthread: 'crsd.bin(11579) 44'

PROCESSES:

name: 'orarootagent.bi' pid: 11688 #procfdlimit: 65536 cpuusage: 0.99 privmem: 10972 shm: 13304 #fd: 11 #threads: 11 priority: 19
name: 'evmd.bin' pid: 11434 #procfdlimit: 65536 cpuusage: 0.99 privmem: 15564 shm: 13624 #fd: 76 #threads: 17 priority: 19
name: 'osysmond.bin' pid: 11297 #procfdlimit: 65536 cpuusage: 0.99 privmem: 31456 shm: 56324 #fd: 59 #threads: 10 priority: 139

[...]

 

7. Auswertungen

Fragestellung: Welche Alerts liegen aktuell auf allen Knoten des Clusters vor?

[grid@s-sl-rac05a:~]>oclumon dumpnodeview -allnodes -alert -cont -i 5

----------------------------------------
Node: s-sl-rac05a Clock: '10-09-13 00.16.55' SerialNo:2839314
----------------------------------------

SYSTEM:
#cpus: 2 cpu: 4.0 cpuq: 1 physmemfree: 45488 physmemtotal: 4044532 mcache: 2726248 swapfree: 1895404 swaptotal: 4095992 ior: 239 iow: 176 ios: 44 swpin: 0 swpout: 0 pgin: 239 pgout: 176 netr: 166.61 netw: 106.74 procs: 283 rtprocs: 13 #fds: 7056 #sysfdlimit: 6815744 #disks: 16 #nics: 3  nicErrors: 0

TOP CONSUMERS:
topcpu: 'ologgerd(17175) 1.99' topprivmem: 'java(20903) 122292' topshm: 'ora_lms0_racdb1(3436) 952372' topfd: 'ocssd.bin(17133) 180' topthread: 'crsd.bin(17419) 48'

----------------------------------------
Node: s-sl-rac05a Clock: '10-09-13 00.22.56' SerialNo:2839665
----------------------------------------

SYSTEM:
#cpus: 2 cpu: 3.48 cpuq: 1 physmemfree: 48228 physmemtotal: 4044532 mcache: 2728004 swapfree: 1895428 swaptotal: 4095992 ior: 127 iow: 295 ios: 62 swpin: 0 swpout: 0 pgin: 127 pgout: 263 netr: 182.56 netw: 164.9 procs: 282 rtprocs: 13 #fds: 6998 #sysfdlimit: 6815744 #disks: 16 #nics: 3  nicErrors: 0

TOP CONSUMERS:
topcpu: 'osysmond.bin(17134) 1.98' topprivmem: 'java(20903) 122292' topshm: 'ora_lms0_racdb1(3436) 952372' topfd: 'ocssd.bin(17133) 180' topthread: 'crsd.bin(17419) 48'

[...]

 

Fragestellung: Welche Alerts lagen im Zeitraum zwischen 10:15 Uhr und 10:30 Uhr auf allen Knoten vor?

[grid@s-sl-rac05a:~]>oclumon dumpnodeview -allnodes -alert -s "2013-10-09 00.32.00" -e "2013-10-09 00.33.00"

----------------------------------------
Node: s-sl-rac05b Clock: '10-09-13 00.32.39' SerialNo:2879804
----------------------------------------

SYSTEM:
#cpus: 2 cpu: 2.88 cpuq: 1 physmemfree: 101740 physmemtotal: 4044532 mcache: 2015220 swapfree: 3928136 swaptotal: 4095992 ior: 205 iow: 151 ios: 29 swpin: 0 swpout: 0 pgin: 205 pgout: 151 netr: 107.70 netw: 72.41 procs: 224 rtprocs: 11 #fds: 4579 #sysfdlimit: 6815744 #disks: 16 #nics: 3  nicErrors: 0

TOP CONSUMERS:
topcpu: 'orarootagent.bi(11688) 0.98' topprivmem: 'ologgerd(11347) 84380' topshm: 'ologgerd(11347) 61056' topfd: 'ocssd.bin(11278) 162' topthread: 'crsd.bin(11579) 44'

----------------------------------------
Node: s-sl-rac05b Clock: '10-09-13 00.32.51' SerialNo:2879816
----------------------------------------

SYSTEM:
#cpus: 2 cpu: 3.22 cpuq: 4 physmemfree: 105852 physmemtotal: 4044532 mcache: 2015908 swapfree: 3928136 swaptotal: 4095992 ior: 127 iow: 173 ios: 49 swpin: 0 swpout: 0 pgin: 127 pgout: 172 netr: 126.56 netw: 75.37 procs: 222 rtprocs: 11 #fds: 4513 #sysfdlimit: 6815744 #disks: 16 #nics: 3  nicErrors: 0

TOP CONSUMERS:
topcpu: 'ocssd.bin(11278) 1.99' topprivmem: 'ologgerd(11347) 84380' topshm: 'ologgerd(11347) 61056' topfd: 'ocssd.bin(11278) 162' topthread: 'crsd.bin(11579) 44'

End of data

 

Weitere Fragestellungen könnten folgende Bereiche betreffen:

  • Benutzerprozesse
  • Systemprozesse
  • Plattenaktivität
  • Netzwerk

Hinweis:
Bei den Metriken werden (von Oracle) bewertete Schwellwerte (red, orange, yellow, green) anstatt absoluter Werte verwendet. 

Beispiel: Prozessauswertung

[grid@s-sl-rac05a:~]>ps -ef|grep "oracleracdb1"
[...]
oracle   21634     1  0 Sep18 ?        00:00:00 oracleracdb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

[grid@s-sl-rac05a:~]>oclumon

query> showtrail -n s-sl-rac05a -pid 21634 cputimepc memusage

No time range specified, querying for last 30 mins...

Parameter=CPU TIME PERCENT

2013-10-09 00:13:39     TO      2013-10-09 00:14:43     GREEN

2013-10-09 00:14:43     TO      2013-10-09 00:15:15     GREEN
[...]

query> showtrail -n s-sl-rac05a -pid 21634 cputimepc memusage -s "2013-10-09 00:39:00" -e "2013-10-09 00:40:00"

Parameter=CPU TIME PERCENT

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     GREEN

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:40:00     GREEN

Parameter=PRIVATE MEMORY USAGE

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     GREEN

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:40:00     GREEN

 

Beispiel: Systemauswertung

query> showtrail -n s-sl-rac05a -sys usagepc cpuqlen cpunumprocess openfds numrt numofiosps memfree -s "2013-10-09 00:39:00" -e "2013-10-09 00:40:00"

Parameter=USAGE PERCENT

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     GREEN

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:39:53     GREEN

2013-10-09 00:39:53     TO      2013-10-09 00:39:54     YELLOW

2013-10-09 00:39:54     TO      2013-10-09 00:40:00     GREEN

Parameter=CPU QUEUELENGTH

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     GREEN

2013-10-09 00:39:15     TO      2013-10-09 00:39:27     GREEN

2013-10-09 00:39:27     TO      2013-10-09 00:39:28     RED

2013-10-09 00:39:28     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:39:50     GREEN

2013-10-09 00:39:50     TO      2013-10-09 00:39:51     RED

2013-10-09 00:39:51     TO      2013-10-09 00:40:00     GREEN

Parameter=NUMBEROFPROCESSES

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     GREEN

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:40:00     GREEN

Parameter=OPENFDS

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     GREEN

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:40:00     GREEN

Parameter=# OF RT PROCESSES

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     RED

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     RED

2013-10-09 00:39:48     TO      2013-10-09 00:40:00     RED

Parameter=IO OPERATIONS  PER SEC

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     GREEN

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:40:00     GREEN

Parameter=MEM FREE

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     GREEN

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:40:00     GREEN

query>

 

Beispiel: Plattenauswertung

Die Platte /dev/sde1 ist Mitglied der ASM-Diskgruppe DATA (diese beinhaltet u. a. Datenbank-Dateien).

query> showtrail -n s-sl-rac05a -diskid sde1 qlen totalwaittime -s "2013-10-09 00:39:00" -e "2013-10-09 00:40:00"

Parameter=QUEUE LENGTH

2013-10-09 00:39:00     TO      2013-10-09 00:39:15     GREEN

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:40:00     GREEN

Parameter=TOTAL WAIT TIME

2013-10-09 00:39:00     TO      2013-10-09 00:39:13     GREEN

2013-10-09 00:39:13     TO      2013-10-09 00:39:14     ORANGE

2013-10-09 00:39:15     TO      2013-10-09 00:39:48     GREEN

2013-10-09 00:39:48     TO      2013-10-09 00:40:00     GREEN

query>

 

Um nur die "Warnungen" anzuzeigen:

query> showtrail -n s-sl-rac05a -diskid sde1 qlen totalwaittime -s "2013-10-09 00:39:00" -e "2013-10-09 00:40:00" -c "red" "orange" "yellow"

Parameter=QUEUE LENGTH

Parameter=TOTAL WAIT TIME

2013-10-09 00:39:13     TO      2013-10-09 00:39:14     ORANGE

 

Beispiel: NIC (Network Interface Card) Auswertung

Fragestellung: Gab es Fehler auf dem Cluster-Interconnect Interface?

query> showtrail -n allnodes -nicid eth1 effectivebw errors -s "2013-10-09 00:39:00" -e "2013-10-09 00:40:00"
CRS-9104-No data available for the given nodes

 

8. Graphische Oberfläche CHMOSG

Die graphische Oberfläche CHMOSG für Linux kann über Opens external link in new windowOTN (Oracle Technet) heruntergeladen werden.
Sie muss auf Systemen installiert werden, die entweder Oracle GI 11.2.0.2+ oder das zugehörige CHM aus dem OTN installiert haben.

Hinweis:
Eine Beschreibung der einzelnen Parameter befindet sich im Anhang A, die Installation der graphischen Oberfläche (GUI) in Anhang B.

Mit etwas mehr Ressourcen–Verbrauch:

Problem:
Bei einem überlasteten System macht es wenig Sinn zusätzlich die graphische Oberfläche laufen zu lassen.

Entweder die graphische Oberfläche wird von einem Knoten innerhalb des Clusters gestartet, der nicht ausgelastet ist oder die graphische Oberfläche wird auf einem Leitstand-Rechner (zusammen mit dem CHM aus OTN) installiert.

Alternativ bietet die graphische Oberfläche eine Aufzeichnungsfunktion an, d. h. nachdem z. B. die Hänge-Situation behoben ist, kann der Stand von vor z. B. 60 Minuten dargestellt werden: 

$ ./chmosg –d 60

Zusätzlich mit Histogrammen für Top Resource Consumer und Cluster Statistiken:

$ ./chmosg –1 –d 110

Im Pin-Modus (Eingabe „p“) kann ein Zustand in einer Zelle fixiert werden und die Werte aus den anderen Zellen korrespondieren mit dem Zeitpunkt des „Pinnens“.

Um Statistiken ermitteln zu können, kann mit dem Maus-Zeiger auf den Knoten-Namen gegangen und der Wert „s“ eingegeben werden:

Start im interaktiven Modus:

9. Fazit

Der CHM ermöglicht das Sammeln von Cluster-relevanten Systemparametern und die Auswertung der gesammelten Daten. Durch den geringen Overhead ist das permanente Sammeln auch bei hoher Systemlast gewährleistet. Bei Problemen innerhalb des Clusters ermöglicht CHM eine Erstanalyse bzw. stellt Daten für den Oracle Support zur Verfügung. Leider veröffentlicht Oracle keine Übersicht über die vordefinierten Schwellwerte.

Eine sehr nützliche Funktion ist die Replay-Funktionalität der graphischen Oberfläche, die eine nachträgliche Analyse des Cluster-Problems mit einer Vielzahl an Systemparametern ermöglicht. Im Zusammenspiel mit dem OS Watcher erhöht CHM die Verfügbarkeit eines Clustersystems.

 

10. Anhang A 

SYSTEM

#cpus:

number of CPU's

cpu:

percent of CPU utilization

cpuq:

CPU queue length

physmemfree:

free physical memory in KB

mcache:

memory cache in KB

swapfree:

free virtual memory

ior: 

 I/O reads in KB per second

iow:

I/O writes in KB per second

ios:

I/Os per second

netr:

network reads in KB per second

netw:

network writes in KB per second

procs:

number processes

rtprocs:

number of real time processes

#fds:

number file descriptors

#sysfdlimit:

system file descriptor limit

#disks:

 number of disks

#nics:

number of NICs

nicErrors:

number of network card errors

 

TOP CONSUMERS

topcpu:

name and PID of top CPU consuming process and percentage of usage

topprivmem:

name and PID of top memory consuming process and usage in KB

topworkingset:

name and PID of  top working set process working set in KB

topfd: 

name and PID of process that consumes most file descriptors and number of used descriptors

topthread:

name and PID of process with most threads and number of threads

 

11. Anhang B

Die Installation der graphischen Oberfläche CHMOSG soll hier in aller Kürze beschrieben werden. Weitere Details finden Sie im README der Installationsdatei. Wir setzen voraus, dass CHM bereits installiert ist.

CHMOSG (Zip-Datei) herunterladen über OTN:

Opens external link in new windowhttp://www.oracle.com/technetwork/products/clustering/downloads/ipd-download-homepage-087212.html

Die Zip-Datei bitte in einem neuen Verzeichnis entpacken, z. B. in /home/grid/ohm. Und danach folgendermaßen im Verzeichnis /home/grid/ohm_ui installieren:

[grid@s-sl-rac05a:~]> cd /home/grid/ohm/install
[grid@s-sl-rac05a:~/ohm/install]> export CRFPERLBIN=/usr/bin
[grid@s-sl-rac05a:~/ohm/install]> ./chminstall -i /home/grid/ohm_ui

ORACLE_HOME found. Using Java at /u01/app/11.2.0/grid/jdk

Installation completed sucessfully at /home/grid/ohm_ui...

 

Aufrufen läßt sich die GUI dann mittels:

[grid@s-sl-rac05a:~]> cd /home/grid/ohm_ui/bin
[grid@s-sl-rac05a:~/ohm_ui/bin]>./chmosg

Jede Menge Know-how für Sie!

In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.