Haufenweise falsche Messwerte beim SAP-Monitoring (Update)

Bei der Ablösung des alten SAP-Monitorings eines unserer Kunden bin ich über Ungereimtheiten beim Auslesen von CCMS-Metriken gestolpert. Nicht alle Werte, welche man per RZ20 in der SAP-GUI angezeigt bekommt, werden nagios-seitig korrekt wiedergegeben. Teilweise sind die Messwerte um den Faktor 1000 zu hoch und werden so auch in den entsprechenden RRD-Files abgespeichert bzw. sorgen für ungläubiges Kopfschütteln. Das ist beispielsweise dann der Fall wenn der SAP-Server eine Load von 7.06 hat, laut Monitoring aber 706. Bisher ist das halt nicht aufgefallen, weil üblicherweise der von SAP gelieferte Status eins zu eins in Nagios verwendet wurde.

Update 23.6.14: im Git von check_mk wurde mein Patch mittlerweile eingespielt.
Update 26.6.14: im Git von Netways auch.
Update: Die beiden angemeckerten Plugins sind (Stand 26.6.14) gefixt und somit ist meiner Stänkerei jede Grundlage entzogen. Alles ist gut :-)

 

Ich habe mir dann mal in einer Testumgebung die gängigsten Plugins für's SAP-Monitoring installiert und verglichen, was die denn so messen.

check_mk
Korrekter Wert Ja, weil mittlerweile korrigiert 
(Anm.: statt ALRELEVVAL wird LASTPERVAL ausgelesen)
Performancedaten Ja, ohne Schwellwerte
check_sap von Netways
Korrekter Wert Ja, weil mittlerweile korrigiert
Performancedaten Ja, mit Schwellwerten
(optional sogar mit Ranges)
check_sap von Sourceforge
Korrekter Wert Ja
Performancedaten Nein
(In der Graphik ja, allerdings wurde das Plugin nachträglich gepatcht)
check_sap_health von ConSol
Korrekter Wert Ja
Performancedaten Ja, mit Schwellwerten
(Die vom CCMS vorgegebenen Schwellwerte können auch mittels --warning/--critical überschrieben werden, so wie hier mit --warningx CPU_5minLoadAverage=9.99)

Der Grund für die falschen Werte ist die Nichtberücksichtigung eines Umrechnungsfaktors, der von SAP mitgeliefert wird. Wenn man mit BAPI_SYSTEM_MTE_GETPERFCURVAL die Detailangaben eines Performance-MTEs holt, dann steckt der Messwert im Feld ALRELEVVAL. Da dieses vom Typ Integer ist und somit einen Wert wie 7.06 nicht richtig abbilden kann, kommt noch ein weiteres Feld DECIMALS mit.

ALRELEVVAL   706
ALRELVALDT   20140614
ALRELVALTI   080801
ALTREENUM    1
ATTRGROUP    5minLoadAverage
...
DECIMALS     2

Dieses wird verwendet, um ALRELEVVAL durch eine bestimmte Größenordnung zu dividieren. Dabei gilt die Formel:

in RZ20 angezeigter Wert = ALRELEVVAL / 10 ** DECIMALS

Und damit es nicht wieder heisst, der Laußer kann nur blöd daherreden und kritisieren, habe ich mich hingesetzt und Patches erstellt. Zum Download geht's hier lang:

Einmal für Netways, bitte schön
check_sap.patch

und einmal für Kettner, bitte schön
check_mk.patch

Bleibt noch herauszufinden, welche der CCMS-Metriken betroffen sind und welche RRD-Files repariert werden müssen. Sowas lässt sich einfach per Script automatisiert erledigen. Wenden sie sich bitte an ihren jeweiligen Dienstleister :-)

Author: Gerhard Laußer
Tags: ccms, mte, rz20, sap
Categories: nagios, omd, shinken
Monitoring-Workshop 2017 12./13.9. Düsseldorf