Отправка OID в заголовке SNMP Trap
У меня есть Java-приложение, которое отправляет SNMP-ловушки с использованием SNMP4J. Проблема в том, что OID отправляется в теле ловушки. Все данные, которые я устанавливаю, успешно отправлены, но в теле ловушки. Я хочу, чтобы Oid отправлялся в заголовке ловушки.
Как я могу отправить Oid в заголовке Trap?
UdpAddress managerUdpAddress = new UdpAddress("address");
CommunityTarget ctarget = new CommunityTarget();
ctarget.setAddress(managerUdpAddress);
ctarget.setRetries(retryCount);
ctarget.setCommunity(new OctetString(community));
ctarget.setTimeout(timeout);
ctarget.setVersion(SnmpConstants.version2c);
PDU trap = new PDU();
OID oid = new OID(myOid);
trap.add(new VariableBinding(SnmpConstants.snmpTrapOID, oid));
trap.add(new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(5000)));
trap.add(new VariableBinding(SnmpConstants.sysDescr, new OctetString(
"System Description")));
trap.add(new VariableBinding(oid, new OctetString(message)));
DefaultUdpTransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
snmp.notify(trap, ctarget);
Когда ИБП отправляет ловушку SNMP, OID отображается в заголовке ловушки SNMP. Вот примеры:
Ловушка от UPS:
Пн Мар 18 04:13:18 2019 .
1.3.6.1.4.1.935.0.49
Нормальный "SNMP EVENT" xxxx - UPS_212_bypass_ac_normal SNMP TRAP: байпас переменного тока нормальный
Ловушка от JAVA:
Пн мар 18 05:25:36 2019
.0.00
Критическое "SNMP EVENT" xxxx - ошибки моего приложения в snmp: Описание системы Общая ошибка. Размер =2"
2 ответа
Я сделал это, добавив этот код:
trap.setType(PDU.TRAP);
trap.add(new VariableBinding(oid));
Теперь ловушка SNMP, отправленная с Java, выглядит следующим образом:
Чт 21 марта 15:16:51 2019 .1.3.6.1.6.3.1.1.7.1.6 Критическое "событие SNMP" xxxx - ошибки моего приложения в snmp: Описание системы Общая ошибка. Размер =2"
Формат SNMP TRAP имеет фиксированную структуру, определенную в RFC 1157 или RFC 3412 (в случае SNMPv3). Эта структура состоит из заголовка и PDU (блока данных пакета). PDU - это набор так называемых привязок переменных. Каждая привязка имеет OID, синтаксис и значение. Таким образом, вы можете изменить только часть PDU. Структура заголовка не может быть изменена.