Creating API plugin for application without any system OIDs available

I am configuring this API plug-in for an application from a third party vendor, and it has a given set of application specific OIDs available when i do snmpwalk on the host. The problem i have atm is that it does not give any respons on system OIDs.
I have added and tested the rules:

  • Hosts without system description OID
  • Disable bulk walks on SNMPv2c/v3
  • Bulk walk: Number of OIDs per bulk
  • Enable SNMPv2c and bulk walk for hosts
  • Enable SNMPv2c and bulk walk for management

And none of the rules make a change to the fact that i only get system OID errors.

If i try to snmpwalk directly to any of the system OIDs, this is the results…

Some of the errors:


Error in packet.
Reason: (genError) A general failure occured
Failed object: SNMPv2-SMI::mib-2


SNMPv2-SMI::mib-2 = No Such Object available on this agent at this OID


NMPv2-MIB::sysObjectID.0 = No Such Object available on this agent at this OID


Error in packet.
Reason: (genError) A general failure occured
Failed object: DISMAN-EVENT-MIB::sysUpTimeInstance

DISMAN-EVENT-MIB::sysUpTimeInstance = No Such Object available on this agent at this OID


It seems like the agent does not have access to any system OIDs, so my question is; is it possible to ‘bypass’ the default system OID request, in the API plug-in, and make checkMK go straight to the application snmp-packets.
Other relevant information:

  • The host is using v3 for application packets
  • The username, priv and auth are correct (as i can snmpwalk and get results from the application)
  • The firewall is down (tripple checked).

All help, tips or guidance is appreciated. This is unfortunatly an application with stright confidentiality, so i am not allowed to share any application specific data, but will provide as much as possible

If you know the OID you can use Setup > Services > Other services > Integrate Nagios plugins to go for a specific OID directly.

For my printers I get the device info OID with SNMPv2 that way.

There is some more info on:

Thanks for great feedback and help and I will definitly try this.
Will update about the results :blush:

I got response from the OID when using the command line, but i kinda need to send it through an plugin for modifications. The numbers have meanings that correspons with warning lvls, and i dont know how to this and still bypassing the systemOIDs.

Here are some of the rules i made on specific OIDs like mentioned above. The numbers 4, 1, and 2 is not giving much info as they are and i need to translate them based on what number is recieved from the host on that OID.
If i try to write a “normal” plugin, i only get
“Error in packet.
Reason: (genError) A general failure occured
Failed object: .1.3.6.1.2.1.1.3 (Exit-Code: 2)(!!)”

I have no experience with writing a ‘normal’ plugin, hopefully others can help you with that.

Regarding my suggestion, the mentioned docs article has a link to the various commands you can use with the Integrate Nagios plugins option. For check_snmp you can find the full usage and options docs here: Monitoring Plugins - check_snmp

Maybe following option will give a bit more meaning to your 4, 1 and 2 value:

 -u, --units=STRING
    Units label(s) for output data (e.g., 'sec.').

Thanks, this can work if this is the only solution we come up with, managed to add thresholds in the custom rule as you mentioned over.
I have contacted the vendor, hoping they can fix the missing OID descriptions, as i need a more dynamic and more maintainable solution in the long run. And a more dynamic flow is achieved through the plugin, so i feel i am just too blocked on this task as long as checkMK is not able to bypass the missing system OIDs.
But your solution is more than i had before, so thanks :slight_smile:

1 Like