Ad Widget

Collapse

Мониторинг MSSQL через ODBC (Linux)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Ilushko
    Junior Member
    • Nov 2019
    • 18

    #1

    Мониторинг MSSQL через ODBC (Linux)

    Всем привет. Пытаюсь настроить связь через ODBC между Zabbix и MSSQL, но тк Linux я знаю очень плохо, не очень получается:

    И так, произвел первоначальную настройку по этому мануалу https://www.zabbix.com/documentation...unixodbc_mssql

    Содержимое odbc.ini

    [sql1]
    Driver = FreeTDS
    Server = ALPHA
    User = zabbix_agent
    Password = PWD
    Database = ADMIN
    PORT = 1433
    TDS_Version = 8.0
    Содержимое odbcints.ini
    [FreeTDS]
    Description = Free Sysbase & MS SQL Driver
    Driver = /usr/lib/libtdsodbc.so
    Setup = /usr/lib/libtdsS.so
    Driver64 = /usr/lib64/libtdsodbc.so
    Setup64 = /usr/lib64/libtdsS.so
    Port = 1433
    Проверяю:
    > isql sql1
    [ISQL]ERROR: Could not SQLConnect
    Подскажите, как диагностировать проблему, как посмотреть лог?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3406

    #2
    Я не знаю, какой у Вас используется дистрибутив и какие версии unixODBC и конкретных драйверов, поэтому мои комментарии могут оказаться чересчур теоретическими.
    Тем не менее:
    • для драйвера FreeTDS:
      • если в odbc.ini задать параметр "Servername=", то будет искаться соответствующая секция в файле freetds.conf (там должны быть явные ссылки, как минимум, на сервер и порт).
      • если же вместо этого указать параметр "Server=" (DNS-имя либо IP-адрес), то файл freetds.conf игнорируется; но в odbc.ini обязательно должен быт указан и порт.
    • параметр "Port=" обычно указывается в файле odbc.ini, а не odbcinst.ini. Возможно, регистр букв имеет значение (я не нашёл явного упоминания, что можно указывать как "PORT=").
    • в тех системах, которые используются у меня, ничего не говорится о директивах "Driver64=" и "Setup64=" в файле odbcinst.ini. Только "Driver=" и "Setup=", даже для 64-битных систем. Возможно, это тоже играет свою роль (т.е. менеджер unixODBC не находит нужного драйвера).
    • наконец, у утилиты isql есть полезный ключик "-v":
    -v Turn on the verbose mode, where the errors are fully described. Useful for debugging.
    Я бы рекомендовал начать с него:
    Code:
    isql -v sql1
    тогда при ошибках пишется хоть что-то полезное, что помогает направить дальнейшие поиски в нужное русло.

    Comment


    • Ilushko
      Ilushko commented
      Editing a comment
      Спасибо за ответ, действительно с ключом -v ситуация стала чуточку яснее:


      [root@appliance usr]# isql -v sql1
      [01000][unixODBC][Driver Manager]Can't open lib '/usr/lib64/libtdsodbc.so' : file not found
      [ISQL]ERROR: Could not SQLConnect

      find / -name 'libtdsodbc*'
      тоже вернул пустой результат, как мне теперь эти библиотеки на сервер загнать?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3406

    #3
    Ilushko, если хотите, чтобы Ваши реплики кто-то замечал, то отвечайте отдельным сообщением, а не комментарием на чужое сообщение.
    как мне теперь эти библиотеки на сервер загнать?
    Это зависит от используемого дистрибутива - как правило, под конкретный дистрибутив есть своя сборка и своя команда (в зависимости от формата пакетов - apt-get, rpm, zypper, yum...).
    Как альтернатива - можно собрать из исходников (ссылка на проект), там всё достаточно стандартно: скачать и распаковать исходники, в директории с исходниками - "./configure" и затем "make install". Правда, для этого надо иметь установленный компилятор и заголовочные файлы для unixODBC (как правило, поставляются в пакетах с именем вроде "unixODBC-devel").

    Comment

    • Evgene-mmk
      Member
      • Nov 2020
      • 44

      #4
      На Centos8 "из коробки" заработал ODBC Driver 17 for SQL Server

      ODBC.ini
      [server-1]
      Description = server-1
      Driver = ODBC Driver 17 for SQL Server
      Server = tcp:192.168.15.11,1433
      User = zabbix
      Password = mypassword
      Database = master

      Comment

      • Ilushko
        Junior Member
        • Nov 2019
        • 18

        #5
        Originally posted by Evgene-mmk
        На Centos8 "из коробки" заработал ODBC Driver 17 for SQL Server

        ODBC.ini
        [server-1]
        Description = server-1
        Driver = ODBC Driver 17 for SQL Server
        Server = tcp:192.168.15.11,1433
        User = zabbix
        Password = mypassword
        Database = master
        Вот мой файл:
        ODBC.ini
        [SQLServer]
        Description = ALPHA
        Driver = ODBC Driver 17 for SQL Server
        Server = tcp:192.168.14.44\NEWSQL,54419
        User = zabbix_agent
        Password = RuMOXw5T
        Database = ADMIN
        [root@appliance etc]# isql -v SQLServer zabbix_agent RuMOXw5T
        [IM002][unixODBC][Driver Manager]Data source name not found and no default driver specified
        [ISQL]ERROR: Could not SQLConnect

        Дело в том, что у меня именованный инстанс с динамическим портом. Как в таком случае должен выглядеть конфиг?

        Comment

        • Evgene-mmk
          Member
          • Nov 2020
          • 44

          #6
          Да вроде все верно у меня так

          [techmaster]
          Description = techmaster
          Driver = ODBC Driver 17 for SQL Server
          Server = tcp:techmaster\techupr
          User = zabbix
          Password = mypassword
          Database = master

          Наверное тебе сюда https://docs.microsoft.com/ru-ru/sql...l-server-ver15

          вот мой odbcinst.ini
          [ODBC Driver 17 for SQL Server]
          Description=Microsoft ODBC Driver 17 for SQL Server
          Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.7.so.1.1
          UsageCount=3

          [FreeTDS]
          Description=Free Sybase & MS SQL Driver
          Driver=/usr/lib/libtdsodbc.so
          Setup=/usr/lib/libtdsS.so
          Driver64=/usr/lib64/libtdsodbc.so
          Setup64=/usr/lib64/libtdsS.so
          Port=1433
          UsageCount=3

          Comment

          • Ilushko
            Junior Member
            • Nov 2019
            • 18

            #7
            Помогла переустановка всех модулей из статьи https://docs.microsoft.com/ru-ru/sql...l-server-ver15, через этот драйвер [ODBC Driver 17 for SQL Server] все завелось.

            Comment


            • Scorpey
              Scorpey commented
              Editing a comment
              MSSQL расширение для ODBC на мой взгляд работает более корректно, а вот FreeTDS напротив позволяет подключаться к старым MS SQL Server
          Working...