Ad Widget

Collapse

Из Oracle получить в zabbix сразу несколько строк

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • drylio
    Junior Member
    • Oct 2019
    • 6

    #1

    Из Oracle получить в zabbix сразу несколько строк

    Привет,
    Короткий рассказ. Через Unixodbc я объединил oracle с zabbix и получаю различную информацию от oracle. Все хорошо. У меня появилась новая задача - написать select, который бы выдавал список объектов с более чем 100 событиями.Сценарий написал, я получаю данные. Я объединил столбцы в один столбец и получил данные, но проблема в том, что может быть более одного объекта, то есть количество строк может быть от 1 до n. Если я выбираю "ключ"
    db.odbc.select[<unique short description>,<dsn>,<connection string>] Return first column of the first row of the SQL query result.
    он возвращает только первую строку. Как заставить zabbix показывать все получаемые строки? Я не хотел бы использовать отдельный файл, где будет храниться собранная информация. через isql -v возвращает все найденные строки.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Подобная тема недавно поднималась, посмотрите сюда.

    Comment

    • drylio
      Junior Member
      • Oct 2019
      • 6

      #3
      Спасибо Kos за ссылку, осталось еще несколько вопросов без ответа

      Я пробовал не с триггером, а с Items, потому что мне нужно отображать Items результаты на Dashboard.

      Как я уже писал, я написал select, затем объединил все столбцы в один и назвал столбец "test".

      "Type of information" выбирал "Text", но я не заметил никакой разницы, если использую и "Character"

      Preprocessing с типом "JavaScript" поставил ваш скрипт:

      //transform source string into JSON object
      val_json=JSON.parse(value);
      //extract needed parts only into array
      val_array=[];
      for (i in val_json) {
      val_array.push(val_json[i]["test"]);
      }
      //return array as a string using NL as a separator
      return val_array.join('\n');

      Данные получаю, но очень интересно представлены:

      Dashboard я получил одну строчку:

      2021-03-24 10:23:10 99 | Status 5 | 1 | 13524 | Object1 99 | Status 4 | 1 | 385 | Object2


      Но если я перейду к "Latest data", я все увижу правильно. Данные разделены на отдельные строки.

      2021-03-24 10:23:10 99 | Status 5 | 1 | 13524 | Object1
      99 | Status 4 | 1 | 385 | Object2

      Мне нужно, чтобы и Dashboard показывал в нескольких строках, а не в одной строке.
      Kак это изменить?

      Dashboard тип выбран "Plain text".

      Zabbix версия 5.0

      Comment

      • drylio
        Junior Member
        • Oct 2019
        • 6

        #4
        В общем, проблему я нашел сам. Dashboard cнимите флажок с "Show text as HTML"

        Comment

        • drylio
          Junior Member
          • Oct 2019
          • 6

          #5
          Не знаю, стоит ли создавать отдельную тему, но спрошу здесь. Остался один вопрос, но я не очень дружу с java.
          Если мой select по условию не находит никаких записей, zabbix Items все равно возвращаeт новую запись, но возвращается только время, а значение как принадлежит пустое.
          Как настроить Items, чтобы при select значении null он вообще ничего не добавлял в zabbix?

          Comment

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

            #6
            А при чём тут Java? :-(

            Шаг препроцесинга (пример которого на JavaScript-е я приводил) вам преобразует ResultSet в одно текстовое значение. Возможно, многострочное, возможно - пустое (т.е. пустая строка).
            Если вам пустые строки надо вообще игнорировать - добавьте второй шаг препроцессинга: например, валидацию с использованием регулярного выражения ".+" - и если значение ему не соответствует, то уничтожать.

            Comment

            Working...