Announcement

Collapse
No announcement yet.

Plugin Oracle??

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Up, quelqu'un aurait une idée please ??

    J'ai pourtant bien modifié le script avec la bonne variable ORACLE_HOME comme ceci :

    export ORACLE_HOME = /oracle92/product/ora920

    Mais toujours la meme erreur.
    Last edited by lowdata; 28 August 2007, 10:10.
    Centreon 1.4
    Nagios 2.9
    Suse 10.2

    Comment


    • #17
      dans le plugin j'ai rajouté ces lignes :

      Code:
      #! /bin/sh
      #
      # [email protected]
      # 01/06/2000
      #
      #  This Nagios plugin was created to check Oracle status
      #
      
      ORACLE_HOME="/usr/lib/oracle/xe/app/oracle/product/10.2.0/client"
      
      TNS_ADMIN="/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin"
      
      export TNS_ADMIN=$TNS_ADMIN
      export ORACLE_HOME=$ORACLE_HOME
      ....
      ensuite je fais mes tests avec ./check_oracle --login SID

      Comment


      • #18
        J'ai bien ajouté la variable ORACLE_HOME, mais pas de résultat :

        Code:
        ./check_oracle -oranames  192.168.65.2 -login XRP
        Cannot determine ORACLE_HOME for sid 192.168.65.2
        Tu renseigne bien l'IP également ? c'est la meme syntaxe ?
        Centreon 1.4
        Nagios 2.9
        Suse 10.2

        Comment


        • #19
          UP. Toujours pas réussi a a faire fonctionner ce plugin :

          - dans le script je renseigne bien le ORACLE_HOME
          - apres je tente un :

          ./check_oracle -oranames 192.168.65.20 -login hexa
          Cannot determine ORACLE_HOME for sid 192.168.65.20

          (hexa étant le SID), et il me retourne toujours la meme erreur :/ Savez vous d'ou cela peut t il venir ? faut t il que la variable TNS_ADMIN soit également renseignée pour effectuer cette simple commande ?
          Centreon 1.4
          Nagios 2.9
          Suse 10.2

          Comment


          • #20
            Salut !

            Je me permet de poster ici car j'ai un pti soucis concernant un plugin de test oracle un peu customisé :

            Je vous le met ici avec les commandes de debug ^^

            Code:
            #!/bin/bash
            #
            # Test de tablespaces
            #
            #
            EXPORT IFS='^M' # on ne traite pas les espaces comme des retours chariot
            export ORACLE_HOME=/opt/oracle/product/10.2.0/client_1
            TNSNAMES=$ORACLE_HOME/network/admin/tnsnames.ora
            LOGIN=pwetpwet
            PASS=repwetpwet
            REQUETE=/usr/lib/nagios/plugins/autres/tablespace.sql
            STATE_OK=0
            STATE_WARNING=1
            STATE_CRITICAL=2
            STATE_UNKNOWN=3
            
            if [[ $# -lt 6 ]]
            then
                    echo "Usage : todo usage"
                    exit $STATE_UNKNOWN
            fi
            echo Bla1
            while getopts w:c:H:h option
            do
            echo Bla1.5
             case $option in
              w)
               warn=$OPTARG
               ;;
              c)
               crit=$OPTARG
               ;;
              H)
               host=$OPTARG
               ;;
              *)
               echo "Todo : usage"
               exit $STATE_UNKNOWN
               ;;
             esac
            done
            echo Bla2
            grep -q $host $TNSNAMES
            
            if [[ $? -eq 1 ]]
            then
                    echo "Hote introuvable dans tnsnames.ora"
                    exit $STATE_UNKNOWN
            fi
            
            $ORACLE_HOME/bin/sqlplus -s $LOGIN/[email protected]$host < $REQUETE|sed -e 's/[\t]/ /g'|sed -e 's/  */ /g'|(while read i
            do
                    occupe=`echo $i|cut -d ' ' -f 7`
                    if [[ $occupe -gt $crit ]]
                    then
                            echo 1 > status.tmp
                            echo -n "Critical : "
                            echo $i|cut -d ' ' -f 2,7
                            exit $STATE_CRITICAL
                    elif [[ $occupe -gt $warn ]]
                    then
                            awarn=1
                            echo -n "Warning : "
                            echo $i|cut -d ' ' -f 2,7
                            exit $STATE_WARNING
                    fi
            done)
            echo Bla3
            exit $?

            Lorsque j'exécute le script à la main, il me retourne bien le premier tablespace qui ne est remplit mais quand oreon l'exécute, le seul retour que j'ai est "Bla1".

            Ce qui est assez génant, avouez le .

            Aurais-je oublié une étape importante dans la création d'un plugin ?

            Merci

            ( je précise que ce script est encore en développement, donc c'est un peu grouik grouik, si toutefois vous aviez des conseils, n'hésitez pas ).

            Comment


            • #21
              UP tjs pas de solutions, je rapele que j'ai ORACLE server qui tourne sur uns erv distant. Sur ma machine j'ai install Oracle XE, modifié le fichier check_oracle comme suit :

              Code:
              #! /bin/sh
              #
              # [email protected]
              # 01/06/2000
              #
              #  This Nagios plugin was created to check Oracle status
              #
              
              ORACLE_HOME="/oracle/8.1.7"
              export ORACLE_HOME=$ORACLE_HOME
              PROGNAME=`basename $0`
              PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
              REVISION=`echo '$Revision: 1.16 $' | sed -e 's/[^0-9.]//g'`
              
              . $PROGPATH/utils.sh
              ........................
              Je tente de le lancer via la commande :

              [code]./check_oracle -oranames oracle 192.168.65.24[
              Cannot determine ORACLE_HOME for sid 192.168.65.24
              /code]

              Une idée please ? ?
              Centreon 1.4
              Nagios 2.9
              Suse 10.2

              Comment


              • #22
                Perso, je ferai directement :

                Code:
                #! /bin/sh
                #
                # [email protected]
                # 01/06/2000
                #
                #  This Nagios plugin was created to check Oracle status
                #
                
                export ORACLE_HOME=/oracle/8.1.7
                ...

                Comment


                • #23
                  bien meme comme ca ca ne passe pas. Tu mets avec ou sans guillemets en theorie ? Et quelle serait ta ligne de commande minimale a utiliser avec check_oracle ?
                  Centreon 1.4
                  Nagios 2.9
                  Suse 10.2

                  Comment


                  • #24
                    Salut.


                    Dans le plugin suivant tu devrais trouver de quoi te dépanner ( la requete retourne entre autres, l'espace restant ).
                    Code:
                    #!/bin/bash
                    #
                    # Test de tablespaces
                    #
                    #
                    export IFS='^M' # on ne traite pas les espaces comme des retours chariot
                    export ORACLE_HOME=/opt/oracle/product/10.2.0/client_1
                    TNSNAMES=$ORACLE_HOME/network/admin/tnsnames.ora
                    LOGIN=pwet
                    PASS=pwet
                    STATE_OK=0
                    STATE_WARNING=1
                    STATE_CRITICAL=2
                    STATE_UNKNOWN=3
                    RETURN_FILE=/opt/oreon/log/retour.tmp
                    EXIT=$STATE_UNKNOWN
                    
                    cat /dev/null > $RETURN_FILE
                    
                    if [[ $# -lt 6 ]]
                    then
                            echo "Usage : todo usage"
                            exit $STATE_UNKNOWN
                    fi
                    #echo Il y a $# arguments
                    while getopts w:c:H:h option
                    do
                     case $option in
                      w)
                       warn=$OPTARG
                       ;;
                      c)
                       crit=$OPTARG
                       ;;
                      H)
                       host=$OPTARG
                       ;;
                      *)
                       echo "Todo : usage"
                       exit $STATE_UNKNOWN
                       ;;
                     esac
                    done
                    grep -q $host $TNSNAMES
                    
                    if [[ $? -eq 1 ]]
                    then
                            echo "Hote introuvable dans tnsnames.ora"
                            exit $STATE_UNKNOWN
                    fi
                    
                    $ORACLE_HOME/bin/sqlplus -s $LOGIN/[email protected]$host <<EOF |sed -e 's/[\t]/ /g'|sed -e 's/  */ /g'|(while read i
                    set pagesize 100
                    set linesize 200
                    set head off
                    set feed off
                    
                    col "EXT  TS"     format A36
                    col TAILLE        format 999999999999
                    col UTILISE       format 999999999999
                    col %UTILISE      format 9999
                    col LIBRE         format 999999999999
                    col %LIBRE        format 9999
                    col %UTIL_MAXSIZE format 999
                    col DISPO_MAXSIZE format 999999
                    
                    select   'YES '||ddf.TABLESPACE_NAME "EXT  TS",
                             ddf.BYTES/1024 "TAILLE",
                             (ddf.BYTES-DFS.BYTES)/1024 "UTILISE",
                             round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) "%UTILISE",
                             dfs.BYTES/1024 "LIBRE",
                             round((1-((ddf.BYTES-dfs.BYTES)/ddf.BYTES))*100,2) "%LIBRE",
                             F."%UTIL_MAXSIZE" "%UTIL_MAXSIZE",
                             F.DISPO_MAXSIZE "DISPO_MAXSIZE"
                    from    (select TABLESPACE_NAME,
                                    sum(BYTES) bytes
                             from   dba_data_files
                             group  by TABLESPACE_NAME) ddf,
                            (select TABLESPACE_NAME,
                                    sum(BYTES) bytes
                             from   dba_free_space
                             group  by TABLESPACE_NAME) dfs,
                            (select TABLESPACE_NAME,
                                    ROUND(100*SUM(BYTES)/SUM(MAXBYTES)) "%UTIL_MAXSIZE",
                                    ROUND((SUM(MAXBYTES)-SUM(BYTES))/1048576) "DISPO_MAXSIZE"
                             from DBA_DATA_FILES
                             where AUTOEXTENSIBLE ='YES'
                             group by TABLESPACE_NAME) F
                    where    ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME and
                             F.TABLESPACE_NAME=dfs.TABLESPACE_NAME
                    union
                    (
                    (
                    select   'NO  '||ddf.TABLESPACE_NAME "EXT  TS",
                             ddf.BYTES/1024 "TAILLE",
                             (ddf.BYTES-DFS.BYTES)/1024 "UTILISE",
                             round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) "%UTILISE",
                             dfs.BYTES/1024 "LIBRE",
                             round((1-((ddf.BYTES-dfs.BYTES)/ddf.BYTES))*100,2) "%LIBRE",
                             0 "%UTIL_MAXSIZE",
                             0 "DISPO_MAXSIZE"
                    from    (select TABLESPACE_NAME,
                                    sum(BYTES) bytes
                             from   dba_data_files
                             group  by TABLESPACE_NAME) ddf,
                            (select TABLESPACE_NAME,
                                    sum(BYTES) bytes
                             from   dba_free_space
                             group  by TABLESPACE_NAME) dfs,
                            (select TABLESPACE_NAME
                             from DBA_DATA_FILES
                             where AUTOEXTENSIBLE ='NO'
                             group by TABLESPACE_NAME) F
                    where    ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME and
                             F.TABLESPACE_NAME=dfs.TABLESPACE_NAME
                    )
                    minus
                    (
                    select   'NO  '||ddf.TABLESPACE_NAME "EXT  TS",
                             ddf.BYTES/1024 "TAILLE",
                             (ddf.BYTES-DFS.BYTES)/1024 "UTILISE",
                             round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) "%UTILISE",
                             dfs.BYTES/1024 "LIBRE",
                             round((1-((ddf.BYTES-dfs.BYTES)/ddf.BYTES))*100,2) "%LIBRE",
                             F."%UTIL_MAXSIZE" "%UTIL_MAXSIZE",
                             F.DISPO_MAXSIZE "DISPO_MAXSIZE"
                    from    (select TABLESPACE_NAME,
                                    sum(BYTES) bytes
                             from   dba_data_files
                             group  by TABLESPACE_NAME) ddf,
                            (select TABLESPACE_NAME,
                                    sum(BYTES) bytes
                             from   dba_free_space
                             group  by TABLESPACE_NAME) dfs,
                            (select TABLESPACE_NAME,
                                    ROUND(100*SUM(BYTES)/SUM(MAXBYTES)) "%UTIL_MAXSIZE",
                                    ROUND((SUM(MAXBYTES)-SUM(BYTES))/1048576) "DISPO_MAXSIZE"
                             from DBA_DATA_FILES
                             where AUTOEXTENSIBLE ='YES'
                             group by TABLESPACE_NAME) F
                    where    ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME and
                             F.TABLESPACE_NAME=dfs.TABLESPACE_NAME
                    )
                    );
                    exit;
                    EOF
                    do
                            occupe=`echo $i|cut -d ' ' -f 7`
                            if [[ $occupe -gt $crit ]]
                            then
                                    echo -n "Critical : " >> $RETURN_FILE
                                    echo -n  $i|cut -d ' ' -f 2,7 >> $RETURN_FILE
                            elif [[ $occupe -gt $warn ]]
                            then
                                    echo -n "Warning : " >> $RETURN_FILE
                                    echo $i|cut -d ' ' -f 2,7 >> $RETURN_FILE
                            fi
                    done)
                    cat $RETURN_FILE|tr \\n " "
                    if grep -q Critical $RETURN_FILE
                    then
                            EXIT=$STATE_CRITICAL
                    elif grep -q Warning $RETURN_FILE
                    then
                            EXIT=$STATE_WARNING
                    else
                            echo "Ok"
                            EXIT=$STATE_OK
                    fi
                    
                    rm $RETURN_FILE
                    exit $EXIT
                    C'est pas encore fini mais un peu plus propre ( et ça à l'air de pas mal marcher ). ( merci mon DBA pour la requête ).
                    Last edited by Poulpatine; 31 August 2007, 10:41.

                    Comment


                    • #25
                      ok merci....

                      Dans le script j'ai juste modifié la variable ORACLE_HOME....
                      - Je suis obligé d'avoir la variable TNSNAMES si je veux juste lister mes tablesspaces ou l'espace restant ? (car je ne trouve pas ce fichier sur mon serv oracle...)
                      - Y'a t il autre chose a modifier dans ton script pour qu il s adapte a mon server ?
                      - Enfin quelle commande lance tu pour executer ce sript ? quelle en ait la syntaxe koi... Merci d'avance de ton aide.
                      Centreon 1.4
                      Nagios 2.9
                      Suse 10.2

                      Comment


                      • #26
                        Après je ne sais pas comment ton client Oracle est configuré mais je sais que le mien nécessite la présence d'un fichier tnsnames.ora. ( mais rien ne t'empeche de virer le bloc sur la vérification du tnsname ).

                        sinon le script s'utilise de la manière suivant :

                        ./oracle_space.sh -H SERVERTNSNAME -w 80 -c 95

                        -H le serveur oracle
                        - w le seuil de remplissage d'avertissement
                        -c le seuil de remplissage critique
                        Last edited by Poulpatine; 31 August 2007, 11:19.

                        Comment


                        • #27
                          et bien tjs le meme msg :

                          Code:
                          Cannot determine ORACLE_HOME for sid ora_server
                          Alors que dans le .profile du server oracle, c'est bien la meem variable renseignée que celle dans le script check_oracle :/

                          Tu as Oracle XE ou quelle appli ki tourne sur ta machine oreon ?
                          Sur ton server oracle tu as modifié quelque chose ou t'as rien touché dessus ?
                          Centreon 1.4
                          Nagios 2.9
                          Suse 10.2

                          Comment


                          • #28
                            La machine de supervision ne contient qu'un client oracle, le serveur oracle est à part. et à part oreon ( ses pré-requis ) et le client oracle je n'ai rien de spécial d'installé sur le serveur.

                            Comment


                            • #29
                              Bon et bien merci de l'aide mais ca n'avance pas, quand je lance le script il ne se passe rien.....
                              ./space_oracle.sh -oranames 192.168.93.33
                              Usage : todo usage


                              J'ai modifié la variable ORACLE_HOME, LOGIN et PASS. Je dois modifier autre chose dans le script ? ? (tnsnames.ora je ne le trouve pas sur le server oracle, et retour.tmp est censé etre un fichier de log ? apres execution du script je n'ai rien dedans.)

                              Si tu pourrais m'en dire un peu plus ^^. merci d'avance;
                              Last edited by lowdata; 3 September 2007, 14:01.
                              Centreon 1.4
                              Nagios 2.9
                              Suse 10.2

                              Comment


                              • #30
                                Bah sinon tu peux utiliser ça ( ainsi, pas de prise de tête ) :

                                Code:
                                #!/bin/bash
                                #
                                # Test de tablespaces
                                #
                                #
                                export IFS='^M' # on ne traite pas les espaces comme des retours chariot
                                export ORACLE_HOME=/opt/oracle/product/10.2.0/client_1
                                LOGIN=pwet
                                PASS=pwet
                                STATE_OK=0
                                STATE_WARNING=1
                                STATE_CRITICAL=2
                                STATE_UNKNOWN=3
                                RETURN_FILE=/opt/oreon/log/retour.tmp
                                EXIT=$STATE_UNKNOWN
                                
                                cat /dev/null > $RETURN_FILE
                                
                                if [[ $# -lt 6 ]]
                                then
                                        echo "Usage : todo usage"
                                        exit $STATE_UNKNOWN
                                fi
                                
                                while getopts w:c:H:h option
                                do
                                 case $option in
                                  w)
                                   warn=$OPTARG
                                   ;;
                                  c)
                                   crit=$OPTARG
                                   ;;
                                  H)
                                   host=$OPTARG
                                   ;;
                                  *)
                                   echo "Todo : usage"
                                   exit $STATE_UNKNOWN
                                   ;;
                                 esac
                                done
                                
                                $ORACLE_HOME/bin/sqlplus -s $LOGIN/[email protected]$host <<EOF |sed -e 's/[\t]/ /g'|sed -e 's/  */ /g'|(while read i
                                set pagesize 100
                                set linesize 200
                                set head off
                                set feed off
                                
                                col "EXT  TS"     format A36
                                col TAILLE        format 999999999999
                                col UTILISE       format 999999999999
                                col %UTILISE      format 9999
                                col LIBRE         format 999999999999
                                col %LIBRE        format 9999
                                col %UTIL_MAXSIZE format 999
                                col DISPO_MAXSIZE format 999999
                                
                                select   'YES '||ddf.TABLESPACE_NAME "EXT  TS",
                                         ddf.BYTES/1024 "TAILLE",
                                         (ddf.BYTES-DFS.BYTES)/1024 "UTILISE",
                                         round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) "%UTILISE",
                                         dfs.BYTES/1024 "LIBRE",
                                         round((1-((ddf.BYTES-dfs.BYTES)/ddf.BYTES))*100,2) "%LIBRE",
                                         F."%UTIL_MAXSIZE" "%UTIL_MAXSIZE",
                                         F.DISPO_MAXSIZE "DISPO_MAXSIZE"
                                from    (select TABLESPACE_NAME,
                                                sum(BYTES) bytes
                                         from   dba_data_files
                                         group  by TABLESPACE_NAME) ddf,
                                        (select TABLESPACE_NAME,
                                                sum(BYTES) bytes
                                         from   dba_free_space
                                         group  by TABLESPACE_NAME) dfs,
                                        (select TABLESPACE_NAME,
                                                ROUND(100*SUM(BYTES)/SUM(MAXBYTES)) "%UTIL_MAXSIZE",
                                                ROUND((SUM(MAXBYTES)-SUM(BYTES))/1048576) "DISPO_MAXSIZE"
                                         from DBA_DATA_FILES
                                         where AUTOEXTENSIBLE ='YES'
                                         group by TABLESPACE_NAME) F
                                where    ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME and
                                         F.TABLESPACE_NAME=dfs.TABLESPACE_NAME
                                union
                                (
                                (
                                select   'NO  '||ddf.TABLESPACE_NAME "EXT  TS",
                                         ddf.BYTES/1024 "TAILLE",
                                         (ddf.BYTES-DFS.BYTES)/1024 "UTILISE",
                                         round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) "%UTILISE",
                                         dfs.BYTES/1024 "LIBRE",
                                         round((1-((ddf.BYTES-dfs.BYTES)/ddf.BYTES))*100,2) "%LIBRE",
                                         0 "%UTIL_MAXSIZE",
                                         0 "DISPO_MAXSIZE"
                                from    (select TABLESPACE_NAME,
                                                sum(BYTES) bytes
                                         from   dba_data_files
                                         group  by TABLESPACE_NAME) ddf,
                                        (select TABLESPACE_NAME,
                                                sum(BYTES) bytes
                                         from   dba_free_space
                                         group  by TABLESPACE_NAME) dfs,
                                        (select TABLESPACE_NAME
                                         from DBA_DATA_FILES
                                         where AUTOEXTENSIBLE ='NO'
                                         group by TABLESPACE_NAME) F
                                where    ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME and
                                         F.TABLESPACE_NAME=dfs.TABLESPACE_NAME
                                )
                                minus
                                (
                                select   'NO  '||ddf.TABLESPACE_NAME "EXT  TS",
                                         ddf.BYTES/1024 "TAILLE",
                                         (ddf.BYTES-DFS.BYTES)/1024 "UTILISE",
                                         round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) "%UTILISE",
                                         dfs.BYTES/1024 "LIBRE",
                                         round((1-((ddf.BYTES-dfs.BYTES)/ddf.BYTES))*100,2) "%LIBRE",
                                         F."%UTIL_MAXSIZE" "%UTIL_MAXSIZE",
                                         F.DISPO_MAXSIZE "DISPO_MAXSIZE"
                                from    (select TABLESPACE_NAME,
                                                sum(BYTES) bytes
                                         from   dba_data_files
                                         group  by TABLESPACE_NAME) ddf,
                                        (select TABLESPACE_NAME,
                                                sum(BYTES) bytes
                                         from   dba_free_space
                                         group  by TABLESPACE_NAME) dfs,
                                        (select TABLESPACE_NAME,
                                                ROUND(100*SUM(BYTES)/SUM(MAXBYTES)) "%UTIL_MAXSIZE",
                                                ROUND((SUM(MAXBYTES)-SUM(BYTES))/1048576) "DISPO_MAXSIZE"
                                         from DBA_DATA_FILES
                                         where AUTOEXTENSIBLE ='YES'
                                         group by TABLESPACE_NAME) F
                                where    ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME and
                                         F.TABLESPACE_NAME=dfs.TABLESPACE_NAME
                                )
                                );
                                exit;
                                EOF
                                do
                                        occupe=`echo $i|cut -d ' ' -f 7`
                                        if [[ $occupe -gt $crit ]]
                                        then
                                                echo -n "Critical : " >> $RETURN_FILE
                                                echo -n  $i|cut -d ' ' -f 2,7 >> $RETURN_FILE
                                        elif [[ $occupe -gt $warn ]]
                                        then
                                                echo -n "Warning : " >> $RETURN_FILE
                                                echo $i|cut -d ' ' -f 2,7 >> $RETURN_FILE
                                        fi
                                done)
                                cat $RETURN_FILE|tr \\n " "
                                if grep -q Critical $RETURN_FILE
                                then
                                        EXIT=$STATE_CRITICAL
                                elif grep -q Warning $RETURN_FILE
                                then
                                        EXIT=$STATE_WARNING
                                else
                                        echo "Ok"
                                        EXIT=$STATE_OK
                                fi
                                
                                rm $RETURN_FILE
                                exit $EXIT

                                Comment

                                Working...
                                X