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

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