Каков лучший способ для программы Java к здоровью системы контроля? [закрытый]

Расположение упаковки и байт, как описано в C FAQ здесь :

Это для выравнивания. Многие процессоры не могут получить доступ к 2- и 4-байтным количествам (например, ints и long ints), если они переполнены каждым способом.

Предположим, что у вас есть эта структура:

struct {
    char a[3];
    short int b;
    long int c;
    char d[3];
};

Теперь вы можете подумать, что это возможно, чтобы упаковать эту структуру в память следующим образом:

+-------+-------+-------+-------+
|           a           |   b   |
+-------+-------+-------+-------+
|   b   |           c           |
+-------+-------+-------+-------+
|   c   |           d           |
+-------+-------+-------+-------+

Но на процессоре намного проще, если компилятор упорядочивает его как это:

+-------+-------+-------+
|           a           |
+-------+-------+-------+
|       b       |
+-------+-------+-------+-------+
|               c               |
+-------+-------+-------+-------+
|           d           |
+-------+-------+-------+

В упакованной версии обратите внимание на то, что вам и мне, как минимум, немного сложно понять, как обтекают поля b и c? В двух словах, это тоже сложно для процессора. Поэтому большинство компиляторов будут заполнять структуру (как будто с дополнительными невидимыми полями) следующим образом:

+-------+-------+-------+-------+
|           a           | pad1  |
+-------+-------+-------+-------+
|       b       |     pad2      |
+-------+-------+-------+-------+
|               c               |
+-------+-------+-------+-------+
|           d           | pad3  |
+-------+-------+-------+-------+
blockquote>

9
задан Bob Cross 22 September 2008 в 19:40
поделиться

5 ответов

Существуют МИБ, поддерживаемые и Windows и Linux, которые выставляют параметры, которые Вы ищете через SNMP. Кроме того, большинству крупных поставщиков опубликовали специальных МИБ для их серверного оборудования.

Я реализовал МИБ SNMP и контролирующий для JAVA-приложений с помощью коммерческого iReasoning SNMP API, и они работали отлично. Существует также открытый исходный код SNMP4J, с которым у меня лично нет опыта, но выглядит довольно хорошим.

Так, для Ваших потребностей Вы включили бы публикацию информации о SNMP для хостов, которые Вы хотите контролировать. Никакое необходимое кодирование. Это - просто проблема конфигурации.

Для температуры ЦП, например, необходимо включить LM-SENSORS-MIB MIB. В соответствии с Linux можно использовать snmpwalk клиент для взгляда на OID.1.3.6.1.4.1.2021.13.16.2.1.3 для наблюдения температуры ЦП. После того как у Вас есть это, и Вы знаете, что это публикует данные правильно, можно начать реализовывать реальное решение по контролю.

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

4
ответ дан 4 December 2019 в 14:32
поделиться

Самой близкой вещью, которую Вы найдете, является библиотека Hyperic Sigar:

http://www.hyperic.com/products/sigar.html

Это не переходит к температурам AFAIK, но действительно показывает Вам много собственной статистики как ЦП, память, диск ввод-вывод, сеть I/O, и т.д. Это портировано большинству людей архитектуры, развертывают Java на сегодня. Лицензия является GPL, хотя я думаю, что можно купить коммерческие лицензии также.

Мы используем Sigar с Терракотой для кластерного контроля и были очень довольны им.

6
ответ дан 4 December 2019 в 14:32
поделиться

Я полагаю, что большая часть этого вида вещи обычно делается по SNMP (для профессиональной системы), обычный способ сделать этот вид информации доступным основанным на стандартах способом. JMX также доступен по SNMP. Вопрос затем становится, которые являются лучшими библиотеками SNMP для Java (и Ваша система поддерживает его)?

5
ответ дан 4 December 2019 в 14:32
поделиться

Несколько месяцев назад я искал такую библиотеку, и я ничто не нашел интересным. Не невозможно создать один, таким образом, я рекомендовал бы делать так. Необходимо будет, вероятно, получить доступ к собственным библиотекам, чтобы сделать то использование JNA (это легче, чем JNI). Запустите путем добавления поддержки нескольких вещей на одной платформе, затем начните добавлять поддержку других функций и платформ.

Доля это с нами! Люди будут начинать использовать его, возможно, даже помогать с разработкой, и скоро у Вас будет полнофункциональная библиотека системного мониторинга для Java.

0
ответ дан 4 December 2019 в 14:32
поделиться

JMX + JNI = YourSolution

-1
ответ дан 4 December 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: