Da wir auf Oracle für unsere Applikationen einsetzen, sollen diese natürlich auch überwacht werden.
Das geht relativ einfach mit SQL-Querys, benötigt wird dazu der Oracle Instant Client:
Das Skript nutzt in der aktuellen Version eine Art Deploymentserver um die RPM Pakete abzuholen, mit geringem Aufwand kann man aber die Aufrufe von wget auch gegen ein cp o.ä. austauschen.
Vor der Nutzung müssen noch die entsprechenden Variablen angepasst werden:
Hier das Skript als Download: prepare_ora_inst.sh
Nach dem Ausführen des Skripts sollte die Installation des Oracle Instant Clients erfolgreich erledigt sein, anschließend kümmern wir uns nun um den Abfrageteil:
Hier das Beispiel-Skript als Download: check_oracle_abfrage.php (Username, Password, IP/DNS, DBName und die Abfrage müssen noch angepasst werden!)
Das Skript muss nun noch ausführbar gemacht (chmod +x) oder direkt via php aufgerufen werden.
Anschließend solltet ihr ein funktionierendes Oracle Abfragesystem haben.
Bei Fragen bitte einfach melden.
Das geht relativ einfach mit SQL-Querys, benötigt wird dazu der Oracle Instant Client:
- x64: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
- x86: http://www.oracle.com/technetwork/topics/linuxsoft-082809.html
Das Skript nutzt in der aktuellen Version eine Art Deploymentserver um die RPM Pakete abzuholen, mit geringem Aufwand kann man aber die Aufrufe von wget auch gegen ein cp o.ä. austauschen.
Vor der Nutzung müssen noch die entsprechenden Variablen angepasst werden:
- Optional: proxy server
- IP des Deployment Servers
Hier das Skript als Download: prepare_ora_inst.sh
#!/bin/bash # Author: oliver.skibbe (at) gmail.com # Purpose: install oracle instant client # Date: 2013-05-21 15:00 # Variables SRC=/usr/src # deployment server, oracle instant client rpms should be there deploymentserver="deploymentip/dns" # http / https http_type="http" # basic auth auth="user:password" # proxy server for pecl/apt proxy="" # oracle versions major=11.2 minor=0.3.0-1 # ora files files=('basic' 'devel' 'sqlplus') echo "####################################################" echo -e "#### Oracle Instant Client Version $major.$minor ####" echo "####################################################" echo "Do you want to install 64-bit or 32-bit oracle instant client? 1/2" read answer case "$answer" in 1) arch=x86_64 shortarch=64 ;; 2) arch=i386 shortarch= ;; *) echo "Wrong answer..try again" exit 1 esac echo "Do you want to install php extension? y/N" read phpanswer case "$phpanswer" in y*|Y*) echo "Installing php extension" php=true ;; *) echo "Not installing php extension" php=false esac if [ "x$proxy" = "x" ]; then echo "Adding proxy to apt.conf" if [ -d /etc/apt/apt.conf.d/ ] ; then echo "Acquire::http::Proxy \"$proxy\";" >> /etc/apt/apt.conf.d/99proxy.conf else echo "Acquire::http::Proxy \"$proxy\";" >> /etc/apt/apt.conf fi # refresh sources apt-get update # install rpm to deb converter apt-get install alien libaio1 for file in ${files[@]} do filename=oracle-instantclient$major-$file-$major.$minor.$arch.rpm wget -c --no-proxy -O $SRC/$filename $http_type://$auth@$deploymentserver/deployment/global/oracle/$filename if [ $? != 0 ] ; then echo "Downloading $filename from $http_type://$deploymentserver/deployment/global/oracle/ failed!" exit 1 fi alien -i $SRC/$filename done # libs echo "/usr/lib/oracle/$major/client$shortarch/lib" > /etc/ld.so.conf.d/oracle.conf ldconfig ORACLE_HOME=/usr/lib/oracle/$major/client$shortarch # log directory mkdir /usr/include/oracle/$major/client$shortarch/log # includes ln -s /usr/include/oracle/$major/client$shortarch $ORACLE_HOME/include # path variables cat << EOT > /etc/profile.d/oracle.sh export ORACLE_HOME=$ORACLE_HOME export PATH=\$PATH:\$ORACLE_HOME/bin EOT chmod +x /etc/profile.d/oracle.sh if [ $php = true ] ; then echo "php oracle stuff" export ORACLE_HOME=$ORACLE_HOME if [ "x$proxy" = "x" ]; then pear config-set http_proxy $proxy fi pecl install oci8 echo "extension=oci8.so" > /etc/php5/apache2/conf.d/oci8.ini service apache2 reload fi exit 0
Nach dem Ausführen des Skripts sollte die Installation des Oracle Instant Clients erfolgreich erledigt sein, anschließend kümmern wir uns nun um den Abfrageteil:
Hier das Beispiel-Skript als Download: check_oracle_abfrage.php (Username, Password, IP/DNS, DBName und die Abfrage müssen noch angepasst werden!)
#!/usr/bin/php <?php // oracle database $oracleuser = "user"; $oraclepass = "pass"; $instance = "ip/dbname"; $warn = $argv[1]; $crit = $argv[2]; // connect oracle database $conn = oci_connect($oracleuser,$oraclepass,$instance); $query = "select count(*) from table where export_date is null"; $abfrage = oci_parse($conn,$query); oci_execute($abfrage); $row = oci_fetch_array ($abfrage, OCI_BOTH); $count = $row[0]; if ( $count >= $crit ) { $exitCode = 2; $exitString = "CRITICAL"; } else if ( $count >= $warn ) { $exitCode = 1; $exitString = "WARNING"; } else { $exitCode = 0; $exitString = "OK"; } $perfData = "auftraege=$count;$warn;$crit"; // return values echo $exitString . " {$count} Auftraege|" . $perfData; exit($exitCode); ?>
Das Skript muss nun noch ausführbar gemacht (chmod +x) oder direkt via php aufgerufen werden.
Anschließend solltet ihr ein funktionierendes Oracle Abfragesystem haben.
Bei Fragen bitte einfach melden.
Keine Kommentare:
Kommentar veröffentlichen