Blog

ORACLE DATABASE - Überwachung mit NAGIOS mittels CHECK ORACLE HEALTH

Bild von Mihail Vukadinoff
Mihail Wukadinow
CTO & DevOps-Leiter
04.06.2018
Lesezeit: 4 Minuten.
Zuletzt aktualisiert am: 04.03.2025

Inhaltsübersicht

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
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.

Eine Antwort hinterlassen

Mehr Beiträge

Da Unternehmen in ganz Europa einem zunehmenden regulatorischen Druck in Bezug auf Datenhoheit, operative Kontrolle und digitale Souveränität ausgesetzt sind, geht es bei der Cloud-Strategie nicht mehr nur um Skalierbarkeit und Leistung. Es geht um Vertrauen, ...
Lesen
Einführung Die Cloud-Technologie verändert weiterhin die Art und Weise, wie Unternehmen weltweit Wert schaffen und expandieren. Da jedoch immer mehr Unternehmen Multi-Cloud-Architekturen einsetzen, wird der Weg zur Modernisierung oft komplexer und kostspieliger....
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.