Icinga custom check

I have a few custom checks for icinga2. These are ran by icinga2 using snmp, each has a custom OID.
The issue I’m running into (and not funding answers on ddg.gg or googles) is that even when there is an alert, and the script does exists with 1 or 2 this does not get to Icinga and it will report as everything is fine.

The scripts use two kind of exits to signal the status:

  • and exit code
  • a string

For example:
echo "All good - OK"; exit 0
echo "Something is fishy- WARNING"; exit 1
`echo “Things are broken - CRITICAL; exit 2”

Here is an example for a check:

apply Service "zpool_status" {
  import "generic-service"
  import "check_snmp-tpl"
  check_command = "check_snmp"
  vars.check_snmp_oid = ".OID number."
  ### I tried without invert but the result was the same ###
  vars.check_snmp_invert = true
  assign where "zpool" in host.vars.storage
}


template Service "check_zpool-tpl" {
    vars.check_zpool_name = "ALL"
    vars.check_zpool_warnpercent = ""
    vars.check_zpool_critpercent = ""
}

object CheckCommand "check_zpool" {
        command = [ PluginDir + "/check_zpools.sh" ]

        arguments = {
                "-p" = "$check_zpool_name$"
                "-w" = "$check_zpool_warnpercent$"
                "-c" = "$check_zpool_critpercent$"
        }
}

These worked in Nagios but not here. Does anyone have an idea into what should I be looking to?