check_infoblox

Last update: March 11, 2019

This is a plugin to monitor Infoblox appliances. It uses SNMP to retrieve the information from the appliance's management ip address. The plugin can also be used to measure and graph DNS resolving of domains.

Download

Download check_infoblox.sh

check_infoblox.sh

1820 downloads so far...

Download plugin and save it in your Nagios/Monitoring plugin folder (usually /usr/lib/nagios/plugins, depends on your distribution). Afterwards adjust the permissions (usually chmod 755).

Community contributions welcome on GitHub repo.

Version history / Changelog

20151016 Started Script programming. Check: cpu, mem
20151020 Added check: replication, grid, info, ip, dnsstat, temp
20151021 (Back to the Future Day!) Public release
20151030 Added check dhcpstat (by Chris Lewis)
20151104 Bugfix in perfdata of dnsstat check

Requirements

  • snmpwalk command (SUSE: net-snmp package, Debian/Ubuntu: snmp package)
  • Other bash relevant commands as sed, awk, grep (plugin checks for its existance)
  • Enable SNMPv1/SNMPv2 on the appliance(s) in the Grid Properties (see below)

How to enable SNMP on the Infoblox Grid

To be able to check the Infoblox appliance with the check_infoblox plugin, SNMP must be enabled on the Grid. This can be done in the user interface in the Grid Properties:

Infoblox enable snmp in grid properties

Definition of the parameters

Parameter Description
-H* Hostname or ip address of the Infoblox system to monitor.
-V* SNMP version to use. Currently only SNMPv2 is supported. Therefore use '-V 2c'.
-C* SNMP community name
-t* Which type of check should be executed. See list of check types below.
-a Additional arguments in combination for certain check types.
-w Warning threshold.
-c Critical threshold.
-i Ignore Unknown Status (for 'replication' and 'dnsstat' checks).
-h Show help and usage

*mandatory parameter

Definition of the check types

Type Description
cpu Check CPU utilization (thresholds possible)
mem Check Memory utilization (thresholds possible)
replication Check if replication between Infoblox appliances is working
grid Check if appliance is Active or Passive in grid (additional argument possible to detect failover)
info Display general information about this appliance
ip Display configured ip addresses of this appliance (additional argument possible to check for a certain address)
dnsstat Display DNS statistics for domain (use in combination with -a domain)
dhcpstat Display DHCP statistics

Usage / running the plugin on the command line

Usage:

./check_infoblox.sh -H hostname -V 2c -C community -t checktype [-a string] [-w int] [-c int] [-i]

Example 1 - CPU stats of a Infoblox appliance:

./check_infoblox.sh -H myinfoblox -V 2c -C monitoring -t cpu
CPU OK - Usage at 6%|ibloxcpu=6%;;;;

Example 2 - Memory stats of a Infoblox appliance:

./check_infoblox.sh -H myinfoblox -V 2c -C monitoring -t mem
MEMORY OK - Usage at 16%|ibloxmem=16%;;;;

Example 3 - Replication info on a passive grid member:

./check_infoblox.sh -H myinfoblox -V 2c -C monitoring -t replication ; echo $?
REPLICATION UNKNOWN - This system (SN: "08002XXXXXXXXXX6") is a passive grid member. Cannot verify replication. Try with HA IP address?
3

Example 4 - Replication info on a passive grid member with -i parameter (note the different exit code):

./check_infoblox.sh -H myinfoblox -V 2c -C monitoring -t replication -i ; echo $?
REPLICATION UNKNOWN - This system (SN: "08002XXXXXXXXXX6") is a passive grid member. Cannot verify replication. Try with HA IP address?
0

Example 5 - Replication info on an active grid member:

./check_infoblox.sh -H myinfoblox2 -V 2c -C monitoring -t replication -i
REPLICATION OK

Example 6 - Dns statistics of a domain:

./check_infoblox.sh -H myinfoblox -V 2c -C monitoring -t dnsstat -a example.com
DNS STATS OK - example.com Success: 14355353, Referral: 444443, NxRRset: 10228110, NxDomain: 633916, Recursion: 0, Failure: 0|example.com_success=14355353;;;; example.com_referral=444443;;;; example.com_nxrrset=10228110;;;; example.com_nxdomain=633916;;;; example.com_recursion=0;;;; example.com_failure=0

Command definition

Command definition in Nagios, Icinga 1.x, Shinken, Naemon

# 'check_infoblox' command definition
define command{
command_name check_infoblox
command_line $USER1$/check_infoblox.sh -H $HOSTADDRESS$ -V 2c -C $ARG1$ -t $ARG2$ $ARG3$
}

Command definition in Icinga 2.x

object CheckCommand "check_infoblox" {
  import "plugin-check-command"
  command = [ PluginDir + "/check_infoblox.sh" ]

  arguments = {
   "-H" = "$infoblox_address$"
   "-V" = "$infoblox_snmpversion$"
   "-C" = "$infoblox_snmpcommunity$"
   "-t" = "$infoblox_checktype$"
   "-a" = "$infoblox_argument$"
   "-w" = "$infoblox_warning$"
   "-c" = "$infoblox_critical$"
   "-i" = { set_if = "$infoblox_ignoreunknown$" }
  }

  vars.infoblox_address = "$address$"
  vars.infoblox_snmpversion = "2c"
}

Service definition

Service definition in Nagios, Icinga 1.x, Shinken, Naemon

Example with CPU check type. If no thresholds are set, the plugin simply outputs the current usage

# Check Infoblox CPU Usage
define service{
  use generic-service
  host_name infoblox1
  service_description CPU Usage
  check_command check_infoblox!monitoring!cpu!-w 50 -c 80
}

The next service definition checks the current status of replication between Infoblox appliances (if Primary and Secondary are configured). Does not make sense on a standalone Infoblox appliance. If the checked appliance is a Passive grid member, the replication cannot be checked and the check returns an UNKNOWN state. When the parameter -i is added, the UNKNOWN state will be ignored and the check will return an OK state.

# Check Infoblox Replication
define service{
  use generic-service
  host_name infoblox1
  service_description Replication Status
  check_command check_infoblox!monitoring!replication!-i
}

If you have several Infoblox appliances put together in a grid (= acting as one Infoblox but highly available), you can check the current member status of the selected appliance. The '-a' parameter can be used to expect a specific status (either Active or Passive). This allows to be alerted when a failover happens.

# Check Infoblox Grid
define service{
  use generic-service
  host_name infoblox1
  service_description Grid Status
  check_command check_infoblox!monitoring!grid!-a Active
}

If you use your Infoblox as a public nameserver, you might want to measure how often your top domains are being resolved. The dnsstat check type allows to get the resolve statistics for a domain. Use the '-a' parameter to define the domain.

# Check Infoblox DNS Stats example.com
define service{
  use generic-service
  host_name infoblox1
  service_description DNS Stats example.com
  check_command check_infoblox!monitoring!dnsstat!-a example.com
}

Service object definition Icinga 2.x

Example with CPU check type. If no thresholds are set, the plugin simply outputs the current usage:

# Check Infoblox CPU Usage
object Service "CPU Usage" {
  import "generic-service"
  host_name = "infoblox1"
  check_command = "check_infoblox"
  vars.infoblox_snmpcommunity = "monitoring"
  vars.infoblox_checktype = "cpu"
  vars.infoblox_warning = "50"
  vars.infoblox_critical = "80"
}

The next object checks the current status of replication between Infoblox appliances (if Primary and Secondary are configured). Does not make sense on a standalone Infoblox appliance. If the checked appliance is a Passive grid member, the replication cannot be checked and the check returns an UNKNOWN state. When the parameter -i is added, the UNKNOWN state will be ignored and the check will return an OK state.

# Check Infoblox Replication
object Service "Replication Status" {
  import "generic-service"
  host_name = "infoblox1"
  check_command = "check_infoblox"
  vars.infoblox_snmpcommunity = "monitoring"
  vars.infoblox_checktype = "replication"
  vars.infoblox_ignoreunknown = true
}

If you have several Infoblox appliances put together in a grid (= acting as one Infoblox but highly available), you can check the current member status of the selected appliance. The vars.infoblox_argument variable can be used t o expect a specific status (either Active or Passive). This allows to be alerted when a failover happens.

# Check Infoblox Grid
object Service "Grid Status" {
  import "generic-service"
  host_name = "infoblox1"
  check_command = "check_infoblox"
  vars.infoblox_snmpcommunity = "monitoring"
  vars.infoblox_checktype = "grid"
  vars.infoblox_argument = "Active"
}

If you use your Infoblox as a public nameserver, you might want to measure how often your top domains are being resolved. The dnsstat check type allows to get the resolve statistics for a domain. Use the '-a' parameter to define the do main.

# Check Infoblox DNS Stats example.com
object Service "DNS Stats example.com" {
  import "generic-service"
  host_name = "infoblox1"
  check_command = "check_infoblox"
  vars.infoblox_snmpcommunity = "monitoring"
  vars.infoblox_checktype = "dnsstat"
  vars.infoblox_argument = "example.com"
}

Screenshots

check_infoblox all ok
check_infoblox grid warning
check_infoblox repliation warning