Vous êtes ici:

Menu


Stacks Image 16138
Le modules os correspond à la supervision des systèmes d'exploitations. Nouveauté par rapport à la version béta 1.0, le module peut s'exécuter en mode local et en mode distant avec les protocoles SMNP et SSH. La vitesse d'exécution du plugin est bien plus performant en mode local comme nous aurons l'occasion de le constater. Pour l'utilisation en mode SNMP, le plugin aura donc besoin des modules du dossier snmp_standard. L'option remote permet d'utiliser le protocole SSH pour exécuter les commandes de vérifications sur un hôte distant. Actuellement, le module os s'est enrichi de plusieurs sous-modules de système d'exploitation : Aix, FreeBsd, Linux, Solaris et Windows.
Voici les principales fonctionnalités. Nous verrons ensuite la configuration du plugin dans Centreon, nous utiliserons le protocole SNMP v2c pour l'instant. Par convention, le dossier des plugins Centreon est positionné dans /usr/lib/centreon/plugins.

1 Le module os::linux

Stacks Image 16157
Différentes façons d'utiliser le module

1.1 Mode Local

Voici les principaux mode de supervision de ce plugin. le paramètre --hostname est optionnel lorsque nous exécutons le plugin sur le serveur hôte. Le mode cmd-return fera l'objet d'un projet article.
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --list-mode

....
Modes Available:
cmd-return
connections
cpu
cpu-detailed
diskio
files-date
files-size
inodes
list-interfaces
list-partitions
list-storages
load
memory
packet-errors
paging
process
quota
storage
swap
systemd-sc-status
traffic
uptime

Exemple d’utilisation des plugins

Voici une liste d’exemples des nouveaux plugins centreon.

/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=list-storages --filter-type "tmpfs" --hostname 127.0.0.1
résultat
List storages: name = /dev [fs = udev, type = devtmpfs], name = /run [fs = tmpfs, type = tmpfs], name = /run/lock [fs = tmpfs, type = tmpfs], name = /run/shm [fs = tmpfs, type = tmpfs] |
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=diskio --name sda2 --hostname 127.0.0.1
résultat
OK: Partition 'sda2' Read I/O : 0.00B/s, Write I/O : 0.00B/s, Write Time : 0 ms, Read Time : 0 ms, %Utils: 0.00 % | 'readio'=0.00B/s;;;0; 'writeio'=0.00B/s;;;0; 'readtime'=0ms;;;0; 'writetime'=0ms;;;0; 'utils'=0.00%;;;0;100
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=uptime --hostname 127.0.0.1
résultat
OK: System uptime is: 1 days | 'uptime'=169089;;;0;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=swap --hostname 127.0.0.1
résultat
OK: Swap Total: 448.00 MB Used: 92.97 MB (20.75%) Free: 355.02 MB (79.25%) | 'used'=97488896;;;0;469757952
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=load --hostname 127.0.0.1
résultat
OK: Load average: 0.00, 0.07, 0.21| 'load1'=0.00;;;0;; 'load5'=0.07;;;0;; 'load15'=0.21;;;0;;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=traffic --hostname 127.0.0.1
résultat
OK: All traffic are ok. | 'traffic_in_eth0'=1704.00b/s;;;0; 'traffic_out_eth0'=2136.00b/s;;;0; 'traffic_in_lo'=2024.00b/s;;;0; 'traffic_out_lo'=2024.00b/s;;;0;

cpu

/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=cpu --hostname 127.0.0.1
résultat
OK: CPU(s) average usage is: 6.52% | 'cpu0'=6.52%;;;0;100 'total_cpu_avg'=6.52%;;;0;100
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=inodes --name /var --hostname 127.0.0.1
résultat
OK: Inodes partition '/var' Used: 6 %  Free: 94 % | 'used'=6%;;;0;100
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=list-interfaces --hostname 127.0.0.1
résultat
List interfaces: name = eth0 [state = RU], name = lo [state = RU] |
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=files-size --files /etc/postfix/main.cf
résultat
OK: All file/directory sizes are ok. | '/etc/postfix/main.cf'=958B;;;0; 'total'=958B;;;0;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=files-date --files /etc/postfix/main.cf
résultat
OK: All file/directory times are ok. | '/etc/postfix/main.cf'=616652s;;;;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=list-partitions --filter-name sda*
résultat
List partitions: name = sda, name = sda1, name = sda2, name = sda5 |
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=process --hostname 127.0.0.1 --filter-command apache2
résultat
OK: Number of current processes: 105 | 'nbproc'=105;;;0;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=packet-errors --name eth0
résultat
OK: Interface 'eth0' Packets Out Error : 0.00 % (0), Out Discard : 0.00 % (0), In Discard : 0.00 % (0), In Error : 100.00 % (5) | 'packets_error_out'=0.00%;;;0;100 'packets_discard_out'=0.00%;;;0;100 'packets_discard_in'=0.00%;;;0;100 'packets_error_in'=100.00%;;;0;100
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=memory
résultat
OK: Ram used (-buffers/cache) 104.50 MB (42.05%), Buffer: 2.03 MB, Cached: 65.20 MB | 'cached'=68370432;;;0; 'buffer'=2125824;;;0; 'used'=109572096;;;0;260599808
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=storage --name /var
résultat
OK: Storage '/var' Total: 1.31 GB Used: 636.08 MB (47.52%) Free: 702.52 MB (52.48%) | 'used'=666976256B;;;0;1403621376
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=connections --service="ssh,,,22,,,,10,20"
résultat
OK: Service 'ssh' connections: 2 - Total connections: 6 | 'service_ssh'=2;0:10;0:20;0; 'total'=6;;;0; 'con_timeWait'=0;;;0; 'con_synSent'=0;;;0; 'con_closed'=0;;;0; 'con_finWait2'=0;;;0; 'con_closing'=0;;;0; 'con_closeWait'=0;;;0; 'con_established'=6;;;0; 'con_finWait1'=0;;;0; 'con_listen'=7;;;0; 'con_synReceived'=0;;;0; 'con_lastAck'=0;;;0;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=cpu-detailed --hostname 127.0.0.1
résultat
OK: CPUs usages are ok. | 'cpu0_user'=6.56%;;;0;100 'cpu0_nice'=0.00%;;;0;100 'cpu0_system'=1.09%;;;0;100 'cpu0_idle'=92.35%;;;0;100 'cpu0_wait'=0.00%;;;0;100 'cpu0_interrupt'=0.00%;;;0;100 'cpu0_softirq'=0.00%;;;0;100 'cpu0_steal'=0.00%;;;0;100 'cpu0_guest'=0.00%;;;0;100 'cpu0_guestnice'=0.00%;;;0;100 'total_cpu_guest_avg'=0.00%;;;0;100 'total_cpu_guestnice_avg'=0.00%;;;0;100 'total_cpu_idle_avg'=92.35%;;;0;100 'total_cpu_interrupt_avg'=0.00%;;;0;100 'total_cpu_nice_avg'=0.00%;;;0;100 'total_cpu_softirq_avg'=0.00%;;;0;100 'total_cpu_steal_avg'=0.00%;;;0;100 'total_cpu_system_avg'=1.09%;;;0;100 'total_cpu_user_avg'=6.56%;;;0;100 'total_cpu_wait_avg'=0.00%;;;0;100
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=paging --hostname 127.0.0.1
résultat
OK: Paging pgfault : 2.03 MB/s, pgmajfault : 0.00 B/s, pgpgin : 0.00 B/s, pgpgout : 17.33 KB/s, pswpin : 0.00 B/s, pswpout : 0.00 B/s | 'pgfault'=2127872B/s;;;0; 'pgmajfault'=0B/s;;;0; 'pgpgin'=0B/s;;;0; 'pgpgout'=17749B/s;;;0; 'pswpin'=0B/s;;;0; 'pswpout'=0B/s;;;0;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=quota --hostname=127.0.0.1
résultat
OK: All quotas are ok | 'data_used_centreon./dev/mapper/vg_poller133-LogVol01'=4096B;;;0; 'inode_used_centreon./dev/mapper/vg_poller133-LogVol01'=1B;;;0; 'data_used_root./dev/mapper/vg_poller133-LogVol01'=16384B;;;0; 'inode_used_root./dev/mapper/vg_poller133-LogVol01'=1B;;;0;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::local::plugin --mode=systemd-sc-status --hostname=127.0.0.1
résultat
CRITICAL: Service 'dsmd.service' status : loaded/failed/failed - Service 'mysql.service' status : loaded/failed/failed | 'total_running'=31;;;0;231 'total_failed'=2;;;0;231 'total_dead'=48;;;0;231 'total_exited'=27;;;0;231
Vous trouverez un exemple de configuration avec ce lien.
 

1.1a Mode cmd-return

Le mode cmd-return mérite que l'on s'y attarde. Cette commande permet de réaliser des tests en shell. Par exemple, tester la présence d'un fichier ou d'un dossier sur un serveur. On pourra paramétré le message de sortie de la sonde avec une syntaxe que l'on nous allons découvrir ci-dessous. Nous allons débuter par un test de présence d'un dossier. La syntaxe sera la suivante :
centreon_plugins.pl --plugin=os::linux::local::plugin --mode=cmd-return --command=[commande shell] --command-options=[expression de test] --manage-returns='0,OK,Test réussi#1,CRITICAL,Test non réussi#,UNKNOWN,Erreur dans le test'

Tester la présence d'un fichier sur un système Linux

Nous utiliserons comme commande de test, la commande shell test et comme expression '-d /var/log/centreon' qui va tester la présence du dossier /var/log/centreon. Voici la commande exacte et son résultat :
./centreon_plugins.pl --plugin=os::linux::local::plugin --mode=cmd-return --command=test --command-options='-d /var/log/centreon' --manage-returns='0,OK,Directory /var/log/centreon exist#1,CRITICAL,Directory /var/log/centreon no exist#,UNKNOWN,Command problem'
OK: Directory /var/log/centreon exist | 'code'=0;;;;
Pour tester la présence d'un fichier, on utilisera la commande suivante :
./centreon_plugins.pl --plugin=os::linux::local::plugin --mode=cmd-return --command=test --command-options='-e /root/essai' --manage-returns='0,OK,File /root/essai exist#1,CRITICAL,File /root/essai no exist#,UNKNOWN,Command problem'
CRITICAL: File /root/essai no exist | 'code'=1;;;;
Il est possible de lancer la commande sur un serveur distant grâce à l'option remote. Nous établirons une connexion shh entre le serveur de supervision et le serveur distant. Nous allons prendre la cas d'un test de présence de fichier sur un serveur Linux distant. Comme le moteur de supervision utilise le user centreon-engine, nous allons établir une connexion sécurisée entre les deux serveurs avec le même user. Créez le user centreon-engine au besoin sur le serveur distant. Copier la clé ssh sur celui-ci afin de permettre une connexion ssh sans mot de passe. Il suffira maintenant de lancer cette commande pour exécuter la commande à distance.
./centreon_plugins.pl --plugin=os::linux::local::plugin --mode=cmd-return --command=test --command-options='-e /var/log/centreon-engine/essai' --manage-returns='0,OK,File /var/log/centreon-engine/essai exist#1,CRITICAL,File /var/log/centreon-engine/essai no exist#,UNKNOWN,Command problem' --remote --hostname=172.16.209.232 --ssh-option='-l=centreon-engine'
OK: File /var/log/centreon-engine/essai exist | 'code'=0;;;;

Tester la présence d'un fichier sur un serveur Web

On peut aussi tester la présence d'un fichier sur une page Web avec curl. Cette méthode évite le téléchargement du fichier comme le ferait la commande wget. Voici la commande pour vérifier si un fichier est disponible sur une page Web.
./centreon_plugins.pl --plugin=os::linux::local::plugin --mode=cmd-return --command=curl --command-options='-sfI "http://localhost/test/fichier.mp3"' --manage-returns='0,OK,File exist#22,CRITICAL,File no exist#,UNKNOWN,Command problem'

Présence du fichier
OK: File exist | 'code'=0;;;;

Fichier inexistant
CRITICAL: File no exist | 'code'=22;;;;
Vous avez remarqué que le code de sortie pour l'état CRITICAL n'est pas à 1 mais 22. Le réglage a été possible grâce à la vérification du code de sortie en utilisant la commande suivante après l'exécution de la commande curl.
curl -sfI "http://localhost/test/fichier_manquant.mp3"
# echo $?
22

1.2 Mode local avec l’option remote

L'option remote nous permettra d'utiliser le mode local pour superviser un hôte Linux distant grâce au protocole ssh. Nous aurons besoins d'une clé publique et d'une session utilisateur sur l'hôte distant. La syntaxe des commandes sera identique au mode local, nous devrons rajouter les options pour la connexion SSH comme ci-dessous :
centreon_plugins.pl --plugin=os::linux::local::plugin --remote --hostname=[IP host linux] --ssh-option='-l=[user ssh]'  --mode=[uptime|swap|memory|....]
Vous trouverez un exemple de configuration avec ce lien.

1.2 Mode snmp

Le mode snmp sera en tout point identique au mode local. La différence vient du fait que nous utiliserons le protocole SNMP pour communiquer avec des machines distantes. Quelques modes de supervision ne sont plus accessibles comme files-size, files-date, list-partitions, cmd-return. D'autres sont modifiés comme process devenu processcount et d'autres sont ajoutés comme list-diskpath
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --list-mode

....
Modes Available:
cpu
cpu-detailed
disk-usage
diskio
inodes
interfaces
list-diskspath
list-interfaces
list-storages
load
memory
processcount
storage
swap
tcpcon
time
uptime
Les paramètres requis pour le SNMP V2c seront --snmp-version pour le numéro de version (2 en l'occurrence) et --snmp-community pour le nom de la communauté.

Exemple d’utilisation des plugins

Voici une liste d’exemples des nouveaux plugins centreon avec l'option snmp.

/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=uptime --host=172.16.209.214 --snmp-community=public --snmp-version=2
résultat
OK: System uptime is: 0 days | 'uptime'=8152;;;0;

cpu

/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=cpu --host=172.16.209.214 --snmp-community=public --snmp-version=2
résultat
OK: CPU(s) average usage is: 1.00% | 'cpu2'=1.00;;;0;100 'total_cpu_avg'=1.00;;;0;100
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=processcount --process-name=apache2  --host=172.16.209.138 --snmp-community=public --snmp-version=2
résultat
OK: Number of current processes running: 11 | 'nbproc'=11;;;0;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=time --hostname=172.16.209.214 --snmp-version=2 --snmp-community=public
résultat
OK: Time offset 7200 second(s) | 'offset'=7200s;;;;
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=storage  --host=172.16.209.214 --snmp-community=public --snmp-version=2
résultat
OK: All storages are ok. | 'used_/dev'=0B;;;0;10485760 'used_/'=157321216B;;;0;337134592 'used_/boot'=18357248B;;;0;238787584 'used_/home'=263553024B;;;0;3719610368 'used_/tmp'=12111872B;;;0;304624640 'used_/usr'=2080595968B;;;0;3608182784 'used_/var'=592556032B;;;0;1754546176
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=storage --name --regexp --storage=^/var  --host=172.16.209.138 --snmp-community=public --snmp-version=2
résultat
OK: Storage '/var' Total: 1.63 GB Used: 565.24 MB (33.78%) Free: 1.08 GB (66.22%) | 'used'=592695296B;;;0;1754546176
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=interfaces --oid-filter=ifDesc --oid-display=ifdesc  --host=172.16.209.138 --snmp-community=public --snmp-version=2
résultat
OK: All interfaces are ok |
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::windows::snmp::plugin --mode=traffic --oid-filter=ifDesc --oid-display=ifdesc  --host=172.16.209.214 --snmp-community=public --snmp-version=2 --interface=65539
résultat
OK: Interface 'Connexion r\xE9seau Intel(R) PRO/1000 MT' Traffic In : 0.00b/s (0.00 %), Out : 0.00b/s (0.00 %)  | 'traffic_in'=0.00b/s;;;0;1000000000 'traffic_out'=0.00b/s;;;0;1000000000
/usr/lib/centreon/plugins/centreon_plugins.pl --plugin=os::linux::snmp::plugin --mode=list-storages --filter-storage-type 'hrStorageFixedDisk' --hostname=172.16.209.138 --snmp-version=2 --snmp-community=public
résultat
List storage:
Skipping storage 'Physical memory': no type or no matching filter type
Skipping storage 'Swap space': no type or no matching filter type
Skipping storage 'Virtual memory': no type or no matching filter type
'/dev' [size = 10485760B] [id = 31]
'/' [size = 337134592B] [id = 32]
'/boot' [size = 238787584B] [id = 33]
'/home' [size = 3719610368B] [id = 34]
'/tmp' [size = 304624640B] [id = 35]
'/usr' [size = 3608182784B] [id = 36]
'/var' [size = 1754546176B] [id = 37]
Skipping storage 'Memory buffers': no type or no matching filter type
Skipping storage 'Cached memory': no type or no matching filter type
Skipping storage 'Shared memory': no type or no matching filter type
Vous trouverez un exemple de configuration avec ce lien.
comments powered by Disqus
Extrait des nombreux modules de centreon_plugins
 Vous êtes ici: