Ad Widget

Collapse

Недоступность БД MS SQL

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • aleksey.ishchenko
    Senior Member
    • May 2020
    • 187

    #1

    Недоступность БД MS SQL

    Добрый день
    как мониторить базы на sql сервере на котором их несколько? Простой запрос isql -v dsn login pas проходит, но в item ошибка,

    Cannot connect to ODBC DSN: [SQL_ERROR]:[IM002][0][[unixODBC][Driver Manager]Data source name not found, and no default driver specified]
    машина не в домене
    в odbc
    [DB-FINIST]
    Driver = FreeTDS
    Server = 10.52.1.163
    PORT = 1433
    TDS_Version = 8.0
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Если инстансы работают по разным портам - то создай несколько секций в ODBC и\или freetds
    Ну и относись к инстансу как к отдельному серверу.

    Comment

    • aleksey.ishchenko
      Senior Member
      • May 2020
      • 187

      #3
      Порт один 1433 и инстанс тоже один
      На машинах в домене все ок, соединение на порты 1433 и 10050 проходит, на машине включен фаервол, открыты только некоторые порты, открыты порты 10050, 1433 на входящие и на исходящие 10051 открыт порт
      Добавил в макроcах {$DSN} DB-FINIST теперь выдает ошибку SQL query returned empty result.
      Attached Files
      Last edited by aleksey.ishchenko; 24-02-2021, 11:23.

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3404

        #4
        Originally posted by aleksey.ishchenko
        Добавил в макроcах {$DSN} DB-FINIST теперь выдает ошибку SQL query returned empty result.
        Макрос {$DSN_SQL}, надеюсь, определён?

        Comment

        • aleksey.ishchenko
          Senior Member
          • May 2020
          • 187

          #5

          Originally posted by Kos

          Макрос {$DSN_SQL}, надеюсь, определён?
          Нет, максрос не определял, на доменных серверах с этим проблем нет. На доменных серверах добавлял этот шаблон и прописывал в obbc.ini и вск ок. Тут машина не в домене и включен файрвол, открыты исх порты 10051 и входящие 1433 и 10050
          Определен тольео макрос {$DSN} как в odbc.ini
          Attached Files
          Last edited by aleksey.ishchenko; 24-02-2021, 13:40.

          Comment

          • Evgene-mmk
            Member
            • Nov 2020
            • 44

            #6
            Все верно раз {$DSN_SQL} =='' выполнился запрос select state_desc from sys.databases where name='' результат - пусто
            сделай select state_desc from sys.databases where name='имябазы' получишь ONLINE/OFFLINE

            Comment

            • aleksey.ishchenko
              Senior Member
              • May 2020
              • 187

              #7
              Originally posted by Evgene-mmk
              Все верно раз {$DSN_SQL} =='' выполнился запрос select state_desc from sys.databases where name='' результат - пусто
              сделай select state_desc from sys.databases where name='имябазы' получишь ONLINE/OFFLINE
              Этот запрос и стоит, но если на хосте одна база, то все нормально, но тут их несколько, мне на каждую надо создать отдельный запрос с конкретным именем базы?
              select state_desc from sys.databases where name='base1'
              select state_desc from sys.databases where name='base2' и тд?
              Last edited by aleksey.ishchenko; 24-02-2021, 14:01.

              Comment

              • Kos
                Senior Member
                Zabbix Certified SpecialistZabbix Certified Professional
                • Aug 2015
                • 3404

                #8
                Originally posted by aleksey.ishchenko
                Нет, макрос не определял
                Я не знаю, чему он должен быть равен, я просто видел использование этого макроса в SQL-запросе на Вашем скриншоте (судя по виду запроса - видимо, проверяется статус конкретной базы).
                Наверное, в описании шаблона это должно быть указано.
                Возможно, что макрос определён на уровне шаблона, т.е. имеет какое-то значение по умолчанию, которое подходит для большинства стандартных случаев, но не подходит для этого конкретного сервера.

                Comment

                • Evgene-mmk
                  Member
                  • Nov 2020
                  • 44

                  #9
                  Тогда уж SELECT name, state FROM sys.databases
                  и JSON обрабатывай в шаблоне в правилах обнаружения

                  Не знаю как в предыдущих версиях в 5.0 есть Template DB MSSQL by ODBC поставь его получишь полный расклад по серверу

                  Comment

                  • Evgene-mmk
                    Member
                    • Nov 2020
                    • 44

                    #10
                    Originally posted by aleksey.ishchenko
                    Этот запрос и стоит, но если на хосте одна база, то все нормально, но тут их несколько, мне на каждую надо создать отдельный запрос с конкретным именем базы?
                    Странно сейчас попробовал на сервере с одной базой select state_desc from sys.databases where name='' -> пустой результат ведь на сервере как минимум четыре системных БД и возможно пользовательская

                    Comment

                    • aleksey.ishchenko
                      Senior Member
                      • May 2020
                      • 187

                      #11
                      Originally posted by Kos

                      Макрос {$DSN_SQL}, надеюсь, определён?
                      Определен не помотрел в шаблоне
                      Attached Files

                      Comment

                      • Kos
                        Senior Member
                        Zabbix Certified SpecialistZabbix Certified Professional
                        • Aug 2015
                        • 3404

                        #12
                        Originally posted by aleksey.ishchenko
                        Определен не помотрел в шаблоне
                        Ой. А что, так можно было? При определении одних user macro ссылаться на другие, которые определяются там же; причём нигде не оговорен порядок, в котором это происходит...
                        В общем, я бы попробовал на проблемном хосте явно на уровне хоста определить макрос {$DSN_SQL} (в имя той базы, которую надо проверять).

                        Comment

                        • Evgene-mmk
                          Member
                          • Nov 2020
                          • 44

                          #13
                          Видимо удачно получилось что {$DSN} совпадает с и именем базы а раз {$DSN} == {$DSN_SQL} то и запрос что-то вернул

                          Comment

                          • aleksey.ishchenko
                            Senior Member
                            • May 2020
                            • 187

                            #14
                            Originally posted by Kos
                            Ой. А что, так можно было? При определении одних user macro ссылаться на другие, которые определяются там же; причём нигде не оговорен порядок, в котором это происходит...
                            В общем, я бы попробовал на проблемном хосте явно на уровне хоста определить макрос {$DSN_SQL} (в имя той базы, которую надо проверять).
                            Их там 3 штуки и все 3 нужно проверять

                            Comment

                            • Kos
                              Senior Member
                              Zabbix Certified SpecialistZabbix Certified Professional
                              • Aug 2015
                              • 3404

                              #15
                              Originally posted by aleksey.ishchenko
                              Их там 3 штуки и все 3 нужно проверять
                              Ну, по всей видимости, данный шаблон этого не учитывает - рассчитан только на проверку одной базы.
                              Если такой сервер (с несколькими базами) всего один и баз только три, то можно выставить данный макрос в имя одной из этих баз (чтобы она проверялась штатными средствами, встроенными в шаблон), а затем - если это работает как надо - для остальных баз просто склонировать из шаблона соответствующие элементы данных и триггеры, поменяв в них имя проверяемой базы.
                              Если же нужно решение для общего случая, то нужно использовать механизм LLD для генерации соответствующих объектов (элементов данных и триггеров) автоматически: либо искать другой, более подходящий шаблон, либо делать самому (на самом деле, это не так и сложно).

                              Comment

                              Working...