Ad Widget

Collapse

Supervision de plusieurs serveur Oracle

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • RemyB
    Junior Member
    • Apr 2018
    • 1

    #1

    Supervision de plusieurs serveur Oracle

    Bonjour,

    Je suis débutant sur la supervison Zabbix et j'ai pour mission de superviser plusieurs bases Oracle sous AIX (une cinquantaine).
    J'ai fais des essaies avec un driver ODBC, ainsi qu'avec qu'autre plugins (ZBXORA, ZabbixDBA, DABABIX, ORABBIX, ...)
    Je n'ai malheureusement pas réussi à faire ce que je souhaite :

    - Pouvoir superviser directement via l'interface web tout les serveurs Oracle sans devoir pour chaque bases faire des réglages sur le serveur Zabbix
    donc avoir un Template ou quelque chose du genre ?!

    je ne sais pas si j'ai mal utilisé les outils que j'ai déjà testé ou si il existe autre chose qui peut correspondre à ce que je recherche.

    Si quelqu'un aurait quelque chose a me conseiller je suis preneur !

    Merci à vous !
  • escom
    Member
    • Mar 2018
    • 36

    #2
    Bonsoir,

    Je te propose ce petit tuto :

    userparameter_oracle.conf
    userParameter=checkoracle,'/opt/zabbix/scripts/check-oracle.sh'
    Script check-oracle.sh qui doit etre dans /opt/zabbix/scripts du serveur zabbix ou proxy zabbix

    Les paramètres suivants doivent être renseignés :
    ORACLE_HOME=> correspond à l ‘oracle home
    ORACLE_SID_LIST=> correspond au SID de la base
    USERNAME=>schéma oracle SPOT
    PASSWORD=>mot de passe

    Codes retour :

    code : 6 Ok
    code : 7 dbstart pour instance absent
    code : 8 L'instance ne repond pas"
    code : 9 La base n'est pas demarree
    code : 10 Erreur de connexion base
    code : 11 Pb Taille du Buffer Cache
    code :12 Pb Taille du Librairy Cache





    #!/bin/bash
    ################################################## #######
    # Description : Script de check pour Oracle
    # Auteur :
    # Date : 2013/01/07
    # Version : 1.0
    # Environnement : Oracle 11G
    ################################################## #######

    ################################################## #######
    # Declaration des variables
    ################################################## #######

    PROGNAME=`basename $0`
    PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`

    STATE_OK="-OK-"
    STATE_WARNING="-WRN-"
    STATE_CRITICAL="-NOK-"
    EXIT_CODE_WARNING=1
    EXIT_CODE_CRITICAL=2
    EXIT_CODE=0
    BUFFER_CACHE_MIN=80
    LIBRAIRY_CACHE_MIN=99
    STATE_OK1=0
    STATE_OK2=0
    STATE_OK3=0
    STATE_OK4=0
    STATE_OK5=0
    STATE_OK6=0


    export ORACLE_HOME="/ora11g"
    export ORATAB="/etc/oratab"
    export PATH=$PATH:$ORACLE_HOME/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
    export ORACLE_SID_LIST=

    USERNAME=spot
    PASSWORD=xxxxxxxxx
    ################################################## #######
    # Script
    ################################################## #######

    #echo "################################################# ####################"
    #echo "# Recherche des SID desactives au demarrage dans le fichier oratab"
    #echo "################################################# ####################"
    if test -f $ORATAB
    then
    for sid in $ORACLE_SID_LIST
    do
    DB_AUTO_START=$(fgrep $sid: /etc/oratab | cut -f3 -d":")
    if [ "$DB_AUTO_START" = "Y" -o "$DB_AUTO_START" = "y" ]
    then
    STATE_OK1=1
    # echo "$STATE_OK : dbstart pour instance $sid present"
    else
    # echo "$STATE_WARNING : dbstart pour instance $sid absent"
    # EXIT_CODE=$EXIT_CODE_WARNING
    STATE_OK1=2
    fi
    done
    else
    #echo "$STATE_WARNING : Le fichier $ORATAB n'existe pas"
    STATE_OK1=2
    fi

    for sid in $ORACLE_SID_LIST
    do
    # echo "################################################# ####################"
    # echo "# Test de la base $sid"
    # echo "################################################# ####################"
    ################################################## ###################
    # Test1 : Etat du listener"
    ################################################## ###################
    tnschk=` tnsping $sid`
    tnschk2=` echo $tnschk | grep -c OK`
    if [ ${tnschk2} -eq 1 ] ; then
    tnschk3=` echo $tnschk | sed -e 's/.*(//' -e 's/).*//'`
    # echo "$STATE_OK : $sid a repondu en ${tnschk3}"
    STATE_OK2=1
    else
    # echo "$STATE_CRITICAL : $sid ne repond pas"
    STATE_OK2=3
    fi

    ################################################## ###################
    # Test2 : Etat du process monitor"
    ################################################## ###################
    pmonchk=`ps -ef | grep -v grep | grep -c "ora_pmon_$sid"`
    if [ ${pmonchk} -ge 1 ] ; then
    # echo "$STATE_OK : $sid possede ${pmonchk} process monitor"
    STATE_OK3=1
    else
    # echo "$STATE_CRITICAL : La base $sid n'est pas demarree"
    STATE_OK3=4
    fi

    ################################################## ###################
    # Test3 : Connexion de Dummy"
    ################################################## ###################
    loginchk=`sqlplus dummy1/user@$sid < /dev/null`
    loginchk2=` echo $loginchk | grep -c ORA-01017`
    if [ ${loginchk2} -eq 1 ] ; then
    # echo "$STATE_OK : Dummy est connecte"
    STATE_OK4=1
    else
    loginchk3=` echo "$loginchk" | grep "ORA-" | head -1`
    # echo "$STATE_CRITICAL : Erreur de connexion : $loginchk3"
    STATE_OK4=5
    fi

    ################################################## ###################
    # Test4 : Etat du buffer cache"
    ################################################## ###################
    result=`sqlplus -s $USERNAME/$PASSWORD@$sid << EOF
    set pagesize 0
    set numf '9999999.99'
    select (1-(pr.value/(dbg.value+cg.value)))*100
    from v\\$sysstat pr, v\\$sysstat dbg, v\\$sysstat cg
    where pr.name='physical reads'
    and dbg.name='db block gets'
    and cg.name='consistent gets';
    EOF`
    if [ -n "`echo $result | grep ORA-`" ]
    then
    error=` echo "$result" | grep "ORA-" | head -1`
    # echo "$STATE_CRITICAL : Buffer cache erreur : $error"
    EXIT_CODE=$EXIT_CODE_CRITICAL
    STATE_OK5=6
    else
    buf_hr=`echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}'`
    buf_hrx=`echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}'`
    if [ $buf_hr -lt $BUFFER_CACHE_MIN ]
    then
    # echo "$STATE_WARNING : Taille du Buffer Cache $buf_hrx% inferieur a $BUFFER_CACHE_MIN%"
    EXIT_CODE=$EXIT_CODE_WARNING
    STATE_OK5=6
    else
    # echo "$STATE_OK : Taille du Buffer Cache $buf_hrx% superieur a $BUFFER_CACHE_MIN%"
    STATE_OK5=1
    fi
    fi
    ################################################## ###################
    # Test5 : Etat du librairy cache"
    ################################################## ###################
    result=`sqlplus -s $USERNAME/$PASSWORD@$sid << EOF
    set pagesize 0
    set numf '9999999.99'
    select sum(lc.pins)/(sum(lc.pins)+sum(lc.reloads))*100
    from v\\$librarycache lc;
    EOF`
    if [ -n "`echo $result | grep ORA-`" ] ; then
    error=` echo "$result" | grep "ORA-" | head -1`
    # echo "$STATE_CRITICAL : Librairy cache erreur : $error"
    # EXIT_CODE=$EXIT_CODE_CRITICAL
    else
    lib_hr=`echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}'`
    lib_hrx=`echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}'`
    if [ $lib_hr -lt $LIBRAIRY_CACHE_MIN ]
    then
    # echo "$STATE_WARNING : Taille du Librairy Cache $lib_hrx% inferieur a $LIBRAIRY_CACHE_MIN%"
    EXIT_CODE=$EXIT_CODE_WARNING
    STATE_OK6=7
    else
    # echo "$STATE_OK : Taille du Librairy Cache $lib_hrx% superieur a $LIBRAIRY_CACHE_MIN%"
    STATE_OK6=1
    fi
    fi

    ################################################## ###################
    # Test6 : Etat des tablespaces"
    ################################################## ###################
    #ADRCI_HOME=$(su - ora11g -c '/ora11g/bin/adrci exec="show home" | grep $sid')
    #su - ora11g -c '/ora11g/bin/adrci exec="set home $ADRCI_HOME ; show alert -term ;"'
    done
    ZABBIX_CODE=$(( STATE_OK1 + STATE_OK2 + STATE_OK3 + STATE_OK4 + STATE_OK5 + STATE_OK6 ))
    echo $ZABBIX_CODE


    Comment

    • escom
      Member
      • Mar 2018
      • 36

      #3
      Afin de faire fonctionner les scripts bash, il y a des actions à effectuer au niveau de la base de données.
      En tant que user sysdba exécuter les requêtes sql suivantes :
      create user spot identified by xxxxxxxxxxxxxxxxxxxxxxxxx;
      grant select on v_$sysstat to SPOT;
      grant select on v_$librarycache to SPOT;
      create view v_$alert_log as select * from x$dbgalertext;
      create public synonym v$alert_log for sys.v_$alert_log;
      grant select on v$alert_log to SPOT;
      Last edited by escom; 27-04-2018, 21:04.

      Comment

      • escom
        Member
        • Mar 2018
        • 36

        #4
        Le Template LAG-Check_Oracle doit être ajouté au niveau de la Configuration de la console d’administration Web ZABBIX

        Voila, si cela fonctionne j'ai 2 autres scripts ....
        bye

        Attached Files
        Last edited by escom; 27-04-2018, 21:11.

        Comment

        • kommler
          Junior Member
          • Jun 2019
          • 1

          #5
          Bonjour escom,

          Votre approche est intéressante , je serai intéressé par les 2 autres scripts...

          Est ce que c'est possbible de les partager avec la communauté?

          Merci

          Comment

          Working...