*********** **ethMon** *********** ethMon is an Icinga2/Nagios compatible Python plugin for network traffic monitoring on a specific interface. Currently the carbon/graphite data is always in *bytes*. Graph drawn from a collected data .. image:: images/plugin_graph.png In order to calculate the speed the plugin keeps the data from previous runs in ~/.ethMonCache.db **Installation** ================= * Download ethMon to the Icinga/Nagios plugin directory (`/usr/lib/nagios/plugins/` on Debian 10) * `Link `_ * Ensure that the executable bit of *ethMon* is set **Configuration** ================= * In order to use the plugin with Icinga the following configuration is needed: * in */usr/share/icinga2/include/command-plugins.conf* add the following .. code-block:: console template CheckCommand "ethMon-common" { command = [ PluginDir + "/ethMon" ] arguments = { "-i" = { value = "$interface$" description = "Interface which will be monitored" } "-w" = { value = "$speed_warn$" description = "Warning threshold" } "-c" = { value = "$speed_crit$" description = "Critical threshold" } "-s" = { value = "$speed_scale$" description = "Speed scaling" } "--interval" = { value = "$chk_interval$" description = "Interval between the checks (in seconds)" } } vars.speed_warn = 60 vars.speed_crit = 100 vars.speed_scale = "Mb" vars.chk_interval = 30 } object CheckCommand "ethMon" { import "ethMon-common" } .. * then per host (or zone if the interface name match everywhere): .. code-block:: console apply Service "Traffic-enp3s5" { check_command = "ethMon" check_interval = 30 vars.interface = "enp3s5" command_endpoint = host.vars.client_endpoint // Check executed on client node assign where host.vars.client_endpoint == "TheMonitoredHost" // The service is applied only to this node } .. * **NOTE**: The same value must be used for *check_interval & vars.chk_interval* **Support for threshold ranges** * `Icinga threshold ranges documentation `_ The plugin has partial support for the ranges described in the Icinga documentation. If used the ranges must be specified for both (warning & critical) parameters. Implemented are the following specifications: * min:max - The value must be outside the range in order the alert to be triggered * @min:max - The value must be inside the range in order the alert to be triggered * min: - The value must be below *min* or above 10*10^256 in order the alert to be triggered * @min: - The value must be between *min* and 10*10^256 in order the alert to be triggered * :max - The value must be below 0 and *max* in order the alert to be triggered * @:max - The value must be between 0 and *max* in order the alert to be triggered **Motivation** ================ The plugin has been created as *check_eth* from Nagios Exchange refused to work in my current setup.