Друзья!
Пожалуйста, укажите путь истинный, как мне справиться с такой ситуацией. Возможно уже есть подобное решение или недокументированная возможность? Я пререлистал кучу станиц этого форума, но ничего похожего не нашел.
Суть: Имеется сервер виртуальных машин VMware ESX Server 3.5.0. Настраиваю мониторинг некоторых его параметров через SNMP. Внутри него есть куча VM, id которых доступны по таким OID-ам (VMWARE-VMINFO-MIB):
vmVMID.0 (1.3.6.1.4.1.6876.2.1.1.7.0) значение равно 1088
vmVMID.1 (1.3.6.1.4.1.6876.2.1.1.7.1) значение равно 1154
vmVMID.2 (1.3.6.1.4.1.6876.2.1.1.7.2) значение равно 1227
vmVMID.3 (1.3.6.1.4.1.6876.2.1.1.7.3) значение равно 1291
vmVMID.4 (1.3.6.1.4.1.6876.2.1.1.7.4) значение равно 1404
...
vmVMID.21 (1.3.6.1.4.1.6876.2.1.1.7.21) значение равно 1732
Далее эти id (только для запущенных VM, например для 1088, 1227 и 1732) используются в следующих IOD-ах как индексы для параметров загрузки проца и памяти:
cpuUtil.1088 (1.3.6.1.4.1.6876.3.1.2.1.3.1088),
cpuUtil.1227 (1.3.6.1.4.1.6876.3.1.2.1.3.1227),
cpuUtil.1732 (1.3.6.1.4.1.6876.3.1.2.1.3.1732);
memUtil.1088 (1.3.6.1.4.1.6876.3.2.4.1.4.1088),
memUtil.1227 (1.3.6.1.4.1.6876.3.2.4.1.4.1227),
memUtil.1732 (1.3.6.1.4.1.6876.3.2.4.1.4.1732).
Проблема: Если максимальное число виртуальных машин на сервере я еще могу спрогнозировать, например не более 50, то вот значения id, которые сервер присваивает этим VM спрогнозировать (точнее описать в OID-ах) крайне проблематично. Поэтому, я добавил в темплейт элементы vmVMID.0, vmVMID.1, ..., vmVMID.49 (тип данных Character) и макросы такого содержания (чтобы ими "выловить" значения id машин):
MACRO VALUE
----------------
{$VM00_ID} {{HOSTNAME}:vmVMID.0.last(0)}
{$VM01_ID} {{HOSTNAME}:vmVMID.1.last(0)}
{$VM02_ID} {{HOSTNAME}:vmVMID.2.last(0)}
...
{$VM49_ID} {{HOSTNAME}:vmVMID.49.last(0)}
Так вот когда я начинаю по SNMP получать значения параметра например, memUtil.0, OID которого я прописал как "1.3.6.1.4.1.6876.3.2.4.1.4.{$VM00_ID}", то вместо ожидаемого "1.3.6.1.4.1.6876.3.2.4.1.4.1088" получаю "1.3.6.1.4.1.6876.3.2.4.1.4.{{HOSTNAME}:vmVMID.0.l ast(0)}", который тут же становится Unsupported и на этом дальнейший рассчет прекращается.
Ниже прилагается соответствующий лог:
Как мне правильно применять макросы в snmp oid-ах для такого случая? Значение "vmVMID.0" возвращается нормально. Пробовал значения макроса {$VM00_ID} писать как:
vmVMID.0.last(0)
{vmVMID.0.last(0)}
{{HOSTNAME}:vmVMID.0.last(0)}
результат аналогичный.
Прошу помощи зала, так сказать
Пожалуйста, укажите путь истинный, как мне справиться с такой ситуацией. Возможно уже есть подобное решение или недокументированная возможность? Я пререлистал кучу станиц этого форума, но ничего похожего не нашел.
Суть: Имеется сервер виртуальных машин VMware ESX Server 3.5.0. Настраиваю мониторинг некоторых его параметров через SNMP. Внутри него есть куча VM, id которых доступны по таким OID-ам (VMWARE-VMINFO-MIB):
vmVMID.0 (1.3.6.1.4.1.6876.2.1.1.7.0) значение равно 1088
vmVMID.1 (1.3.6.1.4.1.6876.2.1.1.7.1) значение равно 1154
vmVMID.2 (1.3.6.1.4.1.6876.2.1.1.7.2) значение равно 1227
vmVMID.3 (1.3.6.1.4.1.6876.2.1.1.7.3) значение равно 1291
vmVMID.4 (1.3.6.1.4.1.6876.2.1.1.7.4) значение равно 1404
...
vmVMID.21 (1.3.6.1.4.1.6876.2.1.1.7.21) значение равно 1732
Далее эти id (только для запущенных VM, например для 1088, 1227 и 1732) используются в следующих IOD-ах как индексы для параметров загрузки проца и памяти:
cpuUtil.1088 (1.3.6.1.4.1.6876.3.1.2.1.3.1088),
cpuUtil.1227 (1.3.6.1.4.1.6876.3.1.2.1.3.1227),
cpuUtil.1732 (1.3.6.1.4.1.6876.3.1.2.1.3.1732);
memUtil.1088 (1.3.6.1.4.1.6876.3.2.4.1.4.1088),
memUtil.1227 (1.3.6.1.4.1.6876.3.2.4.1.4.1227),
memUtil.1732 (1.3.6.1.4.1.6876.3.2.4.1.4.1732).
Проблема: Если максимальное число виртуальных машин на сервере я еще могу спрогнозировать, например не более 50, то вот значения id, которые сервер присваивает этим VM спрогнозировать (точнее описать в OID-ах) крайне проблематично. Поэтому, я добавил в темплейт элементы vmVMID.0, vmVMID.1, ..., vmVMID.49 (тип данных Character) и макросы такого содержания (чтобы ими "выловить" значения id машин):
MACRO VALUE
----------------
{$VM00_ID} {{HOSTNAME}:vmVMID.0.last(0)}
{$VM01_ID} {{HOSTNAME}:vmVMID.1.last(0)}
{$VM02_ID} {{HOSTNAME}:vmVMID.2.last(0)}
...
{$VM49_ID} {{HOSTNAME}:vmVMID.49.last(0)}
Так вот когда я начинаю по SNMP получать значения параметра например, memUtil.0, OID которого я прописал как "1.3.6.1.4.1.6876.3.2.4.1.4.{$VM00_ID}", то вместо ожидаемого "1.3.6.1.4.1.6876.3.2.4.1.4.1088" получаю "1.3.6.1.4.1.6876.3.2.4.1.4.{{HOSTNAME}:vmVMID.0.l ast(0)}", который тут же становится Unsupported и на этом дальнейший рассчет прекращается.
Ниже прилагается соответствующий лог:
Code:
22307:20110803:123228.345 In substitute_simple_macros() data:'memUtil.0'
22307:20110803:123228.346 In substitute_simple_macros() data:'public'
22307:20110803:123228.346 In substitute_simple_macros() data:'1.3.6.1.4.1.6876.3.2.4.1.4.{$VM00_ID}'
22307:20110803:123228.346 In zbxmacros_get_value() macro:'{$VM00_ID}'
22307:20110803:123228.346 In zbxmacros_get_value_hosts() macro:'{$VM00_ID}'
22307:20110803:123228.346 zbxmacros_get_value_hosts() hostid:10244
22307:20110803:123228.346 Query [txnlev:0] [select macro,value from hostmacro where hostid=10244]
22307:20110803:123228.347 Query [txnlev:0] [select templateid from hosts_templates where hostid=10244]
22307:20110803:123228.348 In zbxmacros_get_value_hosts() macro:'{$VM00_ID}'
22307:20110803:123228.348 zbxmacros_get_value_hosts() hostid:10243
22307:20110803:123228.348 Query [txnlev:0] [select macro,value from hostmacro where hostid=10243]
22307:20110803:123228.350 Query [txnlev:0] [select templateid from hosts_templates where hostid=10243]
22307:20110803:123228.351 zbxmacros_get_value_hosts() replace_to:'{{HOSTNAME}:vmVMID.0.last(0)}'
22307:20110803:123228.351 End of zbxmacros_get_value_hosts():SUCCEED
22309:20110803:123228.351 In get_values()
22309:20110803:123228.351 In DCinit_nextchecks()
22309:20110803:123228.351 In DCconfig_get_poller_items() poller_type:0
22309:20110803:123228.351 End of DCconfig_get_poller_items():0
22309:20110803:123228.351 In DCflush_nextchecks()
22309:20110803:123228.351 End of get_values()
22309:20110803:123228.352 poller #15 spent 0.000676 seconds while updating 0 values
22309:20110803:123228.352 In DCconfig_get_poller_nextcheck() poller_type:0
22309:20110803:123228.352 End of DCconfig_get_poller_nextcheck():1312363949
22309:20110803:123228.352 sleeping for 1 seconds
22307:20110803:123228.352 End of zbxmacros_get_value_hosts():SUCCEED
22307:20110803:123228.352 End of zbxmacros_get_value()
22307:20110803:123228.352 End substitute_simple_macros() data:'1.3.6.1.4.1.6876.3.2.4.1.4.{{HOSTNAME}:vmVMID.0.last(0)}'
22307:20110803:123228.352 In get_value() key:'memUtil.0'
22307:20110803:123228.353 In get_value_snmp() key:'memUtil.0' oid:'1.3.6.1.4.1.6876.3.2.4.1.4.{{HOSTNAME}:vmVMID.0.last(0)}'
22307:20110803:123228.353 In snmp_open_session()
22307:20110803:123228.353 SNMP [[email protected]:161]
22307:20110803:123228.353 End of snmp_open_session()
22307:20110803:123228.353 Standard processing
22307:20110803:123228.353 In snmp_normalize(oid:1.3.6.1.4.1.6876.3.2.4.1.4.{{HOSTNAME}:vmVMID.0.last(0)})
22307:20110803:123228.353 End of snmp_normalize():1.3.6.1.4.1.6876.3.2.4.1.4.{{HOSTNAME}:vmVMID.0.last(0)}
22307:20110803:123228.354 In get_snmp(oid:1.3.6.1.4.1.6876.3.2.4.1.4.{{HOSTNAME}:vmVMID.0.last(0)})
No log handling enabled - turning on stderr logging
snmp_build: unknown failure 22307:20110803:123228.354 Status send [1]
22307:20110803:123228.354 End of get_snmp():NOTSUPPORTED
22307:20110803:123228.354 In snmp_close_session()
22307:20110803:123228.354 End of snmp_close_session()
22307:20110803:123228.354 End of get_value_snmp():NOTSUPPORTED
vmVMID.0.last(0)
{vmVMID.0.last(0)}
{{HOSTNAME}:vmVMID.0.last(0)}
результат аналогичный.
Прошу помощи зала, так сказать

Comment