Ad Widget

Collapse

Мониторинг доступности БД через odbc

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sharap
    Junior Member
    • Sep 2013
    • 3

    #1

    Мониторинг доступности БД через odbc

    Добрый день. Гуру zabbix-а помогите с определением доступности БД.
    Кратко БД oracle, zabbix 3.0.2 (готовое решение Ubuntu Server).
    Пакеты instantclient-basic-linux.x64-12.1.0.2.0 и instantclient-odbc-linux.x64-12.1.0.2.0 поставил и настроил, переменные оракловые прописал. ODBC.ini и odbcinst.ini настроил. В ubuntu при выполнении команды"isql test_bd" соедиение происходит, запрос "select * from dual" выполняет, все возвращается. Соответственно в самом zabbix-e, создал шаблон , в нем элемент данных типа "проверка БД", там строчка "select * from dual". После этого добавил узел сети. Смотрю последние данные, все хорошо, ежеминутно получаю "х". Вопрос как настроить триггер на то что БД не доступна, просто если останавливаю БД на сервере, соответственно, элемент данных становится не доступен, с сообщением "Cannot connect to ODBC DSN:[SQL_ERROR]:[HY000][12514][[unixODBC][Oracle][ODBC][Ora]ORA-12514: TNS:listener does not currently know of service requested in connect descriptor]| , и триггер тоже работать не будет. Поэтому и вопрос как корректно определить что БД жива или не жива. Может надо использовать в элементе данных ключ "db.odbc.discovery" ?
  • yukra
    Senior Member
    • Apr 2013
    • 1359

    #2
    Originally posted by sharap
    Добрый день. Гуру zabbix-а помогите с определением доступности БД.
    Кратко БД oracle, zabbix 3.0.2 (готовое решение Ubuntu Server).
    Пакеты instantclient-basic-linux.x64-12.1.0.2.0 и instantclient-odbc-linux.x64-12.1.0.2.0 поставил и настроил, переменные оракловые прописал. ODBC.ini и odbcinst.ini настроил. В ubuntu при выполнении команды"isql test_bd" соедиение происходит, запрос "select * from dual" выполняет, все возвращается. Соответственно в самом zabbix-e, создал шаблон , в нем элемент данных типа "проверка БД", там строчка "select * from dual". После этого добавил узел сети. Смотрю последние данные, все хорошо, ежеминутно получаю "х". Вопрос как настроить триггер на то что БД не доступна, просто если останавливаю БД на сервере, соответственно, элемент данных становится не доступен, с сообщением "Cannot connect to ODBC DSN:[SQL_ERROR]:[HY000][12514][[unixODBC][Oracle][ODBC][Ora]ORA-12514: TNS:listener does not currently know of service requested in connect descriptor]| , и триггер тоже работать не будет. Поэтому и вопрос как корректно определить что БД жива или не жива. Может надо использовать в элементе данных ключ "db.odbc.discovery" ?
    Сделайте скрипт, который будет ходить в БД и возвращать 0 или 1 в зависимости от результата. Пример из моего конфига агента:
    UserParameter=mysql.ping, HOME=/var/lib/zabbix mysqladmin ping | grep -i -c alive

    Возвращяет 1 если в выводе есть строчка "alive", в противном случае 0.

    Comment

    • sharap
      Junior Member
      • Sep 2013
      • 3

      #3
      Originally posted by yukra
      Сделайте скрипт, который будет ходить в БД и возвращать 0 или 1 в зависимости от результата. Пример из моего конфига агента:
      UserParameter=mysql.ping, HOME=/var/lib/zabbix mysqladmin ping | grep -i -c alive

      Возвращяет 1 если в выводе есть строчка "alive", в противном случае 0.
      Спасибо. Еще поиском нашел пару примеров скриптов, в итоге сделал у себя так.

      Code:
      #!/bin/bash
      #test connection BD Oracle
      export LD_LIBRARY_PATH=/usr/lib/oracle/12.1.0.2/client/lib
      hostbd="$1"
      sid_bd="$2"
      username="testuser"
      password="testuserpswrd"
      port="1521"
      #if [ "$#" -eq 2]; then
      # PORT=$2
      #fi
      if echo 'select * from dual;' |  /usr/lib/oracle/12.1.0.2/client/lib/sqlplus $username/$password@$hostbd:$port/$sid_bd | grep -wq 'X' >> /dev/null;
      then echo 1
      else echo 0
      fi

      Comment

      Working...