Tutorial for creating new SNMP monitor?

I’m having a hard time parsing the docs on how to monitor & record values from SNMP. I’m used to using SNMP and tossing the data into RRDTool. CheckMK seems to have a significant layer of abstraction that I’m having a hard time figuring out. I need to graph some values that are not available currently through any plugin that I’ve found.

I’m using CheckMK Enterprise v1.6.0p19.

I guess my first question is - which version of the documentation should I be looking at? “Master” or “Latest(1.6.0)”? I’ve been running on the assumption that I should be looking at the “Latest(1.6.0)” docs.

This page (https://docs.checkmk.com/latest/en/dev_guidelines.html) from the docs seems most relevant, but there are a bunch of terms that are used that aren’t explained anywhere else:

  • factory_settings is mentioned as required… but isn’t explained or referenced
  • check_info is likewise mentioned and not explained
  • snmp_info is shown in the code, and not explained

I’m fairly familiar with Python and shell programming, so the way the data is presented is fine - I see dicts and lists - no big deal. What’s missing is any explanation that would connect these ideas to actually monitoring a series of MIBs.

It feels like I missed something fundamental about the process of writing plugins for SNMP.

Is there other documentation I should be referring to rather than the link above?

I’m also curious if it’s possible for CheckMK to record and graph without alerting. One of the values I’d like to graph is an int from 0 to 63 (SNMP Gauge). Any of the possible values are valid, and no value warrants an alert. Would I still need to specify a Warn and Crit threshold and just use values well outside of the range?


Unfortunately the (very) old documentation has been removed from the website. It had some articlee about implementing check plugins and SNMP.
I guess they have been removed because the check API is drastically changed with CMK 2.0.

Can I write the plugins using the 2.0 framework and have them work in 1.6? I assumed not, but I find it odd that CMK would nuke documentation that’s still relevant for the currently supported version.

I started searching through the Wayback Machine and found this:

That old doc answers a bunch of my questions, but not all.

Just for sake of sharing, I found the explanation here quite better https://lanbugs.de/howtos/monitoring-check_mk/check_mk-snmp-based-check/

Hi @tpb, @anonymous15,
the “new” 2.0 setup will still be able to accomodate the “old-style” checks. It will however need to be adapted again if you plan to use it in 2.0, 2.1 and onwards. I’m no professional in 2.x checks but the new methodology is supposedly much smarter and better.

If you want to be able to develop with the new check-mk Versions, i would not let tribe off the hook. We “need” a new tutorial as the methodology has changed completely to a more future proof approach.
As far as i understood, you don’t need to query and parse everything multiple times. You query once, put everything in a “store” and then other components can just “subscribe” to this store and consume what they find there for their purposes, be it inventory building or check routines.