Ad Widget

Collapse

Получить ip узла в zabbix через sql запрос

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • tyommik
    Junior Member
    • Jan 2013
    • 8

    #1

    Получить ip узла в zabbix через sql запрос

    Добрый день. Не могу получить ip узла в zabbix по его hostid. Использую запрос вида "SELECT ip FROM hosts,interface WHERE hosts.hostid =10228;" где 10228 это конкретный хост, почему-то выдаёт массив узлов. Пытаюсь реализовать метод из этого поста https://www.zabbix.com/forum/showthread.php?t=12916
  • titar
    Junior Member
    • Nov 2009
    • 20

    #2
    Originally posted by tyommik
    Добрый день. Не могу получить ip узла в zabbix по его hostid. Использую запрос вида "SELECT ip FROM hosts,interface WHERE hosts.hostid =10228;"]
    Если не ошибаюсь, со второй версии заббикса ip хранится в таблице interface, а не в hosts

    mysql> select ip from interface where hostid = '10090';
    +--------------+
    | ip |
    +--------------+
    | 10.16.199.20 |
    +--------------+
    1 row in set (0.00 sec)

    mysql>

    Как то так. Zabbix 2.0.3

    Comment

    • Jimson
      Senior Member
      • Jan 2008
      • 1327

      #3
      Originally posted by tyommik
      запрос вида "SELECT ip FROM hosts,interface WHERE
      hosts.hostid = interface.hostid and hosts.host = 'myhost'

      Но ты все равно можешь получить "таблицу", так как интерфейсом может быть больше одного. Дополнительно можешь ограничить по типу интерфейса:

      and interface.type = 1

      тип интерфейса 1 это агент, 2 это SNMP, 3+ не знаю, не использую. Есть еще признак "default" интерфейса, не знаю где он в базе.
      Last edited by Jimson; 12-03-2013, 08:47.

      Comment

      • mkolomiets
        Senior Member
        • Jul 2009
        • 134

        #4
        Originally posted by tyommik
        Добрый день. Не могу получить ip узла в zabbix по его hostid. Использую запрос вида "SELECT ip FROM hosts,interface WHERE hosts.hostid =10228;" где 10228 это конкретный хост, почему-то выдаёт массив узлов. Пытаюсь реализовать метод из этого поста https://www.zabbix.com/forum/showthread.php?t=12916
        Где то так
        Code:
        select
          interface.ip
        from
          hosts
        left join interface
          on interface.hostid = hosts.hostid
          and interface.main = 1
        where
          hosts.hostid = ...

        Comment

        • Jimson
          Senior Member
          • Jan 2008
          • 1327

          #5
          Подозреваю что main это "default", а значит если заведешь snmp/ipmi адрес, то в выборке будет больше одной строки. Добавьте тогда уж LIMIT 1 в конце.

          Comment

          • mkolomiets
            Senior Member
            • Jul 2009
            • 134

            #6
            Originally posted by Jimson
            Подозреваю что main это "default", а значит если заведешь snmp/ipmi адрес, то в выборке будет больше одной строки. Добавьте тогда уж LIMIT 1 в конце.
            Дефолтный по одному типу будет только один, можно в условие еще тип добавить.
            Code:
            ...
            left join interface on
              interface.hostid = hosts.hostid
              and interface.main = 1
              and interface.type = 1
            where
            ...
            А вот с лимитом ИМХО можно пролететь на порядке если без сортировки.

            Comment

            Working...