sub init {
if ($self->mode =~ /my::test::rfcping/) {
$ check_sap_health \
--with-mymodules-dyn-dir $USER4/check_sap_health \
--mode my-test-rfcping
OK - pong, runtime was 0.02s | 'runtime'=0.02;5;10;;
MyTest
my::test::rfcping
my-test-rfcping
Seite
API fr selbstgeschriebene Erweiterungen
Man braucht
sub init { my $self = shift;
$self->mode ist der Kommandozeilenparameter --mode in der internen
Reprsentation. (Doppeldoppelpunkt statt Bindestrich)
$self->opts->para ist der Wert des Kommandozeilenparameter para
$self->session ist das Handle fr die RFC-Verbindung
$self->add_ok(text), $self->add_warning(text),
$self->set_thresholds(warning => defwarn, critical => defcrit)
$self->check_thresholds(value)
$self->add_perfdata(label => label, value => value, [uom => uom])
17.05.2014 www.consol.de 24
Seite
Beispiel 2: BAPI_BUPA_CENTRAL_GETLIST
17.05.2014 www.consol.de 25
$ check_sap_health --with-mymodules-dyn-dir $USER4/etc/check_sap_health\
--mode my-bapi-bpgetlist --name A000000001
OK - BAPI_BUPA_CENTRAL_GETDETAIL is OK, found partner ConSol* Software
GmbH, runtime was 0.14s | 'runtime'=0.14;5;10;;
Seite
BAPI-Schnittstellendefinition
17.05.2014 www.consol.de 26
In der Transaktion SE37
kann man nach
Funktionen suchen und
ihre Aufruf- bzw.
Rckgabeschnittstelle
anschauen.
Seite 17.05.2014 www.consol.de 27
etc/check_sap_health/CheckSapHealthBapi.pm
package MyBapi;
our @ISA = qw(Classes::SAP);
use Time::HiRes;
sub init {
my $self = shift;
my $bapi_tic = Time::HiRes::time();
if ($self->mode eq "my::bapi::bpgetlist") {
eval {
my $fl = \
$self->session->function_lookup("BAPI_BUPA_CENTRAL_GETLIST");
my $fc = $fl->create_function_call;
$fc->BUSINESSPARTNER($self->opts->name); # A000000001
$fc->VALIDFROM("01010001");
$fc->VALIDTO("31129999");
$fc->invoke;
my @rows = @{$fc->RETURN};
if (scalar(@rows) == 0) {
# leere Tabelle RETURN ist OK
$self->add_ok("BAPI_BUPA_CENTRAL_GETDETAIL is OK");
$fc->CENTRALDATAORGANIZATION->[0]->{NAME1} \
=~ s/\s+$//;
$self->add_ok(sprintf "found partner %s",
$fc->CENTRALDATAORGANIZATION->[0]->{NAME1});
} elsif (scalar(@rows) == 1) {
if ($rows[0]->{TYPE} =~ /^(E|A)/) {
$self->add_unknown($rows[0]->{MESSAGE});
} else {
$self->add_ok("BAPI_BUPA_CENTRAL_GETDETAIL is OK");
}
} else {
foreach my $row (@rows) {
$errors++ if $row->{TYPE} =~ /^(E|A)/ \
&& $rownum > 0;
$rownum++;
}
$self->add_message($errors ? 2 : 0,
sprintf "BAPI_BUPA_CENTRAL_GETDETAIL returned %d
errors (in %d rows)",
$errors, $rownum);
}
};
if ($@) {
$self->add_unknown($@);
}
} elsif ($self->mode =~ /my::bapi::weiterefunktionen/) {
} else {
$self->add_unknown("unknown mode");
}
my $bapi_tac = Time::HiRes::time();
my $bapi_duration = $bapi_tac - $bapi_tic;
$self->set_thresholds(warning => 5, critical => 10);
$self->add_message($self->check_thresholds($bapi_duration),
sprintf "runtime was %.2fs", $bapi_duration);
$self->add_perfdata(
label => 'runtime',
value => $bapi_duration,
);
}
Seite
Job- und SLA-Monitoring
End-of-Day-Jobs und insbes. nchtliche Batches (bei Banken blich)
werden in Tabellen in SAP protokolliert, incl. Startzeit, Endezeit, Status.
Mit check_sap_health kann man berwachen, ob Jobs erfolgreich und
innerhalb eines SLA-Fensters abgeschlossen wurden.
(Oder man verwendet check_sap_health, um solche Daten aus SAP zu
holen und in eine generische Job-Tabelle zu schreiben)
Bsp.: Job muss um 07:45 fertig sein, ab 10 Min. Versptung gibts rger.
check_sap_health --mode my-eod-sla \
--name FI_LOAN_CALC \
--name2 07:45 \
--warning 0 --critical 600
17.05.2014 www.consol.de 28
Seite
Tabellen auslesen, z.B. SNAP
Fehlerzustnde, sog. Shortdumps, werden in SAP protokolliert.
In der Transaktion ST22 kann man routinemig nachsehen.
17.05.2014 www.consol.de 29
Seite
Tabellen auslesen, z.B. SNAP
Intern stehen die Shortdumps in der Tabelle SNAP.
Mit RFC kann man die Tabelle auslesen und prfen, ob seit dem letzten
Lauf des Plugins neue Dumps hinzugekommen sind.
$ check_sap_health \
--with-mymodules-dyn-dir $OMD_ROOT/etc/check_sap_health \
--mode my-snap-dumps-check
OK - no new shortdumps
$
$ check_sap_health \
--with-mymodules-dyn-dir $OMD_ROOT/etc/check_sap_health \
--mode my-snap-dumps-check
CRITICAL - 2 new shortdumps appeared between 20140509 171649 and
20140513 164249
17.05.2014 www.consol.de 30
Seite
Praxiseinsatz
Handelskonzern, >20 weltweite Standorte, berwiegend CCMS-
Monitoring, Businesslogik folgt in einem spteren Projektstadium.
Eine der grssten sdeutschen Kommunen.
**Bank, von mehreren Standorten in aller Welt werden die Laufzeiten von
geschftskritischen BAPIs gemessen. Vor Ort stehen Windows7-PCs (in
erster Linie fr Sakuli-Tests), per NSClient++ wird check_sap_health.exe
aufgerufen.
Weltbekannter Leuchtmittelhersteller.
17.05.2014 www.consol.de 31
Seite
Ausblick
Generischer Modus fr DB-Optimizer (Oracle, Maxdb..).
Implementierung von best-practice SAP-Basis-Routine-Prfungen .
MTE-bergreifende Performancemessungen und Lsungsvorschlge.
Aber: nur dann, wenn jemand die Entwicklung bezahlt. Ich helfe gerne bei der Analyse und der Implementierung des Applikations/Business-Monitorings, allerdings
nur bei einer formellen, sprich bezahlten Beauftragung. Mails mit dem Inhalt Super Tool. Wir mchten..kannst du mal. oder gar unser Kunde
mchtekannst du mal werde ich vermutlich nicht beantworten. Open Source bedeutet nicht gratis Consulting.
17.05.2014 www.consol.de 32
Kleingedrucktes
Seite 33 17.05.2014 www.consol.de
ConSol* Software GmbH
Franziskanerstrae 38
D-81669 Mnchen
Tel: +49-89-45841-100
Fax: +49-89-45841-111
gerhard.lausser@consol.de
www.consol.de