Ad Widget

Collapse

Обработка пустых ответов

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • nuserame
    Junior Member
    • Feb 2022
    • 18

    #1

    Обработка пустых ответов

    Доброго дня

    Периодически сталкиваюсь с элементами данных, которые возвращают пустой ответ в нормальном состоянии и что-то другое при необходимости реагирования
    Но так и не нашёл способа корректно это отрабатывать на стороне заббикса - он в таком случае переводит элемент в Not supported с ошибкой Server returned empty content

    Подскажите, пожалуйста, можно ли что-то с делать в таких случая? Может какой-то предобработкой, кроме javascript (не хочется нагружать заббикс лишний раз скриптами)?
  • Answer selected by nuserame at 02-02-2025, 12:48.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    Так судя по вашему скриншоту, это не элемент данных возвращает пустое значение, а HTTP агент в ответ на GET-запрос к серверу nginx получает пустой ответ.
    В нормальной ситуации (при соответствующих настройках веб-сервера) должна возвращаться страничка со статистикой, которая далее с помощью шагов предобратки разбирается на отдельные составляющие (как это описано, например, здесь).
    Но веб-сервер должен отвечать, он не должен возвращать "empty content", т.к. HTTP агент интерпретирует такое поведение как неудачную попытку получить данные и возвращает ошибку (unsupported state). Если же, тем не менее, такое поведение в вашей конкретной ситуации считается допустимым и может игнорироваться, то можно добавить к элементу данных шаг предобработки "Проверка на неподдерживаемое значение" и реакцию на него - например, отбросить полученное (фактически - неполученное) значение.

    Comment

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

      #2
      Вариант 1: укажите для элемента данных верный тип данных. Если возвращается текст, то в качестве типа данных выберите "Символ" или "Текст", для них пустое значение вполне приемлемо. В триггере сравнивать длину полученного значения с нулём (если больше нуля, то срабатывать).
      Вариант 2: если возвращать нужно именно число, то добавить шаг предобработки таким образом, как описано в этом примере (ссылка).

      Comment

      • nuserame
        Junior Member
        • Feb 2022
        • 18

        #3
        Originally posted by Kos
        Вариант 1: укажите для элемента данных верный тип данных. Если возвращается текст, то в качестве типа данных выберите "Символ" или "Текст", для них пустое значение вполне приемлемо. В триггере сравнивать длину полученного значения с нулём (если больше нуля, то срабатывать).
        Вариант 2: если возвращать нужно именно число, то добавить шаг предобработки таким образом, как описано в этом примере (ссылка).
        Пробовал и Char и Text, ошибка сохраняется
        Click image for larger version

Name:	image.png
Views:	73
Size:	14.7 KB
ID:	498189
        Click image for larger version

Name:	image.png
Views:	77
Size:	8.7 KB
ID:	498190​​
        Attached Files

        Comment

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

          #4
          Так судя по вашему скриншоту, это не элемент данных возвращает пустое значение, а HTTP агент в ответ на GET-запрос к серверу nginx получает пустой ответ.
          В нормальной ситуации (при соответствующих настройках веб-сервера) должна возвращаться страничка со статистикой, которая далее с помощью шагов предобратки разбирается на отдельные составляющие (как это описано, например, здесь).
          Но веб-сервер должен отвечать, он не должен возвращать "empty content", т.к. HTTP агент интерпретирует такое поведение как неудачную попытку получить данные и возвращает ошибку (unsupported state). Если же, тем не менее, такое поведение в вашей конкретной ситуации считается допустимым и может игнорироваться, то можно добавить к элементу данных шаг предобработки "Проверка на неподдерживаемое значение" и реакцию на него - например, отбросить полученное (фактически - неполученное) значение.

          Comment

          Working...