Ad Widget

Collapse

Ms sql lld Что то голову поломал

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • timon_is_timon
    Senior Member
    • Dec 2012
    • 117

    #1

    Ms sql lld Что то голову поломал

    Решил заморочиться на применение вот этого темплейта
    Join the friendly and open Zabbix community on our forums and social media platforms.


    Делаю все по инструкции при запросе с сервера заббикс к хосту с базой
    isql -v <instance_from_odbc.ini> <usarname> <password>
    SQL> SELECT name FROM master..sysdatabases результат возвращает нормально.

    ODBC сконфигурировал.
    [sql1] тут прописал просто имя своего сервака с базами, чтобы было нагляднее
    Driver = FreeTDS
    Server = <SQL server 1 IP> тут прописал IP сервера с базами
    PORT = 1433
    TDS_Version = 8.0

    на хосте , с базами в фронтедне макросы прописал:

    {$USER} = MS SQL Server user name (имя пользователя имеющего доступ к моей базе)
    {$PASSWORD} = Password for MS SQL Server user (пароль пользователя имеющего доступ к базе)
    {$ODBC} = sql1 #instance from odbc.ini (тут вместо sql1 то что я прописал в ини файле)

    на сервере активные проверки 100% настроены и работают

    MS SQL Server database state" value mapping сделал

    regular expression
    Name: Databases for discovery
    Expression: ^(master|model|msdb|ReportServer|ReportServerTempD B|tempdb)$
    Type: Result is FALSE
    сделал

    сам шаблон импортировал успешно.

    Create host "SQL Server 1" этот пункт делать не стал, а просто в имеющемся хосте прописал макросы. (но и пробовал делать, на ситуацию не влияет.

    в логах заббикс сервера о Database discovery (так называется правило в темплейте) ни слова.

    Правило обнаружения настроено так:

    Name: Database discovery
    Type: Database monitor
    Key: db.odbc.select[dbname,{$ODBC}]
    User name: {$USER}
    Password: {$PASSWORD}
    SQL query: select '{"data":[', (SELECT STUFF((SELECT ',' + '{"{#DBNAME}":"' + [Name] + '"}' FROM master..sysdatabases ORDER BY [Name] FOR XML PATH('')), 1, 1, '')) ,']}' FOR XML PATH('')select '{"data":[', (SELECT STUFF((SELECT ',' + '{"{#DBNAME}":"' + [Name] + '"}' FROM master..sysdatabases ORDER BY [Name] FOR XML PATH('')), 1, 1, '')) ,']}' FOR XML PATH('')


    Плизз требую выпрямления рук! что пропустил? Обнаружение баз не работает.
    Last edited by timon_is_timon; 25-04-2014, 12:41.
  • Jimson
    Senior Member
    • Jan 2008
    • 1327

    #2
    а сервер собран с поддержкой odbc?

    Comment

    • timon_is_timon
      Senior Member
      • Dec 2012
      • 117

      #3
      Originally posted by jimson
      а сервер собран с поддержкой odbc?
      https://www.zabbix.com/documentation...es/odbc_checks
      а вот это большой вопрос! как проверить? и как доставить если нет?

      Comment

      • Zenith1983
        Junior Member
        • Feb 2014
        • 20

        #4
        Пишу сюда, дабы не плодить темы.
        Я так понимаю, что запрос в правиле обнаружения:

        select '{"data":[', (select stuff((select ',' + '{"{#dbname}":"' + [name] + '"}' from master..sysdatabases order by [name] for xml path('')), 1, 1, '')) ,']}' for xml path('')"
        это запрос к БД.
        По сути это равносильно выполнению этого запроса на сервере БД:

        c:\> sqlcmd -q "select '{"data":[', (select stuff((select ',' + '{"{#dbname}":"' + [name] + '"}' from master..sysdatabases order by [name] for xml path('')), 1, 1, '')) ,']}' for xml path('')"
        Но не работает. Пишет ошибку.

        sqlcmd: "data":[', (select stuff((select ',' + '{"{#dbname}":"' + [name] + '"}' from master..sysdatabases order by [name] for xml path('')), 1, 1, '')) ,']}' for xml path('')"" - непредвиденный аргумент. Для получения справки введите -?
        Или я не правильно понимаю суть данного обнаружения???
        Прошу пролить свет на этот вопрос.

        ЗЫ.
        Windows 2008 R2 x64
        SQL server 2008 R2 x64
        Last edited by Zenith1983; 29-11-2014, 23:00.

        Comment

        • Zentarim
          Senior Member
          • Mar 2012
          • 526

          #5
          Originally posted by zenith1983
          Пишу сюда, дабы не плодить темы.
          Я так понимаю, что запрос в правиле обнаружения:



          это запрос к БД.
          По сути это равносильно выполнению этого запроса на сервере БД:



          Но не работает. Пишет ошибку.



          Или я не правильно понимаю суть данного обнаружения???
          Прошу пролить свет на этот вопрос.

          ЗЫ.
          Windows 2008 r2 x64
          sql server 2008 r2 x64
          Готов поспорить, что вы запутались со спецсимволами, скобками, кавычками и т.д. Но разбираться в вашей мешанине нет особого желания.

          Включайте максимальный дебаг агента и изучайте его логи. Там вам будет показано, какой запрос на самом деле выполняется.

          Comment

          Working...