IPMI: как найти пороговые значения с помощью ipmimonitoring-sensor.c
Я пишу API для сообщения информации об оборудовании IPMI, запрашиваемой Socket Daemon, Socket Daemon размещается на клиенте, а удаленный сервер отправит команду для запроса состояния оборудования хоста.
Я успешно написал API, API использует библиотеку FreeIPMI, чтобы получить температуру процессора и M/B. После погружения в исходный код ipmi-сенсоров я обнаружил, что очень трудно пропустить вывод на стандартный вывод. Чтобы получить стандартный вывод, я использую dup(STDOUT_FILENO)
и перенаправить на канал, очистить канал, разобрать содержимое строки, извлечь нужную мне информацию.
Сейчас все в порядке, но я столкнулся с другой проблемой, мне нужно скомпилировать FreeIPMI как статическую библиотеку.
Я нашел ссылку КАК создавать команды freeipmi со статическими библиотеками вместо разделяемых библиотек, и сопровождающий FreeIPMI Albert Chu сказал, что
./configure CFLAGS="-static"
Построить статические библиотеки успешно, но не в состоянии собрать ipmi-сенсоры, есть много ошибок компилятора. Так расстроен.
После этого я нахожу другой файл в папке проекта FreeIPMI ipmimonitoring-sensors.c, скомпилируйте с помощью команды
gcc -o ipmimonitoring-sensors ipmimonitoring-sensors.c -lipmimonitoring
Да, это работает.
sudo ./ipmimonitoring-sensors
Record ID, Sensor Name, Sensor Number, Sensor Type, Sensor State, Sensor Reading, Sensor Units, Sensor Event/Reading Type Code, Sensor Event Bitmask, Sensor Event String
3, CPU0_TEMP, 33, Temperature, Nominal, 46.00, C, 1h, C0h, 'OK'
12, DIMM_P0_B0, 4, Temperature, Nominal, 39.00, C, 1h, C0h, 'OK'
13, DIMM_P0_B1, 5, Temperature, Nominal, 40.00, C, 1h, C0h, 'OK'
59, P12V, 64, Voltage, Nominal, 12.06, V, 1h, C0h, 'OK'
60, P5V, 65, Voltage, Nominal, 4.99, V, 1h, C0h, 'OK'
61, P3V3, 66, Voltage, Nominal, 3.27, V, 1h, C0h, 'OK'
62, P5V_STBY, 67, Voltage, Nominal, 4.99, V, 1h, C0h, 'OK'
64, P_VBAT, 69, Voltage, Nominal, 3.22, V, 1h, C0h, 'OK'
65, P_VCCIN_P0, 70, Voltage, Nominal, 1.80, V, 1h, C0h, 'OK'
67, P_1V2_BXD, 72, Voltage, Nominal, 1.23, V, 1h, C0h, 'OK'
71, P_1V05_BXD, 76, Voltage, Nominal, 1.06, V, 1h, C0h, 'OK'
72, P_1V5_BXD, 77, Voltage, Nominal, 1.53, V, 1h, C0h, 'OK'
73, P_VCCSCFUSESUS, 78, Voltage, Nominal, 1.72, V, 1h, C0h, 'OK'
74, P_VCCKRHV_BXD, 79, Voltage, Nominal, 1.32, V, 1h, C0h, 'OK'
136, CPU0_FAN, 96, Fan, Nominal, 2700.00, RPM, 1h, C0h, 'OK'
185, CPU0, 156, Processor, Nominal, N/A, N/A, 6Fh, 80h, 'Processor Presence detected'
202, MB_TEMP1, 51, Temperature, Nominal, 50.00, C, 1h, C0h, 'OK'
205, SEL, 152, Event Logging Disabled, Nominal, N/A, N/A, 6Fh, 0h, 'OK'
Но как я могу получить пороговые значения как ipmi-sensors -v
Знаю, что сообщу Nominal
, Warning
а также Critical
, Но я хотел бы сообщить Low
, High
не только OK
событие.
Entity Instance Type: Physical Entity
Event/Reading Type Code: 1h
Lower Critical Threshold: 0.000000 C
Upper Critical Threshold: 60.000000 C
Lower Non-Critical Threshold: 5.000000 C
Upper Non-Critical Threshold: 55.000000 C
Lower Non-Recoverable Threshold: N/A
Upper Non-Recoverable Threshold: N/A
Sensor Min. Reading: -128.000000 C
Sensor Max. Reading: 127.000000 C
Normal Min.: 0.000000 C
Normal Max.: 54.000000 C
Nominal Reading: 35.000000 C
Sensor Reading: 50.000000 C
Sensor Event: 'OK'
Заранее спасибо.
1 ответ
Сопровождающий FreeIPMI здесь. Боюсь, информация о пороге не доступна в библиотеке ipmimonitoring. Основной целью библиотеки было абстрагирование этой информации от пользователя.
Информация о пороговом значении для каждого датчика может быть получена путем получения информации из SDR, для которой вы можете использовать библиотеку SDR libfreeipmi. Мониторинг Ipmi предоставляет вам идентификатор записи SDR, связанный с каждым считыванием датчика, так что вы можете сопоставить датчик с правильным идентификатором записи SDR.