Не удается получить информацию о нагрузке на процессор

Добрый день! Подскажите, пожалуйста, у меня почему-то в версии ES 6.4.3 не корректно отображается информация о текущей нагрузке на CPU, а именно на всех нода данный параметр равен -1.

"os": {
    "timestamp": 1541654835364,
    "cpu": {
      "percent": -1
    },
    "mem": {
      "total_in_bytes": 68665397248,
      "free_in_bytes": 21675515904,
      "used_in_bytes": 46989881344,
      "free_percent": 32,
      "used_percent": 68
    },
    "swap": {
      "total_in_bytes": 78865944576,
      "free_in_bytes": 38975254528,
      "used_in_bytes": 39890690048
    }
  }

Я вижу в документации описание:

Recent CPU usage for the whole system, or -1 if not supported

Просто интересно, на что опирается данная метрика, что она стала недоступна. ОС Windows. Есть какие-нибудь предположения?

Для получения нагрузки на процессор используются JMX MBeans, а именно OperatingSystemMXBean.html#getSystemLoadAverage(), который добавили как JDK-6336608 - и с тех пор, насколько я могу судить никаких изменений не было.

И в случае windows вы получите отрицательное число.

Владимир, я не понял, почему в случае с windows я должен получить отрицательное число?
У меня сейчас есть работающий кластер на версии 5.6.4 на виндовых серверах, там результат присутствует. На локальной машине с windows результат есть.

Правильно ли я вас понимаю - что у вас есть результат через тот же самый ES API ?

И какие версии java используются при этом.

Да, на другом кластере результат есть. Речь идет о использовании _nodes/stats/os.
Версия Java: jre-8u191.

К тому же, сейчас заметил, что JVM heap size тоже не обновляется на 2х из 4 нод.

Интересно было бы проверить, что говорят соответсвующие jvm, если вызвать у них соответствующий метод по jmx т.к. ES в этом отношении ничего сверх этого не делает.

Если полная переустановка Java не поможет, попытаюсь посмотреть.

Владимир, переустановка Java не дала результатов. Я не являюсь Java разработчиком, возможно вы знаете какие-нибудь стандартные утилиты которыми можно получить показания этих счетчиков?

Попробуйте подключится к данным JVM используя либо JVisualVM (входит в стандартную поставку JDK 8 и более новые версии) либо jconsole

JVisualVM удобней, при помощи него можно достучаться до данных JMX MBean-ов.

Судя по мониторингам, все работает прекрасно

2018-11-08_13-37-57

Вообщем история была такая, я пытаюсь перевести на новую версию ES. У меня было 2 машины, там стояли версии 6.4.2 с которыми я проводил тесты, все работало хорошо. Данные о jvm и os я получал. Затем, я решил заменить ssd диски на nvme и обновил версию до 6.4.3. С тех пор эти метрики не работают. Я пробовал даунгрейд до 6.4.2, переустанавливал java - результатов ноль. И все бы ничего, но мы их используем для балансировщика :frowning:

Судя по MBeans значения SystemCpuLoad не определяются. Значит дело в Java.

Увы от версии ES здесь мало что зависит - то, что есть в jvm - то мы и можем предоставить - нужно либо копать в сторону реализации функциональности в новых версиях java, либо unix-подобная система.

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

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.