Einrichten von Check Oracle Health
Dieses Tutorial erklärt, wie Sie das Skript Check Oracle Health: check_oracle_health (Dank an Gerhard Lausser) für Ihre Nagios-Umgebung unter CentOS (oder jedem RedHat-basierten Linux) einrichten. Dieses Nagios-Plugin ermöglicht die Überwachung vieler Oracle-DB-Parameter - wie Tablespace-Größe, Session, Prozessanzahl, SGA-Pool, etc. Probieren Sie es auf der Webseite des Autors aus.
Der schwierigste Teil der Einrichtung besteht darin, die abhängigen Perl-Bibliotheken zu installieren und Änderungen im Perl-Code vorzunehmen, damit sie funktionieren.
Auf dem Oracle-Server müssen wir den Überwachungsbenutzer anlegen und nur die für das Skript erforderlichen Rechte erteilen.
su – oracle
sqlplus / as sysdba
Geben Sie die Befehle ein:
CREATE USER nagios IDENTIFIED BY account unlock;
GRANT CREATE SESSION TO nagios;
GRANT SELECT any dictionary TO nagios;
GRANT SELECT ON V_$SYSSTAT TO nagios;
GRANT SELECT ON V_$INSTANCE TO nagios;
GRANT SELECT ON V_$LOG TO nagios;
GRANT SELECT ON SYS.DBA_DATA_FILES TO nagios;
GRANT SELECT ON SYS.DBA_FREE_SPACE TO nagios;
Auf dem Nagios-Server: Laden Sie das Prüfskript check_oracle_health hoch (kann von der Website des Autors unter dem obigen Link heruntergeladen werden)
- Konfigurieren Sie mit dem Befehl
./configure -prefix=/usr/local/nagios/libexec -with-nagios-user=nagios
- Installieren Sie den Oracle Instant Client auf dem Nagios-Server
- Abhängigkeiten
yum search libaio
yum install libaio.x86_64
Installieren Sie die Oracle-Client-Basislibs, das devel-Paket und den sqlplus-Client für sql
rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
rpm -ivh OracleInstantClient/oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
rpm -ivh OracleInstantClient/oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
- Installieren Sie alle abhängigen Perl-Module - DBI , DBD::Oracle
Jetzt kommt der schwierige Teil. Das DBD::Oracle Perl Modul ist nicht in einem rpm Repository, das Gute daran ist, dass man es über CPAN herunterladen kann. Leider funktioniert es nicht sofort nach dem Auspacken. Ich musste einige Modifikationen vornehmen, um es zum Laufen zu bringen, siehe unten.
perl-DBI ist bereits auf dem Nagios-Server installiert, es ist ein RPM-Paket
## oracle is not available in rpm so install manually
#with CPAN
perl -MCPAN -e shell
get DBD::Oracle
## make with makefile.PL
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
cd .cpan/build/DBD-Oracle-1.74/
perl Makefile.PL
## needed to use
perl Makefile.PL -l
make
make test
make install
Nun müssen Sie die im Skriptpaket check_oracle_health enthaltenen perl lib-Dateien in das Verzeichnis "Nagios" kopieren.
cp -R Nagios/ /usr/lib/perl5/site_perl/
Bis hierhin sollte die Grundfunktionalität des Skriptes vorhanden sein, allerdings bekomme ich beim Versuch der Tablespace-Prüfung einen seltsamen Fehler. Zum Beispiel: Tablespace.pm hat keinen wahren Wert zurückgegeben oder: Undefinierte Unterroutine &DBD::Oracle::Server::Database::Tablespace::init_tablespaces
Nehmen Sie die folgenden Änderungen am Kodex vor.
(in der letzten Zeile "1;" hinzufügen)
## tablespace to work
vi /usr/lib/perl5/site_perl/Nagios/DBD/Oracle/Server.pm
use Nagios::DBD::Oracle::Server::Database;
## then
cp -r Nagios/DBD ./
## in der letzten Zeile "1;" hinzufügen
/usr/lib/perl5/site_perl/DBD/Oracle/Server/Database/Tablespace.pm
…
1;
Prüfbefehl in Nagios konfigurieren
Nun müssen Sie den Prüfbefehl in Nagios konfigurieren. Damit der Befehl funktioniert, müssen die Oracle-Client-Pfade zu den Umgebungsvariablen hinzugefügt werden - ORACLE_HOME, LD_LIBRARY_PATH, PATH. Um alle Arten von Problemen bei der Übergabe von Umgebungsvariablen in Nagios zu vermeiden und das Startskript von Nagios zu ändern, um sie zu setzen (wie auf der Website des Autors beschrieben), übergeben Sie die Variablen einfach direkt im Befehl. Die neueste Version von check_oracle_health erlaubt dies.
## configure the command
vi objects/commands.cfg
# Oracle Database check health Befehl
define command{
command_name check_oracle_health
command_line /usr/bin/perl $USER1$/check_oracle_health.pl
–connect=//$HOSTADDRESS$:$ARG1$/$ARG2$ –username=$ARG3$ –password=$ARG4$
–warning=$ARG5$ –critical=$ARG5$ –mode $ARG7$ –environment
ORACLE_HOME=’/usr/lib/oracle/12.1/client64′ –environment
PATH=/usr/lib/oracle/12.1/client64/bin –environment
LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
}
# Oracle Database check health Befehl mit dem Attribut -name
define command{
command_name check_oracle_health_name
command_line /usr/bin/perl $USER1$/check_oracle_health.pl
–connect=//$HOSTADDRESS$:$ARG1$/$ARG2$ –username=$ARG3$ –password=$ARG4$
–warning=$ARG5$ –critical=$ARG5$ –mode $ARG7$ –name $ARG8$ –environment ORACLE_HOME=’/usr/lib/oracle/12.1/client64′ –environment PATH=/usr/lib/oracle/12.1/client64/bin –environment LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
Es ist gut, auch einen Befehl ohne Schwellenwerte zu haben und je nach den von Ihnen verwendeten Diensten zu verwenden, die das Skript check_oracle_health bereitstellt. Wenn Sie z. B. den freien Speicherplatz prüfen, gibt Ihnen der Befehl "Sind Sie sicher, dass Sie benachrichtigt werden möchten, wenn der freie Speicherplatz den Schwellenwert überschreitet?
# Oracle Database check health Befehl ohne Schwellenwerte
define command{
command_name check_oracle_health_nothres
command_line /usr/bin/perl $USER1$/check_oracle_health.pl
–connect=//$HOSTADDRESS$:$ARG1$/$ARG2$ –username=$ARG3$ –password=$ARG4$
–mode $ARG5$
–environment ORACLE_HOME=’/usr/lib/oracle/12.1/client64′ –environment PATH=/usr/lib/oracle/12.1/client64/bin –environment LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
}
## Hinzufügen der Dienstprüfungen für den Staging-Orakel-Server
define service {
use generic-service
host_name oracledbtest
service_description Oracle sessions
### check_oracle_health.pl — PORT ! SID ! USER ! Pass ! Warn ! crit !
mode
check_command
check_oracle_health!1521!YOOURSID!nagios!!60!80!session-usage
}
### Ändern Sie das letzte Argument für die verschiedenen Modi
tns-ping , process-usage , sga-shared-pool-free
Sie können alle Modi hinzufügen, die Sie möchten. Sie können den Befehl manuell wie folgt testen. Es ist sehr wichtig, dass die ORACLE_HOME und andere Variablen gesetzt sind. Sie können direkt an den Befehl übergeben werden, so dass Sie Ihr Nagios-Startskript nicht ändern müssen, um die Variablen in der Nagios-Benutzerumgebung zu setzen.
./check_oracle_health.pl –connect=//X.X.X.X:1521/YOOURSID –username=nagios -password=XXXX –mode=tablespace-free –name NAMEOFTBLSPC –environment ORACLE_HOME=’/usr/lib/oracle/12.1/client64′ –environment PATH=$PATH:$ORACLE_HOME/bin –environment LD_LIBRARY_PATH=$ORACLE_HOME/lib
Sie brauchen mehr Hilfe?
Nehmen Sie noch heute Kontakt mit uns auf und wir helfen Ihnen dabei, Ihr Ziel zu erreichen.