Opennms - хранилище (ресурсы хоста snmp mib-2) дает неверные значения

Я использую OpenNMS Horizon для мониторинга нескольких узлов. Для данного узла выполняется мониторинг «Хранилища (ресурсы хоста SNMP MIB-2)», который сообщает о дисковом пространстве (% использования). В то время как для локальных дисков узла я получаю правильные значения. Для дисков файловой системы SAN приходят неправильные значения (в том числе отрицательные). Однако для нескольких томов SAN он дает правильные значения. Каковы возможные причины этой ошибки?

1
0
433
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Данные поступают из конфигурации сбора данных MIB-II по умолчанию, определенной в ${OPENNMS_HOME}/etc/datacollection/mib2.xml.

<resourceType name="hrStorageIndex" label="Storage (SNMP MIB-2 Host Resources)" resourceLabel="${hrStorageDescr}">
  <persistenceSelectorStrategy class="org.opennms.netmgt.collection.support.PersistAllSelectorStrategy"/>
  <storageStrategy class="org.opennms.netmgt.dao.support.SiblingColumnStorageStrategy">
    <parameter key="sibling-column-name" value="hrStorageDescr"/>
    <parameter key="replace-first" value="s/^-$/_root_fs/"/>
    <parameter key="replace-all" value="s/^-//"/>
    <parameter key="replace-all" value="s/\s//"/>
    <parameter key="replace-all" value="s/:\\.*//"/>
  </storageStrategy>
</resourceType>

Определение типа ресурса сообщает сборщику SNMP, как работать с несколькими экземплярами дисков.

Следующая часть сообщает сборщику SNMP, какие OID запрашиваются и сохраняются в системе для каждого выбранного экземпляра диска:

<group name="mib2-host-resources-storage" ifType="all">
  <mibObj oid=".1.3.6.1.2.1.25.2.3.1.2" instance="hrStorageIndex" alias="hrStorageType" type="string"/>
  <mibObj oid=".1.3.6.1.2.1.25.2.3.1.3" instance="hrStorageIndex" alias="hrStorageDescr" type="string"/>
  <mibObj oid=".1.3.6.1.2.1.25.2.3.1.4" instance="hrStorageIndex" alias="hrStorageAllocUnits" type="gauge"/>
  <mibObj oid=".1.3.6.1.2.1.25.2.3.1.5" instance="hrStorageIndex" alias="hrStorageSize" type="gauge"/>
  <mibObj oid=".1.3.6.1.2.1.25.2.3.1.6" instance="hrStorageIndex" alias="hrStorageUsed" type="gauge"/>
</group>

Первое, что я хотел бы исследовать, - это значения, которые вы получаете от агента SNMP устройства с помощью инструмента командной строки snmpwalk по указанным выше идентификаторам OID.

Полученные значения по умолчанию сохраняются в RRDTool, а расчет для получения процента выполняется в шаблоне графика RRD, который вы можете найти в ${OPENNMS_HOME}/etc/snmp-graph.properties.d/mib2-graph.properties.

Полное определение шаблона RRD выглядит так:

report.mib2.storage.usage.name=Storage Utilization (MIB-2 Host Resources)
report.mib2.storage.usage.columns=hrStorageSize, hrStorageUsed, hrStorageAllocUnits
report.mib2.storage.usage.propertiesValues=hrStorageDescr
report.mib2.storage.usage.type=hrStorageIndex
report.mib2.storage.usage.command=--title="Storage Utilization on {hrStorageDescr}" \
 --vertical-label="Percentage (%)" \
 --base=1024 \
 --lower-limit 0 \
 --upper-limit 105 \
 DEF:total={rrd1}:hrStorageSize:AVERAGE \
 DEF:used={rrd2}:hrStorageUsed:AVERAGE \
 DEF:units={rrd3}:hrStorageAllocUnits:AVERAGE \
 CDEF:totalBytes=total,units,* \
 CDEF:usedBytes=used,units,* \
 CDEF:usedPart=usedBytes,totalBytes,/ \
 CDEF:dpercent=usedPart,100,* \
 CDEF:dpercent10=0,dpercent,GT,0,dpercent,IF \
 CDEF:dpercent20=10,dpercent,GT,0,dpercent,IF \
 CDEF:dpercent30=20,dpercent,GT,0,dpercent,IF \
 CDEF:dpercent40=30,dpercent,GT,0,dpercent,IF \
 CDEF:dpercent50=40,dpercent,GT,0,dpercent,IF \
 CDEF:dpercent60=50,dpercent,GT,0,dpercent,IF \
 CDEF:dpercent70=60,dpercent,GT,0,dpercent,IF \
 CDEF:dpercent80=70,dpercent,GT,0,dpercent,IF \
 CDEF:dpercent90=80,dpercent,GT,0,dpercent,IF \
 CDEF:dpercent100=90,dpercent,GT,0,dpercent,IF \
 COMMENT:"Storage used in (%)\\n" \
 AREA:dpercent10#5ca53f:"0-10% " \
 AREA:dpercent20#75b731:"11-20%" \
 AREA:dpercent30#90c22f:"21-30%" \
 AREA:dpercent40#b8d029:"31-40%" \
 AREA:dpercent50#e4e11e:"41-50%" \
 COMMENT:"\\n" \
 AREA:dpercent60#fee610:"51-60%" \
 AREA:dpercent70#f4bd1b:"61-70%" \
 AREA:dpercent80#eaa322:"71-80%" \
 AREA:dpercent90#de6822:"81-90%" \
 AREA:dpercent100#d94c20:"91-100%\\n" \
 COMMENT:"\\n" \
 HRULE:100#d94c20 \
 COMMENT:"\\n" \
 LINE1:dpercent#46683b:"Storage used in (%)" \
 GPRINT:dpercent:AVERAGE:"Avg\\: %7.2lf%s" \
 GPRINT:dpercent:MIN:"Min\\: %7.2lf%s" \
 GPRINT:dpercent:MAX:"Max\\: %7.2lf%s\\n" \
 COMMENT:"\\n" \
 COMMENT:"Used Bytes\\: \\n" \
 GPRINT:usedBytes:AVERAGE:"Avg\\: %7.2lf%s" \
 GPRINT:usedBytes:MIN:"Min\\: %7.2lf%s" \
 GPRINT:usedBytes:MAX:"Max\\: %7.2lf%s\\n" \
 COMMENT:"\\n" \
 GPRINT:totalBytes:AVERAGE:"Total Bytes\\: %7.2lf%s"

Самая важная часть для получения процента - это расчет, сделанный здесь:

DEF:total={rrd1}:hrStorageSize:AVERAGE \
DEF:used={rrd2}:hrStorageUsed:AVERAGE \
DEF:units={rrd3}:hrStorageAllocUnits:AVERAGE \
CDEF:totalBytes=total,units,* \
CDEF:usedBytes=used,units,* \
CDEF:usedPart=usedBytes,totalBytes,/ \
CDEF:dpercent=usedPart,100,* \

Он использует обратная полировка, специфичный для RRDTool, для вычисления использования в процентах от «использованных байтов» и «общего количества байтов». Как видите, используемые и общие байты должны быть рассчитаны на основе размера единицы агента SNMP в байтах и ​​того, сколько единиц всего имеется и используется на диске.

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

Надеюсь, это поможет решить вашу проблему.

Другие вопросы по теме