Last update: January 29, 2021
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.As I don't have any Infoblox appliances around to test further development, this plugin is end of life. Use as is.
If you are looking for commercial support for this monitoring plugin, need customized modifications or in general customized monitoring plugins, contact us at Infiniroot.com.
3891 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.
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
20210129 Added swap and services check (by Remi Verchere)
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:
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). |
-n | Negate result (only usable for dnsview check type) |
-h | Show help and usage |
*mandatory parameter
Type | Description |
cpu | Check CPU usage (thresholds possible) |
mem | Check Memory usage (thresholds possible) |
swap | Check swap usage (thresholds possible) |
replication | Check if replication between Infoblox appliances is working |
ha | Check if appliance is Active or Passive in H-A (additional arguments possible: Active|Passive) |
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) |
dnsview | Check if DNS View exists using the reverse "domain"."0.0.127.in-addr.arpa" zone. Requires presence of IB-DNSONE-MIB on the monitoring server (/usr/share/snmp/mibs/IB-DNSONE-MIB.txt). |
dhcpstat | Display DHCP statistics |
service | Display status of services. Expects one of the following additional arguments: dhcp, dns, ntp, tftp, http-file-dist, ftp, bloxtools-move, bloxtools |
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
# '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$
}
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"
}
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 HA setup (= 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!ha!-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
}
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"
}