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


#1

Добрый день! Подскажите, пожалуйста, у меня почему-то в версии 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. Есть какие-нибудь предположения?


(Vladimir Dolzhenko) #2

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

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


#3

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


(Vladimir Dolzhenko) #4

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

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


#5

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

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


(Vladimir Dolzhenko) #6

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


#7

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


#8

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


(Vladimir Dolzhenko) #9

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

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


#10

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

2018-11-08_13-37-57

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


#11

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


(Vladimir Dolzhenko) #12

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


#13

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


(system) #14

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