97 lines
3.8 KiB
ReStructuredText
97 lines
3.8 KiB
ReStructuredText
|
***********
|
||
|
**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 <https://github.com/githubDante/ethMon/releases/download/v1.1.0/ethMon>`_
|
||
|
* 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 <https://icinga.com/docs/icinga-2/latest/doc/05-service-monitoring/#threshold-ranges>`_
|
||
|
|
||
|
|
||
|
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.
|