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