check_db2_health
Posted on October 1st, 2009 by lausser
Hinweis: Praxis-Workshop
Im Juli und Oktober 2013 findet in der ConSol*-Akademie in München jeweils wieder ein Workshop zum Thema “Datenbank-Monitoring mit Nagios” statt. Nähere Informationen finden sie unter http://www.consol.de/open-source-monitoring/schulungen/workshops/#datenbank-monitoring
Beschreibung
check_db2_health ist ein Plugin, mit dem unterschiedliche Parameter eines IBM DB2-Servers überprüft werden können.
Dokumentation
Kommandozeilenparameter
-
–database <DB-Name> Der Name der Datenbank. (Falls diese lokal katalogisiert ist, reicht dieser Parameter. Ansonsten muss man database, hostname und port angeben)
-
–hostname <hostname> Der Datenbankserver
-
–port <port> Der Port, auf dem der Server lauscht
-
–username <username> Der Datenbankuser
-
–password <password> Dessen Passwort
-
–mode <modus> Mit dem mode-Parameter teilt man dem Plugin mit, was es tun soll. Siehe Liste der möglichen Werte weiter unten.
-
–name <objektname> Hier kann die Prüfung auf ein einziges Objekt begrenzt werden. (Momentan wird dieser Parameter nur für mode=sql verwendet)
-
–name2 <string> Verwendet man –mode=sql, dann erscheint das SQL-Statement in der Ausgabe und den Performancedaten. Mit dem Parameter name2 kann man dafür einen eigenen String vergeben.
-
–warning <range> Ermittelte Werte außerhalb dieses Bereichs lösen ein WARNING aus.
-
–critical <range> Ermittelte Werte außerhalb dieses Bereichs lösen ein CRITICAL aus.
-
–environment <variable>=<wert> Damit kann man dem Script Environmentvariablen mitgeben. Mehrfachnennungen sind möglich.
-
–method <connectmethode> Mit diesem Parameter teilt man dem Plugin mit, wie es sich zur Datenbank verbinden soll. (dbi für Verbindung per DBD::DB2 (default), derzeit keine Alternativen).
-
–units <%|KB|MB|GB> Die Angabe von Einheiten dient der “Verschönerung” von Ausgaben des mode=sql
Um dem Plugin mitzuteilen, welche Werte es ermitteln und prüfen soll, benutzt man die Option –mode mit verschiedenen Schlüsselwörtern.
Modi
Schlüsselwort |
Bedeutung |
Wertebereich |
connection-time |
Misst, wie lange Verbindungsaufbau und Login dauern |
0..n Sekunden (1, 5) |
connected-users |
Anzahl der verbundenen Benutzer |
0..n (50, 100) |
synchronous-read-percentage |
Anteil der synchronous reads (SRP) |
0%..100% (90:, 80:) |
asynchronous-write-percentage |
Anteil der asynchronous writes (AWP) |
0%..100% (90:, 80:) |
bufferpool-hitratio |
Hitratio in Buffer Pools (kann mit –name auf bestimmte Pools eingegrenzt werden) |
0%..100% (98:, 90:) |
bufferpool-data-hitratio |
dto., berücksichtigt aber nur Data Pages |
0%..100% (98:, 90:) |
bufferpool-index-hitratio |
dto., berücksichtigt aber nur Index Pages |
0%..100% (98:, 90:) |
index-usage |
Anteil der SELECTs, die einen Index benutzen |
0%..100% (98:, 90:) |
sort-overflows |
Anzahl der Sort-Overflows pro Sekunde |
0..n (0.01, 0.1) |
sort-overflow-percentage |
Anteil der Sorts, die in einem Overflow resultieren |
0%..100% (5%, 10%) |
deadlocks |
Anzahl der Deadlocks pro Sekunde |
0..n (0, 1) |
lock-waits |
Anzahl der Lock-Anforderungen pro Sekunde, die nicht befriedigt werden konnten |
0..n (10, 100) |
lock-waiting |
Zeit, die auf Locks gewartet werden muss |
0%..100% (2%, 5%) |
database-usage |
Belegter Speicherplatz in einer Datenbank |
0%..100% (80%, 90%) |
tablespace-usage |
Belegter Speicherplatz in einem Tablespace |
0%..100% (90%, 98%) |
tablespace-free |
Freier Speicherplatz in einem Tablespace. Im Gegensatz zum vorhergehenden Modus kann man hier Schwellwerte mit Hilfe der Option –units in MB und GB angeben. |
0%..100% (5:, 2:) |
log-utilization |
Belegter Speicherplatz in einem Datenbank-Log |
0%..100% (80, 90) |
last-backup |
Anzahl der Tage seit dem letzten Backup |
0..n (1,2) |
stale-table-runstats |
Tabellen, deren Statistiken seit n Tagen nicht aktualisiert wurden |
0..n (7, -) |
invalid-objects |
Anzahl fehlerhafter Objekte in der Datenbank (Trigger, Package, View, Routine, Table) |
0..n (7, 99999) |
duplicate-packages |
Packages mit gleichlautendem Namen |
|
capture-latency |
Latency der vom Capture-Prozesse verarbeiteten Daten (wertet auch –maxinactivity aus) |
0..n (10, 60) |
subscription-set-latency |
Latency der Subscription Sets (wertet auch –maxinactivity aus) |
0..n (600, 1200) |
sql |
Ergebnis eines beliebigen SQL-Befehls, der eine Zahl zurückliefert. Der Befehl selbst wird mit dem Parameter –name übergeben. Ein Label für Performncedaten kann mit dem Parameter –name2 übergeben werden. Mit dem Parameter –units kann die Ausgabe um Einheiten ergänzt werden (%, c, s, MB, GB,.. Wenn der SQL-Befehl Sonder- und Leerzeichen enthält, kann er mit dem mode encode zuerst encodiert werden. |
0..n |
sql-runtime |
Laufzeit eines beliebigen SQL-Befehls in Sekunden. Der Befehl selbst wird mit dem Parameter –name übergeben. |
0..n (1, 5) |
list-databases |
Gibt eine Liste aller Datenbanken aus |
|
list-tablespaces |
Gibt eine Liste aller Tablespaces aus |
|
list-bufferpools |
Gibt eine Liste aller Bufferpools aus |
|
list-subscription-sets |
Gibt eine Liste aller Subscription Sets aus |
|
Es ist zu beachten, daß Schwellwerte entsprechend den Nagios Developer Guidelines anzugeben sind.
“10″ bedeutet demzufolge “Alarm, wenn > 10″ und
“90:” bedeutet “Alarm, wenn < 90″
Vorbereitung der Datenbank
Damit sich das Plugin die benötigten Informationen aus der Datenbank holen kann, legt man einen (Betriebssystem-)Benutzer nagios (mit gleichnamiger Gruppe) an. Eventuell gibt es diesen bereits, weil der Datenbankserver mit check_nrpe oder check_by_ssh überwacht wird.
Danach schaltet man die Monitoring Switches ein:
update dbm cfg using dft_mon_bufpool on update dbm cfg using dft_mon_lock on update dbm cfg using dft_mon_timestamp on
Der nagios-Benutzer (bzw. die nagios-Gruppe) bekommt noch die nötigen Privilegien und nach einem Neustart der Datenbank kanns dann losgehen.
db2inst1$ db2 update dbm cfg using sysmon_group nagios db2inst1$ db2 grant select,update on table SYSTOOLS.STMG_DBSIZE_INFO to nagios db2inst1$ db2stop; db2start
Beispiele
nagsrv$ check_db2_health --mode connection-time WARNING - 1.61 seconds to connect as DB2INST1 | connection_time=1.6084;1;5 nagsrv$ check_db2_health --mode connected-users OK - 3 connected users | connected_users=3;50;100 nagsrv$ check_db2_health --mode list-databases TOOLSDB OK - have fun nagsrv$ check_db2_health --mode database-usage OK - database usage is 31.29% | 'db_toolsdb_usage'=31.29%;80;90 nagsrv$ check_db2_health --mode tablespace-usage CRITICAL - tbs TEMPSPACE1 usage is 100.00%, tbs TBSP32KTMP0000 usage is 100.00%, tbs TBSP32K0000 usage is 100.00%, tbs USERSPACE1 usage is 5.08%, tbs SYSTOOLSPACE usage is 1.86%, tbs SYSCATSPACE usage is 80.37% | 'tbs_userspace1_usage_pct'=5.08%;90;98 'tbs_userspace1_usage'=16MB;288;313;0;320 'tbs_tempspace1_usage_pct'=100.00%;90;98 'tbs_tempspace1_usage'=0MB;0;0;0;0 'tbs_tbsp32ktmp0000_usage_pct'=100.00%;90;98 'tbs_tbsp32ktmp0000_usage'=0MB;0;0;0;0 'tbs_tbsp32k0000_usage_pct'=100.00%;90;98 'tbs_tbsp32k0000_usage'=61MB;55;60;0;61 'tbs_systoolspace_usage_pct'=1.86%;90;98 'tbs_systoolspace_usage'=0MB;28;31;0;32 'tbs_syscatspace_usage_pct'=80.37%;90;98 'tbs_syscatspace_usage'=51MB;57;62;0;64 nagsrv$ check_db2_health --mode list-tablespaces SYSCATSPACE SYSTOOLSPACE TBSP32K0000 TBSP32KTMP0000 TEMPSPACE1 USERSPACE1 OK - have fun nagsrv$ check_db2_health --mode tablespace-usage --name SYSCATSPACE OK - tbs SYSCATSPACE usage is 80.37% | 'tbs_syscatspace_usage_pct'=80.37%;90;98 'tbs_syscatspace_usage'=51MB;57;62;0;64 nagsrv$ check_db2_health --mode tablespace-free --name SYSCATSPACE OK - tbs SYSCATSPACE has 19.63% free space left | 'tbs_syscatspace_free_pct'=19.63%;5:;2: 'tbs_syscatspace_free'=12MB;3.20:;1.28:;0;64.00 nagsrv$ check_db2_health --mode tablespace-free --name SYSCATSPACE --units MB OK - tbs SYSCATSPACE has 12.55MB free space left | 'tbs_syscatspace_free_pct'=19.63%;7.81:;3.12: 'tbs_syscatspace_free'=12.55MB;5.00:;2.00:;0;64.00 nagsrv$ check_db2_health --mode tablespace-free --name SYSCATSPACE --units MB --warning 15: --critical 10: WARNING - tbs SYSCATSPACE has 12.55MB free space left | 'tbs_syscatspace_free_pct'=19.63%;23.44:;15.62: 'tbs_syscatspace_free'=12.55MB;15.00:;10.00:;0;64.00 nagsrv$ check_db2_health --mode bufferpool-hitratio CRITICAL - bufferpool IBMDEFAULTBP hitratio is 53.60%, bufferpool BP32K0000 hitratio is 100.00% | 'bp_ibmdefaultbp_hitratio'=53.60%;98:;90: 'bp_ibmdefaultbp_hitratio_now'=100.00% 'bp_bp32k0000_hitratio'=100.00%;98:;90: 'bp_bp32k0000_hitratio_now'=100.00% nagsrv$ check_db2_health --mode list-bufferpools BP32K0000 IBMDEFAULTBP OK - have fun nagsrv$ check_db2_health --mode bufferpool-hitratio --name IBMDEFAULTBP CRITICAL - bufferpool IBMDEFAULTBP hitratio is 53.60% | 'bp_ibmdefaultbp_hitratio'=53.60%;98:;90: 'bp_ibmdefaultbp_hitratio_now'=100.00% nagsrv$ check_db2_health --mode bufferpool-data-hitratio --name IBMDEFAULTBP CRITICAL - bufferpool IBMDEFAULTBP data page hitratio is 64.35% | 'bp_ibmdefaultbp_hitratio'=64.35%;98:;90: 'bp_ibmdefaultbp_hitratio_now'=100.00% nagsrv$ check_db2_health --mode bufferpool-index-hitratio --name IBMDEFAULTBP CRITICAL - bufferpool IBMDEFAULTBP index hitratio is 38.89% | 'bp_ibmdefaultbp_hitratio'=38.89%;98:;90: 'bp_ibmdefaultbp_hitratio_now'=100.00% nagsrv$ check_db2_health --mode index-usage CRITICAL - index usage is 0.71% | index_usage=0.71%;98:;90: nagsrv$ check_db2_health --mode synchronous-read-percentage OK - synchronous read percentage is 100.00% | srp=100.00%;90:;80: nagsrv$ check_db2_health --mode asynchronous-write-percentage CRITICAL - asynchronous write percentage is 0.00% | awp=0.00%;90:;80: nagsrv$ check_db2_health --mode deadlocks OK - 0.000000 deadlocs / sec | deadlocks_per_sec=0.000000;0;1 nagsrv$ check_db2_health --mode lock-waits OK - 0.000000 lock waits / sec | lock_waits_per_sec=0.000000;10;100 nagsrv$ check_db2_health --mode lock-waiting OK - 0.000000% of the time was spent waiting for locks | lock_percent_waiting=0.000000%;2;5
Verwendung von Environmentvariablen
Man kann die Parameter –hostname, –username, –password und –port ganz weglassen, wenn man die entsprechenden Daten in Environmentvariablen bereitstellt. Seit der Version 3.x kann man Servicedefinitionen in Nagios um eigene Attribute (custom object variables) erweitern. Diese tauchen dann bei der Ausführung des Checkcommands im Environment auf.
Die Environmentvariablen heissen:
-
NAGIOS__SERVICEDB2_HOST (_db2_host in der Servicedefinition)
-
NAGIOS__SERVICEDB2_USER (_db2_user in der Servicedefinition)
-
NAGIOS__SERVICEDB2_PASS (_db2_pass in der Servicedefinition)
-
NAGIOS__SERVICEDB2_PORT (_db2_port in der Servicedefinition)
-
NAGIOS__SERVICEDB2_DATABASE (_db2_database in der Servicedefinition)
Installation
Dieses Plugin setzt die Installation des Perl-Moduls DBD::DB2 voraus.
Nach dem Auspacken des Archivs wird ./configure aufgerufen. Mit ./configure –help können Optionen angezeigt werden, die für den Bau des Plugins einige Defaulteinstellungen liefern.
-
–prefix=BASEDIRECTORY Geben Sie hier das Verzeichnis an, in dem check_db2_health liegen soll. (default: /usr/local/nagios)
-
–with-nagios-user=SOMEUSER Dieser User wird der Eigentümer der Datei check_db2_health sein. (default: nagios)
-
–with-nagios-group=SOMEGROUP Die Gruppe des check_db2_health Binaries. (default: nagios)
-
–with-perl=PATHTOPERL Geben sie hier den Pfad zum Perl-Interpreter an, den sie benutzen möchten. (default: perl im PATH)
Changelog
-
2010-10-01 1.0.3
add mode report
add mode dbthresholds
mode sql can now have a non-numerical output
fixed a bug in connected-users. (Thanks Alexander Titze) -
2010-10-01 1.0.2
bufferpool-hitratio now uses hitratio_now to calculate the exitcode when –lookback is used
add mode last-backup
add mode sort-overflows
index-usage takes delete- and insert-statements into account
add mode sort-overflow-percentage (Thanks Birger Schmidt, Niko v. Koeckritz) -
2010-06-10 1.0.1
Bugfix in connected-users. Danke Niko
-
2009-10-01 1.0
Erste öffentliche Version
Copyright
Gerhard Laußer
Check_db2_health wird unter der GNU General Public License zur Verfügung gestellt.GPL
Autor
Gerhard Laußer (gerhard.lausser@consol.de) beantwortet gerne Fragen zu diesem Plugin.
35 Responses to “check_db2_health”
-
Juan Says:
January 8th, 2010 at 13:07What version of DB2 is this plugin compatible with?
-
Christoph Says:
January 22nd, 2010 at 15:22Hallo, das Plugin ist echt Klasse. Nur wie frage ich in einem SQL nach einer character ab: check_db2_health –mode sql –name ‘select count(*) from sysibmadm.tbsp_utilization where tbsp_state’='NORMAL” -warning 1 -critical 1
Use of uninitialized value $value in numeric gt (>) at ./check_db2_health line 1262
Und bei ein paar Sachen (asynchronous-write-percentage) bekomme ich die Meldung: CRITICAL – unable to aquire awp info Grüße Christoph
-
lausser Says:
January 23rd, 2010 at 14:42Leg eine Datei /tmp/check_db2_health.trace an, lass das Plugin laufen und schau in einem anderen Fenster mit “tail -f /tmp/check_db2_health.trace” zu, was da hinter den Kulissen passiert. Die in der Tracedatei auftauchenden SQL-Statements danach bitte manuell eingeben. Sie müssen ein sinnvolles Ergebnis liefern.
-
Christoph Says:
January 26th, 2010 at 10:52Danke, damit kann ich das wunderbar tracen.
-
Giovanni Says:
February 22nd, 2010 at 17:35Hallo, I installed check_db2_health plugin and it works fine from command line. Anyway, when I run it from Nagios, I get this error:
“CRITICAL – cannot connect to MyHost. Total Environment allocation failure! Did you set up your DB2 client environment?”
Below the Nagios command definition
define command{ command_name check_db2_health_connection_time command_line $USER1$/check_db2_health –hostname $HOSTADDRESS$ –database $_SERVICEDB2_DATABASE$ –port $_SERVICEDB2_PORT$ –username=$_SERVICEDB2_USER$ –password=$_SERVICEDB2_PASS$ –mode connection-time }
$_SERVICEDB2_xxxx$ macros have been defined in my template and service configuration files (as _db2_xxxx). I tried to force DB2_HOME environment variable in /etc/init.d/nagios script, but it doesn’t work.
Thanks in advance for any help. Giovanni
lausser Reply:
February 23rd, 2010 at 15:42What about this? http://archive.netbsd.se/?ml=perl-dbi-users&a=2009-11&t=11921001 Does it solve your problem?
Giovanni Reply:
February 23rd, 2010 at 19:44@lausser, I made confusion with .bash_profile and .bashrc, so the environment variables have been overwritten. Now it works perfectly. Thanks a lot, Giovanni
-
Max Says:
March 4th, 2010 at 17:34Ich habe folgenden Fehler:
CRITICAL – cannot connect to 10.29.234.123. [IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: “TCP/IP”. Communication API being used: “SOCKETS”. Location where the error was detected: “10.29.234.123″. Communication function detecting the error: “recv”. Protocol specific error code(s): ““, ““, “0″. SQLSTATE=08001 # Komme nicht weiter… Gruss
lausser Reply:
March 4th, 2010 at 19:32Alles überprüft? Die IP-Adresse? Den Port? Das Passwort? SQLSTATE=08001 findet man x-mal bei Google und weist auf einen Fehler bei der Angabe dieser Verbindungsdaten hin.
Max Reply:
March 5th, 2010 at 16:40@lausser, Ja, soweit alles überprüft… da ich keinen Catalog verwende gebe ich alles mit: /usr/local/nagios/libexec/check_db2_health –hostname 10.29.234.xxx –port 5900 –database xx –username name –password pass –mode database-usage
lausser Reply:
March 5th, 2010 at 22:57Probiers mit dem folgenden Mini-Script. Damit lässt sich der Fehler eingrenzen.
# fill in your parameters # my $database = ''; # # if the database is not in the catalogue, add host + port # my $hostname = ''; my $port = ''; my $username = ''; my $password = ''; use strict; use warnings; my $dsn = "DBI:DB2:"; if (! $hostname) { # catalog tcpip node <host-nickname> remote <hostname> server <port> # catalog database <remote-db> as <local-nick> at node <host-nickname> $dsn .= $database; } else { $dsn .= sprintf "DATABASE=%s; ", $database; $dsn .= sprintf "HOSTNAME=%s; ", $hostname; $dsn .= sprintf "PORT=%d; ", $port; $dsn .= sprintf "PROTOCOL=TCPIP; "; $dsn .= sprintf "UID=%s; ", $username; $dsn .= sprintf "PWD=%s;", $password; } eval { require DBI; if (my $dbh = DBI->connect( $dsn, $username, $password, { RaiseError => 0, AutoCommit => 1, PrintError => 0 })) { printf "OK - connected\n"; } else { die DBI::errstr(); } }; if ($@) { printf "%s\n", $@; }
Danach steht fest, ob die Verbindung mut dem Perl-Modul DBD::DB2 grundsätzlich hinhaut.
Max Reply:
March 8th, 2010 at 11:25@lausser, Danke für die schnelle Antwort.
Also hab ich die Catalog-Befehle mal ausgeführt, dann alles im Script ergänzt, und ausgeführt, bekomme folgendes:
[IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: “TCP/IP”. Communication API being used: “SOCKETS”. Location where the error was detected: “10.29.234.123″. Communication function detecting the error: “recv”. Protocol specific error code(s): ““, ““, “0″. SQLSTATE=08001
Max Reply:
March 8th, 2010 at 11:27Hier der Weg “zu Fuss”: db2 => connect to c14 SQL30081N A communication error has been detected. Communication protocol being used: “TCP/IP”. Communication API being used: “SOCKETS”. Location where the error was detected: “10.29.234.123″. Communication function detecting the error: “recv”. Protocol specific error code(s): ““, ““, “0″. SQLSTATE=08001
-
Max Says:
March 9th, 2010 at 10:16Jetzt habe ich ein anderes Problem: zu Fuss auf der shell funzt es, aber wenn Nagios die Scripte ausführt, bekomme ich: “Total Environment allocation failure! Did you set up your DB2 client environment? ” Aus dem Artikel hier http://archive.netbsd.se/?ml=perl-dbi-users&a=2009-11&t=11921001 werde ich aber nicht schlau, ich habe wie im Buch von Herrn Laußer die Pfade als export in die .bashrc vom User Nagios und in das Startscript von Nagios (init.d) eingetragen, bringt aber nix… Gruss Maximilian
lausser Reply:
March 10th, 2010 at 17:08Ich würde mal schauen, welche mit DB2 zusammenhängenden Environmentvariablen in der Shell vorhanden sind.
Vermutlich reicht es, die LD_LIBRARY_PATH im Initscript einzutragen.env | grep -i db2
Max Reply:
March 13th, 2010 at 16:30Hallo Herr Laußer, Habs so gelöst:
die Home-Vz-Struktur vom User dbainst1 auf Nagios kopiert, und dann im initscript das Userprofile mitgeladen. Das hinzufügen der LD_LIB… im init hatte ich wie in Ihrem Buch beschrieben eingetragen, leider ohne Erfolg, deshalb die oben beschriebene Vorgehensweise… hauptsache es läuft :)
-
Andreas Says:
May 13th, 2010 at 19:33Hallo, vielen Dank schon mal für das tolle Plugin. Ich habe schon recht viel davon in Verwendung. Ich hätte da noch zwei Fragen.
Welche Berechtigung ist für den Modus “database-usage” erforderlich? Mit einem “normalen” Benutzer in der SYSMON Gruppe bekomme ich den Fehler “unable to aquire database info”. Sobald der Benutzer Mitglied der OS Gruppe DB2ADMNS ist, funktioniert es. Lässt sich dies noch anders lösen?
Ich bekomme im Modus “bufferpool-hitratio” immer 100% zurück. Gibt es hier noch etwas zu beachten? Die Monitor Schalter sind eingeschaltet.
Vielen Dank schon mal!
-
Tim Says:
May 28th, 2010 at 14:15Hallo,schickes Plugin.Habe aber ein kleines Problem: Check_db2_health führt anscheinend auf keiner meiner überwachten Datenbanken “CALL GET_DBSIZE_INFO(?, ?, ?, 0)” erfolgreich aus (kein neuer Snapshot-timestamp anschließend beim Aufruf von SELECT * FROM SYSTOOLS.STMG_DBSIZE_INFO). Somit ist der ermittelte Füllstand auch bei wachsender DB immer gleich.(trotz periodisch eingeplanten check_db2_health mit mode database-usage) Getestet habe ich mit folgenden DB-Versionen: 9.1, 9.5, 9.7 und Basis Perl v5.8.8,DBD-DB2-1.78,db2exc_971_LNX_x86_64. Ich habe die Vorbereitungen wie von Ihnen beschrieben durchgeführt. Muss auf der DB-Seite noch etwas geändert werden? Viele Grüße,Tim.
lausser Reply:
June 1st, 2010 at 22:28Kann ich mir nicht erklären, muss allerdings dazusagen, daß ich kein DB2-Profi bin. Wurde die Datenbank rebootet nach dem Absetzen der 4 update-Kommandos?
-
Niko Says:
June 9th, 2010 at 15:20Hi,
wir bauen gerade auch ein Monitoring für DB2 mittels Nagios. Wir setzen auch dabei das check_db2_health ein. Mir gefällt das Skript gut.. Habe allerdings auch ein paar Anmerkungen:
connected-users: Gibt nur die Anzahl der Connections an, die im Zustand ‘Connected’ sind. DB2 kennt aber noch ein paar Stati mehr. Siehe http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/topic/com.ibm.db2.luw.sql.rtn.doc/doc/r0022011.html?resultof=%22%73%79%73%69%62%6d%61%64%6d%2e%61%70%70%6c%69%63%61%74%69%6f%6e%73%22%20 Die Abfrage SELECT COUNT(*) FROM sysibmadm.applications trifft es eher.
Zum aktuellen Problem: Die Mitgliedschaft in der SYSMON_GROUP reichen nicht aus, um “CALL GET_DBSIZE_INFO(…)” aufzurufen. Da müssen noch weitere Berechtigungen gesetzt werden. grant select,update on table SYSTOOLS.STMG_DBSIZE_INFO to user
Grüße, Niko
lausser Reply:
June 10th, 2010 at 0:55Ja, die Sache mit dem “connected” leuchtet mir ein. Ich werde ein Korrekturrelease rausbringen und auch die Doku bzgl. Berechtigungen erweitern. Vielen Dank für den Hinweis
-
Alexander Titze Says:
November 25th, 2010 at 17:18Hallo Herr Lausser,
bitte ersetzen Sie in Ihrem Script in Zeile 256 bis 258 das Kommentarzeichen “#” durch die DB2-Syntax “–” , sonst liefert dieser Abschnitt bei Ausführung einen Fehler.
mfg
Alexander Titze
lausser Reply:
November 25th, 2010 at 18:13Danke, da war es wohl wieder so spät, daß ich Perl und SQL nicht mehr auseinanderhalten konnte. :-)
-
Torsten Schmidt Says:
December 5th, 2010 at 12:19Hier meine Ergebnisse unter DB2 V. 9.7.2:
Ich habe alle sql-stmt’s aus der trace Datei per Hand ausgeführt aber vorher folgendes geändert:
Für die Tabelle ‘snapdb’ den Schema-Namen von ‘sysibmadm’ auf ‘SYSCATV82′ geändert
deadlocks.sql <– funktioniert jetzt!
index-usage.sql <– funktioniert jetzt!
lock-waiting.sql <– funktioniert jetzt!
synchronous-read-percentage.sql <– findet jetzt die Tabelle liefert aber:
SQL0313N The number of host variables in the EXECUTE or OPEN statement is not equal to the number of values required. SQLSTATE=07004
asynchronous-write-percentage.sql <– findet jetzt die Tabelle liefert aber:
SQL0313N The number of host variables in the EXECUTE or OPEN statement is not equal to the number of values required. SQLSTATE=07004
hierzu habe ich noch keine Alternative gefunden – bin keine DB2-Fachmann :(
keine Ausgabe bei folgenden Befehl:
db2 list tables for schema SYSTOOLS. | egrep -i ‘info|stmg|dbsize’
sehr komisch finde ich, dass bei mir dieses Schema mit keiner Tabelle ‘gefüllt’ ist:
db2 list tables for schema SYSIBMADM <– liefert nichts zurück !??
deshalb:
database-usage.sql
SQL0204N “SYSTOOLS.STMG_DBSIZE_INFO” is an undefined name. SQLSTATE=42704
tablespace-free.sql
SQL0204N “SYSIBMADM.TBSP_UTILIZATION” is an undefined name. SQLSTATE=42704
tablespace-usage-name.sql
SQL0204N “SYSIBMADM.TBSP_UTILIZATION” is an undefined name. SQLSTATE=42704
tablespace-usage.sql
SQL0204N “SYSIBMADM.TBSP_UTILIZATION” is an undefined name. SQLSTATE=42704
-
Torsten Schmidt Says:
December 5th, 2010 at 12:22viel Arbeit umsonst: ich war aber auf dem falschen DB2-Server!
also diese Infos nur als ‘Background’ für DB2 V 8 nutzen. und bitte nicht posten :)
sorry
-
Ace Says:
February 8th, 2011 at 13:39Hello Herr Lausser
Where can I get the instructions to make the pulgin work (sort of a noddy Guide).
-
Don Says:
March 7th, 2011 at 15:08Hi,
I installed the plugin, in a terminal, it’s work fine ./check_db2_health –hostname *** –database *** –username *** –password *** –mode connection-time ==> OK – 0.25 seconds to connect as *** | connection_time=0.2514;1;5
But when i try to do this with centreon, i’ve an error $USER1$/check_db2_health –hostname *** –database *** –username *** –password *** –mode connection-time ==> CRITICAL – cannot connect to ***. Total Environment allocation failure! Did you set up your DB2 client environment?
Have you got an idea ??
-
norbert Says:
March 9th, 2011 at 17:27Hallo, die Installation des Moduls DBD::DB2 erfordert den DB2 Application Development client. Wo finde ich diesen Client?
lausser Reply:
March 9th, 2011 at 17:39http://www.lmgtfy.com/?q=dbd%3A%3Adb2+dbd+application+development+client
Gleich im ersten Trefferdokument steht auch schon der Download-Link. Ich würde von jemand, der DBD::DB2 installieren will, schon erwarten, daß er zumindest das README bzw. davon die ersten zehn Zeilen liest.
-
norbert Says:
March 10th, 2011 at 9:14Den Link kenne ich natürlich, trotzdem finde ich die Stelle nicht wo man diesen Client downloaden kann.
-
norbert Says:
March 10th, 2011 at 10:34Im DB2-Forum hab ich den Link schließlich gefunden: http://www-01.ibm.com/support/docview.wss?rs=71&uid=swg21256235
-
Carolina von Hinrichs Says:
April 12th, 2011 at 15:48Hallo, besteht irgendwie die Möglichkeit check_db2_health ohne password auszuführen. Z.B. in Verbindung mit sudo und dem db2-User. Ausserdem habe ich noch das Problem von oben, den Link geht aber nicht mehr: “CRITICAL – cannot connect to MyHost. Total Environment allocation failure! Did you set up your DB2 client environment?”



lausser Reply:
January 8th, 2010 at 17:57
I use it with 9.x, but you might try it with 8.x and tell me wether it works.