Doc review (for real)

This commit is contained in:
Quentin Delance 2015-01-05 14:30:13 +01:00
parent e668fca623
commit 9d8be1f6d4
2 changed files with 184 additions and 180 deletions

View File

@ -4,8 +4,8 @@ Description
This document introduces the best practices in the development of "centreon-plugins".
As all plugins are written in Perl, “there is more than on way to do it”.
But to not reinvent the wheel, you should first take a look at the “example” directory, you will get an overview of how to build your own plugin and associated modes.
As all plugins are written in Perl, “there is more than one way to do it”.
But to avoid reinventing the wheel, you should first take a look at the “example” directory, you will get an overview of how to build your own plugin and associated modes.
The lastest version is available on following git repository: http://git.centreon.com/centreon-plugins.git
@ -105,7 +105,7 @@ Several modes can be declared in the **new** constructor:
...
);
Then, Declare the module:
Then, declare the module:
.. code-block:: perl
@ -125,10 +125,10 @@ A description of the plugin is needed to generate the documentation:
.. tip::
you can copy-paste an other plugin.pm and adapt some lines (package, arguments...).
You can copy-paste an other plugin.pm and adapt some lines (package, arguments...).
.. tip::
plugin has ".pm" extension because it's a perl module. So don't forget to add **1;** at the end of the file
The plugin has ".pm" extension because it's a Perl module. So don't forget to add **1;** at the end of the file.
-------------
Mode creation
@ -147,13 +147,13 @@ Then, edit mode1.pm to add **license terms** by copying it from an other mode. D
# ...
# Authors : <your name> <<your email>>
Next, describe your **package** name : it matches your mode directory.
Next, describe your **package** name: it matches your mode directory.
.. code-block:: perl
package path::to::plugin::mode::mode1;
Declare used libraries (always the same) :
Declare used libraries (always the same):
.. code-block:: perl
@ -192,7 +192,7 @@ Several options can be declared in the **new** constructor:
"option3" => { name => 'option3' },
});
This the description of arguments of this example:
Here is the description of arguments used in this example:
* option1 : String value
* option2 : String value with default value "value1"
@ -224,9 +224,9 @@ For example, Warning and Critical thresholds must be validate in **check_options
$self->{output}->option_exit();
}
In this example, help is printed if thresholds have not a correct format.
In this example, help is printed if thresholds do not have a correct format.
Then comes the **run** method, where you perform measurement, check thresholds, display output and format perfdatas.
Then comes the **run** method, where you perform measurement, check thresholds, display output and format performance datas.
This is an example to check a snmp value:
.. code-block:: perl
@ -257,20 +257,20 @@ This is an example to check a snmp value:
In this example, we check a snmp OID that we compare to warning and critical thresholds.
There are the methods which we use:
* get_leef : get a snmp value from an OID
* threshold_check : compare snmp value to warning and critical thresholds
* get_leef : get a SNMP value from an OID
* threshold_check : compare SNMP value to warning and critical thresholds
* output_add : add output
* perfdata_add : add perfdata to output
* display : display output
* exit : exit
Then, declare the module :
Then, declare the module:
.. code-block:: perl
1;
A description of the mode and its arguments is needed to generate the documentation :
A description of the mode and its arguments is needed to generate the documentation:
.. code-block:: perl
@ -286,9 +286,9 @@ A description of the mode and its arguments is needed to generate the documentat
Commit and push
---------------
Before commit the plugin, you need to create an **enhancement ticket** on the centreon-plugins forge : http://forge.centreon.com/projects/centreon-plugins
Before committing the plugin, you need to create an **enhancement ticket** on the centreon-plugins forge : http://forge.centreon.com/projects/centreon-plugins
Once plugin and modes are developed, you can commit and push your work :
Once plugin and modes are developed, you can commit (commit messages in english) and push your work :
::
git add path/to/plugin
@ -305,7 +305,7 @@ This chapter describes centreon libraries which you can use in your development.
Output
------
This library allows you to change output of your plugin.
This library allows you to build output of your plugin.
output_add
----------
@ -334,7 +334,7 @@ Parameters
Example
^^^^^^^
This is an example of how to manage output :
This is an example of how to manage output:
.. code-block:: perl
@ -386,7 +386,7 @@ Parameters
Example
^^^^^^^
This is an example of how to add performance data :
This is an example of how to add performance data:
.. code-block:: perl
@ -402,15 +402,15 @@ This is an example of how to add performance data :
$self->{output}->display();
Output displays :
Output displays:
::
OK - Memory is ok | 'memory_used'=30000000B;80000000;90000000;0;100000000
-------
Perdata
-------
--------
Perfdata
--------
This library allows you to manage performance data.
@ -443,7 +443,7 @@ Parameters
Example
^^^^^^^
This is an example of how to manage performance data for output :
This is an example of how to manage performance data for output:
.. code-block:: perl
@ -483,7 +483,7 @@ Parameters
Example
^^^^^^^
This example checks if warning threshold is correct :
This example checks if warning threshold is correct:
.. code-block:: perl
@ -493,7 +493,7 @@ This example checks if warning threshold is correct :
}
.. tip::
You can see the correct threshold format here : https://nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT
You can see the correct threshold format here: https://nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT
threshold_check
---------------
@ -517,7 +517,7 @@ Parameters
Example
^^^^^^^
This example checks if performance data reached thresholds :
This example checks if performance data reached thresholds:
.. code-block:: perl
@ -559,7 +559,7 @@ Parameters
Example
^^^^^^^
This example change bytes to human readable unit :
This example change bytes to human readable unit:
.. code-block:: perl
@ -576,8 +576,8 @@ Output displays :
Snmp
----
This library allows you to use snmp protocol in your plugin.
To use it, Add the following line at the beginning of your **plugin.pm** :
This library allows you to use SNMP protocol in your plugin.
To use it, add the following line at the beginning of your **plugin.pm**:
.. code-block:: perl
@ -590,7 +590,7 @@ get_leef
Description
^^^^^^^^^^^
Return hash table table of SNMP values for multiple OIDs (Do not work with SNMP table).
Return hash table table of SNMP values for multiple OIDs (do not work with SNMP table).
Parameters
^^^^^^^^^^
@ -608,7 +608,7 @@ Parameters
Example
^^^^^^^
This is an example of how to get 2 snmp values :
This is an example of how to get 2 SNMP values:
.. code-block:: perl
@ -627,7 +627,7 @@ load
Description
^^^^^^^^^^^
Load a range of oids to use with **get_leef** method.
Load a range of OIDs to use with **get_leef** method.
Parameters
^^^^^^^^^^
@ -649,7 +649,7 @@ Parameters
Example
^^^^^^^
This is an example of how to get 4 instances of a snmp table by using **load** method :
This is an example of how to get 4 instances of a SNMP table by using **load** method:
.. code-block:: perl
@ -662,7 +662,7 @@ This is an example of how to get 4 instances of a snmp table by using **load** m
use Data::Dumper;
print Dumper($result);
This is an example of how to get multiple instances dynamically (memory modules of dell hardware) by using **load** method :
This is an example of how to get multiple instances dynamically (memory modules of Dell hardware) by using **load** method:
.. code-block:: perl
@ -702,7 +702,7 @@ Parameters
+-----------------+----------------------+----------------+--------------------------------------------------------------+
| end | Int | | Last OID to check. |
+-----------------+----------------------+----------------+--------------------------------------------------------------+
| dont_quit | Int (0 or 1) | 0 | Don't quit even if an snmp error occured. |
| dont_quit | Int (0 or 1) | 0 | Don't quit even if an SNMP error occured. |
+-----------------+----------------------+----------------+--------------------------------------------------------------+
| nothing_quit | Int (0 or 1) | 0 | Quit if no value is returned. |
+-----------------+----------------------+----------------+--------------------------------------------------------------+
@ -712,7 +712,7 @@ Parameters
Example
^^^^^^^
This is an example of how to get a snmp table :
This is an example of how to get a SNMP table:
.. code-block:: perl
@ -740,9 +740,9 @@ Parameters
| Parameter | Type | Default | Description |
+=================+======================+================+==============================================================+
| **oids** | Hash table | | Hash table of OIDs to check (Can be set by 'load' method). |
| | | | Keys can be : "oid", "start", "end". |
| | | | Keys can be: "oid", "start", "end". |
+-----------------+----------------------+----------------+--------------------------------------------------------------+
| dont_quit | Int (0 or 1) | 0 | Don't quit even if an snmp error occured. |
| dont_quit | Int (0 or 1) | 0 | Don't quit even if an SNMP error occured. |
+-----------------+----------------------+----------------+--------------------------------------------------------------+
| nothing_quit | Int (0 or 1) | 0 | Quit if no value is returned. |
+-----------------+----------------------+----------------+--------------------------------------------------------------+
@ -752,7 +752,7 @@ Parameters
Example
^^^^^^^
This is an example of how to get 2 snmp tables :
This is an example of how to get 2 SNMP tables:
.. code-block:: perl
@ -784,7 +784,7 @@ None.
Example
^^^^^^^
This is an example of how to get hostname parameter :
This is an example of how to get hostname parameter:
.. code-block:: perl
@ -807,7 +807,7 @@ None.
Example
^^^^^^^
This is an example of how to get port parameter :
This is an example of how to get port parameter:
.. code-block:: perl
@ -834,7 +834,7 @@ Parameters
Example
^^^^^^^
This example prints sorted OIDs :
This example prints sorted OIDs:
.. code-block:: perl
@ -848,7 +848,7 @@ Misc
----
This library provides a set of miscellaneous methods.
To use it, you can directly use the path of the method :
To use it, you can directly use the path of the method:
.. code-block:: perl
@ -875,7 +875,7 @@ Parameters
Example
^^^^^^^
This is an example of how to use **trim** method :
This is an example of how to use **trim** method:
.. code-block:: perl
@ -888,7 +888,6 @@ This is an example of how to use **trim** method :
Output displays :
::
Hello world !
Hello world !
@ -912,7 +911,7 @@ Parameters
Example
^^^^^^^
This is an example of how to use **change_seconds** method :
This is an example of how to use **change_seconds** method:
.. code-block:: perl
@ -955,7 +954,7 @@ Parameters
Example
^^^^^^^
This is an example of how to use **backtick** method :
This is an example of how to use **backtick** method:
.. code-block:: perl
@ -1001,7 +1000,7 @@ Example
^^^^^^^
This is an example of how to use **execute** method.
We suppose --remote option is enable :
We suppose ``--remote`` option is enabled:
.. code-block:: perl
@ -1056,7 +1055,7 @@ This is an example of how to use **windows_execute** method.
command_path => '',
command_options => '/all');
Output displays ip configuration on a Windows host.
Output displays IP configuration on a Windows host.
---------
@ -1064,7 +1063,7 @@ Statefile
---------
This library provides a set of methods to use a cache file.
To use it, Add the following line at the beginning of your **mode** :
To use it, add the following line at the beginning of your **mode**:
.. code-block:: perl
@ -1095,7 +1094,7 @@ Parameters
Example
^^^^^^^
This is an example of how to use **read** method :
This is an example of how to use **read** method:
.. code-block:: perl
@ -1131,7 +1130,7 @@ Parameters
Example
^^^^^^^
This is an example of how to use **get** method :
This is an example of how to use **get** method:
.. code-block:: perl
@ -1167,7 +1166,7 @@ Parameters
Example
^^^^^^^
This is an example of how to use **write** method :
This is an example of how to use **write** method:
.. code-block:: perl
@ -1181,7 +1180,7 @@ This is an example of how to use **write** method :
$new_datas->{last_timestamp} = time();
$self->{statefile_value}->write(data => $new_datas);
Then, you can take a look to '/var/lib/centreon/centplugins/my_cache_file', timestamp is written in it.
Then, you can read the result in '/var/lib/centreon/centplugins/my_cache_file', timestamp is written in it.
----
@ -1189,13 +1188,13 @@ Http
----
This library provides a set of methodss to use HTTP protocol.
To use it, Add the following line at the beginning of your **mode** :
To use it, add the following line at the beginning of your **mode**:
.. code-block:: perl
use centreon::plugins::httplib;
Some options must be set in **plugin.pm** :
Some options must be set in **plugin.pm**:
+-----------------+-----------------+---------------------------------------------------------+
| Option | Type | Description |
@ -1256,7 +1255,7 @@ Dbi
---
This library allows you to connect to databases.
To use it, Add the following line at the beginning of your **plugin.pm** :
To use it, add the following line at the beginning of your **plugin.pm**:
.. code-block:: perl
@ -1284,14 +1283,14 @@ Example
This is an example of how to use **connect** method.
In plugin.pm :
In plugin.pm:
.. code-block:: perl
$self->{sqldefault}->{dbi} = ();
$self->{sqldefault}->{dbi} = { data_source => 'mysql:host=127.0.0.1;port=3306' };
In your mode :
In your mode:
.. code-block:: perl
@ -1320,7 +1319,7 @@ Parameters
Example
^^^^^^^
This is an example of how to use **query** method :
This is an example of how to use **query** method:
.. code-block:: perl
@ -1349,7 +1348,7 @@ None.
Example
^^^^^^^
This is an example of how to use **fetchrow_array** method :
This is an example of how to use **fetchrow_array** method:
.. code-block:: perl
@ -1367,7 +1366,7 @@ fetchall_arrayref
Description
^^^^^^^^^^^
Return Array from sql query.
Return Array from SQL query.
Parameters
^^^^^^^^^^
@ -1377,7 +1376,7 @@ None.
Example
^^^^^^^
This is an example of how to use **fetchrow_array** method :
This is an example of how to use **fetchrow_array** method:
.. code-block:: perl
@ -1406,7 +1405,7 @@ fetchrow_hashref
Description
^^^^^^^^^^^
Return Hash table from sql query.
Return Hash table from SQL query.
Parameters
^^^^^^^^^^
@ -1416,7 +1415,7 @@ None.
Example
^^^^^^^
This is an example of how to use **fetchrow_hashref** method :
This is an example of how to use **fetchrow_hashref** method:
.. code-block:: perl
@ -1449,7 +1448,7 @@ Description
Plugin file
-----------
First, create the plugin directory and the plugin file :
First, create the plugin directory and the plugin file:
::
$ mkdir -p apps/pfsense/snmp
@ -1458,7 +1457,7 @@ First, create the plugin directory and the plugin file :
.. tip::
PfSense is a firewall application and we check it using SNMP protocol
Then, edit **plugin.pm** and add the following lines :
Then, edit **plugin.pm** and add the following lines:
.. code-block:: perl
@ -1509,7 +1508,7 @@ Then, edit **plugin.pm** and add the following lines :
.. tip::
Don't forget to edit 'Authors' line.
Add **new** method to instantiate the plugin :
Add **new** method to instantiate the plugin:
.. code-block:: perl
@ -1531,13 +1530,13 @@ Add **new** method to instantiate the plugin :
return $self;
}
Declare this plugin as a perl module :
Declare this plugin as a perl module:
.. code-block:: perl
1;
Add a description to the plugin :
Add a description to the plugin:
.. code-block:: perl
@ -1563,7 +1562,7 @@ Then, create the mode directory and the mode file :
$ mkdir apps/pfsense/snmp/mode
$ touch apps/pfsense/snmp/mode/memorydroppedpackets.pm
Edit **memorydroppedpackets.pm** and add the following lines :
Edit **memorydroppedpackets.pm** and add the following lines:
.. code-block:: perl
@ -1618,7 +1617,7 @@ Edit **memorydroppedpackets.pm** and add the following lines :
# Needed library to use cache file
use centreon::plugins::statefile;
Add **new** method to instantiate the mode :
Add **new** method to instantiate the mode:
.. code-block:: perl
@ -1648,7 +1647,7 @@ Add **new** method to instantiate the mode :
A default value can be added to options.
Example : "warning:s" => { name => 'warning', default => '80'},
Add **check_options** method to validate options :
Add **check_options** method to validate options:
.. code-block:: perl
@ -1670,7 +1669,7 @@ Add **check_options** method to validate options :
$self->{statefile_value}->check_options(%options);
}
Add **run** method to execute mode :
Add **run** method to execute mode:
.. code-block:: perl
@ -1746,13 +1745,13 @@ Add **run** method to execute mode :
$self->{output}->exit();
}
Declare this plugin as a perl module :
Declare this plugin as a perl module:
.. code-block:: perl
1;
Add a description of the mode options :
Add a description of the mode options:
.. code-block:: perl
@ -1780,12 +1779,12 @@ Add a description of the mode options :
Command line
------------
This is an example of command line :
This is an example of command line:
::
$ perl centreon_plugins.pl --plugin apps::pfsense::snmp::plugin --mode memory-dropped-packets --hostname 192.168.0.1 --snmp-community 'public' --snmp-version '2c' --warning '1' --critical '2'
Output may displays :
Output may display:
::
OK: Dropped packets due to memory limitations : 0.00 /s | dropped_packets_Per_Sec=0.00;0;;1;2

View File

@ -4,7 +4,7 @@ Description
Ce document présente les bonnes pratiques pour le développement de "centreon-plugins".
Comme tous les plugins sont écrits en Perl, “il y plus d'une façon de faire”.
Mais pour ne pas réinventer la roue, vous devirez d'abord regarder le dossier “example”, vous aurez alors un aperçu de comment construire votre propre plugin ainsi que ses modes associés.
Mais pour ne pas réinventer la roue, vous devriez d'abord regarder le dossier “example”, vous aurez alors un aperçu de comment construire votre propre plugin ainsi que ses modes associés.
La dernière version est disponible sur le dépôt git suivant: http://git.centreon.com/centreon-plugins.git
@ -27,19 +27,19 @@ Les répertoires racines sont oganisés par catégorie:
* Système d'exploitation : os
* Equipement de stockage : storage
Selon l'objet supervisé, il existe une organisation qui peut utiliser:
Selon l'objet supervisé, il existe une organisation qui peut utiliser :
* Type
* Constructeur
* Modèle
* Protocole de supervision
Par exemple, si vous voulez ajouter un plugin pour superviser Linux par SNMP, you devez créer ce dossier:
Par exemple, si vous voulez ajouter un plugin pour superviser Linux par SNMP, you devez créer ce dossier :
::
$ mkdir -p os/linux/snmp
You avez également besoin de créer une répertoire "mode" pour les futurs modes créés:
You avez également besoin de créer une répertoire "mode" pour les futurs modes créés :
::
$ mkdir os/linux/snmp/mode
@ -48,12 +48,12 @@ You avez également besoin de créer une répertoire "mode" pour les futurs mode
Création du plugin
------------------
Une fois le dossier créé, créez le fichier du plugin à l'intérieur de celui-ci:
Une fois le dossier créé, créez le fichier du plugin à l'intérieur de celui-ci :
::
$ touch plugin.pm
Ensuite, éditez plugin.pm pour ajouter les **conditions de licence** en les copiant à partir d'un autre plugin. N'oubliez pas d'ajouter votre nom à la fin de celles-ci:
Ensuite, éditez plugin.pm pour ajouter les **conditions de licence** en les copiant à partir d'un autre plugin. N'oubliez pas d'ajouter votre nom à la fin de celles-ci :
.. code-block:: perl
@ -74,7 +74,7 @@ Déclarez les bibliothèques utilisés (**strict** et **warnings** sont obligato
use warnings;
use base qw(**centreon_library**);
Le plugin a besoin d'un constructeur **new** pour instancier l'objet:
Le plugin a besoin d'un constructeur **new** pour instancier l'objet :
.. code-block:: perl
@ -88,13 +88,13 @@ Le plugin a besoin d'un constructeur **new** pour instancier l'objet:
return $self;
}
La version du plugin doit être déclarée dans le constructeur **new**:
La version du plugin doit être déclarée dans le constructeur **new** :
.. code-block:: perl
$self->{version} = '0.1';
Plusieurs mode peuvent être déclarés dans le constructeur **new**:
Plusieurs modes peuvent être déclarés dans le constructeur **new** :
.. code-block:: perl
@ -104,13 +104,13 @@ Plusieurs mode peuvent être déclarés dans le constructeur **new**:
...
);
Ensuite, déclarez le module:
Ensuite, déclarez le module :
.. code-block:: perl
1;
Une description du plugin est nécessaire pour générer la documentation:
Une description du plugin est nécessaire pour générer la documentation :
.. code-block:: perl
@ -124,22 +124,22 @@ Une description du plugin est nécessaire pour générer la documentation:
.. tip::
you can copy-paste an other plugin.pm and adapt some lines (package, arguments...).
TODO you can copy-paste an other plugin.pm and adapt some lines (package, arguments...).
.. tip::
plugin has ".pm" extension because it's a perl module. So don't forget to add **1;** at the end of the file
TODO plugin has ".pm" extension because it's a perl module. So don't forget to add **1;** at the end of the file
----------------
Création du mode
----------------
Une fois que **plugin.pm** est créé et que ses modes sont déclarés, créez les modes dans le dossier **mode**:
Une fois que **plugin.pm** est créé et que ses modes sont déclarés, créez les modes dans le dossier **mode** :
::
cd mode
touch mode1.pm
Ensuite, éditez mode1.pm pour ajouter les **conditions de licence** en les copiant à partir d'un autre mode. N'oubliez pas d'ajouter votre nom à la fin de celles-ci:
Ensuite, éditez mode1.pm pour ajouter les **conditions de licence** en les copiant à partir d'un autre mode. N'oubliez pas d'ajouter votre nom à la fin de celles-ci :
.. code-block:: perl
@ -160,7 +160,7 @@ Déclarez les bibliothèques utilisées (toujours les mêmes) :
use warnings;
use base qw(centreon::plugins::mode);
Le mode nécessite un constructeur **new** pour instancier l'objet:
Le mode nécessite un constructeur **new** pour instancier l'objet :
.. code-block:: perl
@ -174,13 +174,13 @@ Le mode nécessite un constructeur **new** pour instancier l'objet:
return $self;
}
La version du mode doit être déclaré dans le constructeur **new**:
La version du mode doit être déclarée dans le constructeur **new** :
.. code-block:: perl
$self->{version} = '1.0';
Plusieurs options peuvent être déclarées dans le constructeur **new**:
Plusieurs options peuvent être déclarées dans le constructeur **new** :
.. code-block:: perl
@ -191,16 +191,16 @@ Plusieurs options peuvent être déclarées dans le constructeur **new**:
"option3" => { name => 'option3' },
});
Voici la description des arguments de cet exemple:
Voici la description des arguments de cet exemple :
* option1 : Chaîne de caractères
* option2 : Chaîne de caractères avec "value1" comme valeur par défaut
* option3 : Booléen
.. tip::
Vous pouvez obtenir plus d'informations sur les format des options ici : http://perldoc.perl.org/Getopt/Long.html
Vous pouvez obtenir plus d'informations sur les formats des options ici : http://perldoc.perl.org/Getopt/Long.html
Le mode nécessite une méthode **check_options** pour valider les options:
Le mode nécessite une méthode **check_options** pour valider les options :
.. code-block:: perl
@ -210,7 +210,7 @@ Le mode nécessite une méthode **check_options** pour valider les options:
...
}
Par exemple, les seuils dégradé et critique doivent être validés dans la méthode **check_options**:
Par exemple, les seuils Dégradé (Warning) et Critique (Critical) doivent être validés dans la méthode **check_options** :
.. code-block:: perl
@ -226,7 +226,7 @@ Par exemple, les seuils dégradé et critique doivent être validés dans la mé
Dans cet exemple, l'aide est affichée si les seuils spécifiés ne sont pas au bon format.
Ensuite vient la méthode **run**, où vous effectuez le traitement, vérifiez les seuils, affichez le message de sortie et les données de performance.
Voici un exemple pour vérifier une valeur snmp:
Voici un exemple pour vérifier une valeur SNMP :
.. code-block:: perl
@ -253,8 +253,8 @@ Voici un exemple pour vérifier une valeur snmp:
$self->{output}->exit();
}
Dans cet exemple, nous vérifions un OID snmp que nous comparons aux seuils dégradé et critique.
Voici les méthodes que nous utilisons:
Dans cet exemple, nous vérifions un OID SNMP que nous comparons aux seuils dégradé et critique.
Voici les méthodes que nous utilisons :
* get_leef : obtient une valeur snmp à partir d'un OID
* threshold_check : compare une valeur snmp à des seuils dégradé et critique
@ -263,13 +263,13 @@ Voici les méthodes que nous utilisons:
* display : affiche le message de sortie
* exit : sort du programme
Ensuite, déclarez le module:
Ensuite, déclarez le module :
.. code-block:: perl
1;
Une description du mode et ses arguments est nécessaire pour générer la documentation:
Une description du mode et ses arguments est nécessaire pour générer la documentation :
.. code-block:: perl
@ -285,9 +285,9 @@ Une description du mode et ses arguments est nécessaire pour générer la docum
Commit et push
--------------
Avant de commiter le plugin, you devez créer un **ticket amélioration** dans le forge centreon-plugins : http://forge.centreon.com/projects/centreon-plugins
Avant de commiter le plugin, you devez créer un **ticket amélioration** (enhancement) dans la forge centreon-plugins : http://forge.centreon.com/projects/centreon-plugins
Une fois que le plugin et ses modes sont développés, vous pouvez commiter et pusher votre travail:
Une fois que le plugin et ses modes sont développés, vous pouvez commiter (messages de commit en anglais) et pusher votre travail :
::
git add path/to/plugin
@ -298,13 +298,13 @@ Une fois que le plugin et ses modes sont développés, vous pouvez commiter et p
Référentiel des bibliothèques
*****************************
Ce chapitre décrit les bibliothèques centreon qui peuvent être utilisés dans votre développement.
Ce chapitre décrit les bibliothèques Centreon qui peuvent être utilisées dans votre développement.
------
Output
------
Cette bibliothèque vous permet de modifier la sortie de votre plugin.
Cette bibliothèque vous permet de construire la sortie de votre plugin.
output_add
----------
@ -315,6 +315,8 @@ Description
Ajoute une chaîne de caractères à la sortie (affichée avec la méthode **display**).
Si le statut est différent de 'ok', le message de sortie associé à 'ok' n'est pas affiché.
TODO Est ce que ca n'est pas plutôt "Lorsque plusieurs statut et messages sont ajoutés, seuls les dernières valeurs sont affichées lors de l'appel à display" ?
Paramètres
^^^^^^^^^^
@ -333,7 +335,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple de gestion de la sortie du plugin:
Voici un exemple de gestion de la sortie du plugin :
.. code-block:: perl
@ -345,7 +347,7 @@ Voici un exemple de gestion de la sortie du plugin:
$self->{output}->display();
La sortie affiche:
La sortie affiche :
::
CRITICAL - There is a critical problem
@ -358,7 +360,7 @@ perfdata_add
Description
^^^^^^^^^^^
Ajouter une donnée de performance à la sortie (affichée avec la méthode **display**).
Ajoute une donnée de performance à la sortie (affichée avec la méthode **display**).
Les données de performance sont affichées après le symbol '|'.
Paramètres
@ -407,9 +409,9 @@ La sortie affiche :
OK - Memory is ok | 'memory_used'=30000000B;80000000;90000000;0;100000000
-------
Perdata
-------
--------
Perfdata
--------
Cette bibliothèque vous permet de gérer les données de performance.
@ -442,7 +444,7 @@ Parameters
Exemple
^^^^^^^
Voici un exemple de gestion des données de performance pour la sortie:
Voici un exemple de gestion des données de performance pour la sortie :
.. code-block:: perl
@ -482,7 +484,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple vérifiant si le seuil dégradé est correct:
Voici un exemple vérifiant si le seuil dégradé est correct :
.. code-block:: perl
@ -492,7 +494,7 @@ Voici un exemple vérifiant si le seuil dégradé est correct:
}
.. tip::
Vous pouvez voir les bon format de seuil ici : https://nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT
Vous pouvez voir les bon formats de seuils ici : https://nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT
threshold_check
---------------
@ -541,7 +543,7 @@ change_bytes
Description
^^^^^^^^^^^
Convertie des bytes en unité de mesure lisible.
Convertit des bytes en unité de mesure lisible.
Retourne une valeur et une unité.
Paramètres
@ -575,8 +577,8 @@ La sortie affiche:
Snmp
----
Cette bibliothèque vous permet d'utiliser le protocole snmp dans votre plugin.
Pour l'utiliser, vous devez ajouter la ligne suivant au début de votre **plugin.pm**:
Cette bibliothèque vous permet d'utiliser le protocole SNMP dans votre plugin.
Pour l'utiliser, vous devez ajouter la ligne suivant au début de votre **plugin.pm** :
.. code-block:: perl
@ -607,7 +609,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple pour obtenir 2 valeurs snmp:
Voici un exemple pour obtenir 2 valeurs SNMP :
.. code-block:: perl
@ -626,7 +628,7 @@ load
Description
^^^^^^^^^^^
Charge une liste d'oids à utiliser avec la méthode **get_leef**.
Charge une liste d'OIDs à utiliser avec la méthode **get_leef**.
Paramètres
^^^^^^^^^^
@ -642,13 +644,13 @@ Paramètres
+-----------------+----------------------+--------------+----------------------------------------------------------------------------+
| begin | Int | | Instance de début |
+-----------------+----------------------+--------------+----------------------------------------------------------------------------+
| end | Int | | Instance to fin |
| end | Int | | Instance de fin |
+-----------------+----------------------+--------------+----------------------------------------------------------------------------+
Exemple
^^^^^^^
Voici un exemple pour obtenir les 4 premières instances d'une table snmp en utilisant la méthode **load**:
Voici un exemple pour obtenir les 4 premières instances d'une table SNMP en utilisant la méthode **load** :
.. code-block:: perl
@ -661,7 +663,7 @@ Voici un exemple pour obtenir les 4 premières instances d'une table snmp en uti
use Data::Dumper;
print Dumper($result);
Voici un exemple pour obtenir plusieurs instances dynamiquement (modules mémoire de matériel Dell) en utilisant la méthode **load**:
Voici un exemple pour obtenir plusieurs instances dynamiquement (modules mémoire de matériel Dell) en utilisant la méthode **load** :
.. code-block:: perl
@ -711,7 +713,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple pour obtenir une table snmp:
Voici un exemple pour obtenir une table SNMP :
.. code-block:: perl
@ -751,7 +753,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple pour obtenir 2 tables snmp:
Voici un exemple pour obtenir 2 tables SNMP :
.. code-block:: perl
@ -783,7 +785,7 @@ Aucun.
Exemple
^^^^^^^
Voici un exemple pour obtenir le nom d'hôte en paramètre:
Voici un exemple pour obtenir le nom d'hôte en paramètre :
.. code-block:: perl
@ -806,7 +808,7 @@ Aucun.
Exemple
^^^^^^^
Voici un exemple pour obtenir le port en paramètre:
Voici un exemple pour obtenir le port en paramètre :
.. code-block:: perl
@ -833,7 +835,7 @@ Paramètres
Exemple
^^^^^^^
Cet exemple afiche des OIDs triés:
Cet exemple afiche des OIDs triés :
.. code-block:: perl
@ -847,7 +849,7 @@ Misc
----
Cette bibliothèque fournit un ensemble de méthodes diverses.
Pour l'utiliser, vous pouvez directement utiliser le chemin de la méthode:
Pour l'utiliser, vous pouvez directement utiliser le chemin de la méthode :
.. code-block:: perl
@ -868,13 +870,13 @@ Paramètres
+-----------------+-----------------+-------------+---------------------------------------------------------+
| Paramètre | Type | Défaut | Description |
+=================+=================+=============+=========================================================+
| **-** | String | | String to strip. |
| **-** | String | | TODO String to strip. |
+-----------------+-----------------+-------------+---------------------------------------------------------+
Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **trim**:
Voici un exemple d'utilisation de la méthode **trim** :
.. code-block:: perl
@ -887,7 +889,6 @@ Voici un exemple d'utilisation de la méthode **trim**:
La sortie affiche:
::
Hello world !
Hello world !
@ -897,7 +898,7 @@ change_seconds
Description
^^^^^^^^^^^
Convertie des secondes en unité de mesure lisible.
Convertit des secondes en unité de mesure lisible.
Paramètres
^^^^^^^^^^
@ -911,7 +912,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **change_seconds**:
Voici un exemple d'utilisation de la méthode **change_seconds** :
.. code-block:: perl
@ -954,7 +955,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **backtick**:
Voici un exemple d'utilisation de la méthode **backtick** :
.. code-block:: perl
@ -1000,7 +1001,7 @@ Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **execute**.
Nous supposons que l'option ``--remote`` est activée:
Nous supposons que l'option ``--remote`` est activée :
.. code-block:: perl
@ -1011,7 +1012,7 @@ Nous supposons que l'option ``--remote`` est activée:
command_path => '/bin/',
command_options => '-l');
Output displays files in /home using ssh on a remote host.
TODO Output displays files in /home using ssh on a remote host.
windows_execute
@ -1038,7 +1039,7 @@ Paramètres
+------------------+-----------------+-------------+-----------------------------------------------------------------+
| timeout | Int | | Timeout de la commande. |
+------------------+-----------------+-------------+-----------------------------------------------------------------+
| no_quit | Int | | Ne quitte pas même si une erreur snmp se produit. |
| no_quit | Int | | Ne quitte pas même si une erreur SNMP se produit. |
+------------------+-----------------+-------------+-----------------------------------------------------------------+
@ -1055,7 +1056,7 @@ Voici un exemple d'utilisation de la méthode **windows_execute**.
command_path => '',
command_options => '/all');
La sortie affiche la configuration ip d'un hôte Windows.
La sortie affiche la configuration IP d'un hôte Windows.
---------
@ -1063,7 +1064,7 @@ Statefile
---------
Cette bibliothèque fournit un ensemble de méthodes pour utiliser un fichier de cache.
Pour l'utiliser, ajoutez la ligne suivante au début de votre **mode**:
Pour l'utiliser, ajoutez la ligne suivante au début de votre **mode** :
.. code-block:: perl
@ -1130,7 +1131,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **get**:
Voici un exemple d'utilisation de la méthode **get** :
.. code-block:: perl
@ -1152,7 +1153,7 @@ write
Description
^^^^^^^^^^^
Ecris des données dans le fichier de cache.
Ecrit des données dans le fichier de cache.
Paramètres
^^^^^^^^^^
@ -1166,7 +1167,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **write**:
Voici un exemple d'utilisation de la méthode **write** :
.. code-block:: perl
@ -1180,7 +1181,7 @@ Voici un exemple d'utilisation de la méthode **write**:
$new_datas->{last_timestamp} = time();
$self->{statefile_value}->write(data => $new_datas);
Ensuite, vous pouvez jeter un oeil dans le fichier '/var/lib/centreon/centplugins/my_cache_file', le timestamp y est écris.
Ensuite, vous pouvez voir le résultat dans le fichier '/var/lib/centreon/centplugins/my_cache_file', le timestamp y est écrit.
----
@ -1188,13 +1189,13 @@ Http
----
Cette bibliothèque fournit un ensemble de méthodes pour utiliser le protocole HTTP.
Pour l'utiliser, ajoutez la ligne suivante au début de votre **mode**:
Pour l'utiliser, ajoutez la ligne suivante au début de votre **mode** :
.. code-block:: perl
use centreon::plugins::httplib;
Certaines options doivent être spécifiées dans **plugin.pm**:
Certaines options doivent être spécifiées dans **plugin.pm** :
+-----------------+-----------------+----------------------------------------------------------------------+
| Option | Type | Description |
@ -1224,7 +1225,7 @@ connect
Description
^^^^^^^^^^^
Teste la connection vers une url http.
Teste la connexion vers une url http.
Retourne le contenu de la page web.
Paramètres
@ -1236,7 +1237,7 @@ Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **connect**.
Nous supposons que ces options sont définies:
Nous supposons que ces options sont définies :
* --hostname = 'google.com'
* --urlpath = '/'
* --proto = 'http'
@ -1255,7 +1256,7 @@ Dbi
---
Cette bibliothèque vous permet de vous connecter à une ou plusieurs bases de données.
Pour l'utiliser, ajoutez la ligne suivante au début de votre **plugin.pm**:
Pour l'utiliser, ajoutez la ligne suivante au début de votre **plugin.pm** :
.. code-block:: perl
@ -1267,15 +1268,17 @@ connect
Description
^^^^^^^^^^^
Se connecter à une ou plusieurs bases de données.
Se connecte à une ou plusieurs bases de données.
Paramètres
^^^^^^^^^^
TODO, sans doute pas SNMP dans le tableau ci dessous.
+-------------------+-----------------+-------------+---------------------------------------------------------+
| Paramètre | Type | Défaut | Description |
+===================+=================+=============+=========================================================+
| dontquit | Int (0 or 1) | 0 | Ne quitte pas même si une erreur snmp se produit. |
| dontquit | Int (0 or 1) | 0 | Ne quitte pas même si une erreur SNMP se produit. |
+-------------------+-----------------+-------------+---------------------------------------------------------+
Exemple
@ -1283,7 +1286,9 @@ Exemple
Voici un exemple d'utilisation de la méthode **connect**.
Dans plugin.pm:
TODO format de la chaîne de connexion ?
Dans plugin.pm :
.. code-block:: perl
@ -1305,7 +1310,7 @@ query
Description
^^^^^^^^^^^
Exécute une requête sql sur la base de données.
Exécute une requête SQL sur la base de données.
Paramètres
^^^^^^^^^^
@ -1319,7 +1324,7 @@ Paramètres
Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **query**:
Voici un exemple d'utilisation de la méthode **query** :
.. code-block:: perl
@ -1348,7 +1353,7 @@ Aucun.
Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **fetchrow_array**:
Voici un exemple d'utilisation de la méthode **fetchrow_array** :
.. code-block:: perl
@ -1366,7 +1371,7 @@ fetchall_arrayref
Description
^^^^^^^^^^^
Retourne un tableau à partir d'une requête sql.
Retourne un tableau à partir d'une requête SQL.
Paramètres
^^^^^^^^^^
@ -1376,7 +1381,7 @@ Aucun.
Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **fetchrow_array**:
Voici un exemple d'utilisation de la méthode **fetchrow_array** :
.. code-block:: perl
@ -1405,7 +1410,7 @@ fetchrow_hashref
Description
^^^^^^^^^^^
Retourne une table de hashage à partir d'une requête sql.
Retourne une table de hashage à partir d'une requête SQL.
Paramètres
^^^^^^^^^^
@ -1415,7 +1420,7 @@ Aucun.
Exemple
^^^^^^^
Voici un exemple d'utilisation de la méthode **fetchrow_hashref**:
Voici un exemple d'utilisation de la méthode **fetchrow_hashref** :
.. code-block:: perl
@ -1427,7 +1432,7 @@ Voici un exemple d'utilisation de la méthode **fetchrow_hashref**:
print $row->{datname}."\n";
}
La sortie affiche la liste des base de données Postgres.
La sortie affiche la liste des bases de données Postgres.
*****************
@ -1442,13 +1447,13 @@ Description
-----------
| Cet exemple explique comment vérifier une valeur SNMP unique sur un pare-feu PfSense (paquets supprimés pour cause de surcharge mémoire).
| Nous utilisons un fiçhier de cache car c'est un compteur SNMP. Nous avons donc besoin d'obtenir la valuer différentielle en tre 2 contrôles.
| Nous récupérons la valeur et la comparons aux seuils dégradé et critique.
| Nous utilisons un fichier de cache car c'est un compteur SNMP. Nous avons donc besoin d'obtenir la valeur différentielle entre 2 contrôles.
| Nous récupérons la valeur et la comparons aux seuils Dégradé et Critique.
Fichier du plugin
-----------------
Tout d'abord, créez le dossier du plugin, ainsi que le fichier du plugin:
Tout d'abord, créez le dossier du plugin, ainsi que le fichier du plugin :
::
$ mkdir -p apps/pfsense/snmp
@ -1457,7 +1462,7 @@ Tout d'abord, créez le dossier du plugin, ainsi que le fichier du plugin:
.. tip::
PfSense est un pare-feu applicatif et nous le contrôlons en utilisant le protocole SNMP
Ensuite, éditez **plugin.pm** et ajoutez les lignes suivantes:
Ensuite, éditez **plugin.pm** et ajoutez les lignes suivantes :
.. code-block:: perl
@ -1508,7 +1513,7 @@ Ensuite, éditez **plugin.pm** et ajoutez les lignes suivantes:
.. tip::
N'oubliez pas de modifier la ligne 'Authors'.
Ajoutez la méthode **new** pour instancier le plugin:
Ajoutez la méthode **new** pour instancier le plugin :
.. code-block:: perl
@ -1530,13 +1535,13 @@ Ajoutez la méthode **new** pour instancier le plugin:
return $self;
}
Déclarez ce plugin en tant que module perl:
Déclarez ce plugin en tant que module perl :
.. code-block:: perl
1;
Ajoutez une description au plugin:
Ajoutez une description au plugin :
.. code-block:: perl
@ -1556,13 +1561,13 @@ Ajoutez une description au plugin:
Fichier du mode
---------------
Ensuite, créez le répertoire du mode, ainsi que le fichier du mode:
Ensuite, créez le répertoire du mode, ainsi que le fichier du mode :
::
$ mkdir apps/pfsense/snmp/mode
$ touch apps/pfsense/snmp/mode/memorydroppedpackets.pm
Editez **memorydroppedpackets.pm** et ajoutez les lignes suivantes:
Editez **memorydroppedpackets.pm** et ajoutez les lignes suivantes :
.. code-block:: perl
@ -1617,7 +1622,7 @@ Editez **memorydroppedpackets.pm** et ajoutez les lignes suivantes:
# Bibliothèque nécessaire pour utiliser un fichier de cache
use centreon::plugins::statefile;
Ajoutez la méthode **new** pour instancier le mode:
Ajoutez la méthode **new** pour instancier le mode :
.. code-block:: perl
@ -1647,7 +1652,7 @@ Ajoutez la méthode **new** pour instancier le mode:
Une valeur par défaut peut être ajoutée aux options.
Exemple : "warning:s" => { name => 'warning', default => '80'},
Ajoutez la méthode **check_options** pour valider les options:
Ajoutez la méthode **check_options** pour valider les options :
.. code-block:: perl
@ -1669,7 +1674,7 @@ Ajoutez la méthode **check_options** pour valider les options:
$self->{statefile_value}->check_options(%options);
}
Ajoutez la méthode **run** pour exécuter le mode:
Ajoutez la méthode **run** pour exécuter le mode :
.. code-block:: perl
@ -1745,13 +1750,13 @@ Ajoutez la méthode **run** pour exécuter le mode:
$self->{output}->exit();
}
Déclarez ce mode comme un module perl:
Déclarez ce mode comme un module perl :
.. code-block:: perl
1;
Ajoutez une description aux options du mode:
Ajoutez une description aux options du mode :
.. code-block:: perl
@ -1779,12 +1784,12 @@ Ajoutez une description aux options du mode:
Ligne de commande
-----------------
Voici un exemple de ligne de commande:
Voici un exemple de ligne de commande :
::
$ perl centreon_plugins.pl --plugin apps::pfsense::snmp::plugin --mode memory-dropped-packets --hostname 192.168.0.1 --snmp-community 'public' --snmp-version '2c' --warning '1' --critical '2'
La sortie pourrait afficher:
La sortie pourrait afficher :
::
OK: Dropped packets due to memory limitations : 0.00 /s | dropped_packets_Per_Sec=0.00;0;;1;2