Aller au contenu principal

Versa Director Restapi

Vue d'ensemble​

Versa Director est la plateforme de management, supervision et d'orchestration pour délivrer les services de sécurité et de réseau VNF de la suite Versa Networks.

Le connecteur de supervision Centreon utilise l'API de Versa Director pour se connecter et récupérer des informations et des métriques relatives aux équipements Versa.

Vous trouverez plus d'information à propos de l'API Versa Director sur la documentation officielle : https://apidocs.versa-networks.com/

Contenu du connecteur de supervision​

Elements supervisés​

  • Versa Networks devices

Règles de découvertes​

Nom de la règleDescription
Net-Versa-Director-Restapi-HostDiscovery-devicesDécouvrez vos équipements Versa managés par un Versa Director

Métriques Collectées​

  • Global
Metric nameDescriptionUnit
statusStatus of the device
memory.usage.bytesMemory usage on the deviceB
memory.free.bytesFree memory on the deviceB
memory.usage.percentagePercentage of memory usage on the device%
disk.usage.bytesDisk usage on the deviceB
disk.free.bytesFree disk space on the deviceB
disk.usage.percentagePercentage of disk usage on the device%
alarms.critical.countNumber of critical alarms on the deviceCount
alarms.major.countNumber of major alarms on the deviceCount
alarms.minor.countNumber of minor alarms on the deviceCount
alarms.warning.countNumber of warning alarms on the deviceCount
alarms.indeterminate.countNumber of indeterminate alarms on the deviceCount
policy.violation.packets.dropped.novalidlink.countNumber of packets dropped by no valid linkCount
policy.violation.packets.dropped.slaaction.countNumber of packets dropped by sla actionCount
  • Per health monitor. monitor-name are 'bgp', 'config', 'ike', 'interface', 'port', 'path', 'reachability', 'service'.
Metric nameDescriptionUnit
<monitor-name>.health.up.countNumber of health monitors upCount
<monitor-name>.health.disabled.countNumber of health monitors disabledCount
<monitor-name>.health.down.countNumber of health monitors downCount

Prérequis​

API​

l'API doit être activée et démarrée sur le Versa Director. Référencez-vous à la documentation officielle de Versa Networks pour l'activation de l'API.

Flux réseaux​

La communication doit être possible sur le port TCP 9182 (en HTTPS) depuis le collecteur Centreon vers le Versa Director.

Installation​

  1. Installer le Plugin sur l'ensemble des collecteurs Centreon supervisant des équipements Versa via l'API du Versa Director :
yum install centreon-plugin-Network-Versa-Director-Restapi
  1. Installer le connecteur de supervision Versa Director Restapi depuis la page Configuration > Gestionnaire de connecteurs de supervision sur l'interface Web de Centreon.

Configuration​

  • Depuis l'interface Web de Centreon, ajoutez un nouvel Hôte depuis la page "Configuration > Hôtes".
  • Appliquez le modèle Net-Versa-Director-Device-Restapi-custom et configurez tous les macros nécessaires :
MandatoryNameDescription
XDIRECTORAPIPORTPort used. Default: 9182
XDIRECTORAPIPROTOProtocol used. Default: https
XDIRECTORAPIORGANIZATIONLinked organizations of the device. Default: .*
XDIRECTORAPIHOSTNAMEHostname of the Versa Director.
XDIRECTORAPIUSERNAMEUsername to access to the API.
XDIRECTORAPIPASSWORDPassword to access to the API.
XDIRECTORAPIDEVICENAMEName of the Versa device.
DIRECTORAPIEXTRAOPTIONSAny extra option you may want to add to the command (eg. a --verbose flag)
PROXYURLProxy URL. (eg. http://myproxy.int:3128)

Utiliez le module de découverte pour ajouter à votre supervision vos équipements Versa. Allez dans le menu "Configuration > Host > Discovery" et utilisez le provider Versa Networks devices (Director RestAPI)

FAQ​

Comment tester un contrôle en ligne de commande et que signifient les options principales ?​

Une fois le Plugin installé, vous pouvez tester directement celui-ci en ligne de commande depuis votre collecteur Centreon avec l'utilisateur centreon-engine:

/usr/lib/centreon/plugins//centreon_versa_director_restapi.pl \
--plugin=network::versa::director::restapi::plugin \
--mode=devices \
--hostname=10.0.0.1 \
--port='9182' \
--proto='https' \
--api-username='jdoe' \
--api-password='6fbadZEJbsLG' \
--organization='.*' \
--filter-device-name='^CENFRGW101$' \
--warning-status='' \
--critical-status='%{ping_status} ne "reachable" or %{services_status} ne "good"' \
--verbose

La commande retourne le message de sortie ci-dessous:

OK: Device 'CENFRGW101' status services: good [ping: reachable] [sync: in_sync] [path: unavailable] [controller: unavailable] -
memory total: 31.42 GB used: 11.49 GB (36.57%) free: 19.93 GB (63.43%) - disk total: 250.00 B used: 18.00 B (7.20%) free: 232.00 B (92.80%) -
alarms critical: 0, major: 0, minor: 0, warning: 0, indeterminate: 0 -
policy violation packets-dropped-novalidlink : 0, packets-dropped-slaaction : 0 -
all health monitors are ok | 'devices.total.count'=1;;;0; 'CENFRGW101#memory.usage.bytes'=12337293557B;;;0;33736968110.08
'CENFRGW101#memory.free.bytes'=21399674552B;;;0;33736968110.08 'CENFRGW101#memory.usage.percentage'=36.57;;;0;100
'CENFRGW101#disk.usage.bytes'=18B;;;0;250 'CENFRGW101#disk.free.bytes'=232B;;;0;250
'CENFRGW101#disk.usage.percentage'=7.20;;;0;100 'CENFRGW101#alarms.critical.count'=0;;;0;
'CENFRGW101#alarms.major.count'=0;;;0; 'CENFRGW101#alarms.minor.count'=0;;;0; 'CENFRGW101#alarms.warning.count'=0;;;0;
'CENFRGW101#alarms.indeterminate.count'=0;;;0; 'CENFRGW101~bgp adjacencies#health.up.count'=3;;;0;3
'CENFRGW101~bgp adjacencies#health.down.count'=0;;;0;3 'CENFRGW101~bgp adjacencies#health.disabled.count'=0;;;0;3
'CENFRGW101~config sync status#health.up.count'=1;;;0;1 'CENFRGW101~config sync status#health.down.count'=0;;;0;1
'CENFRGW101~config sync status#health.disabled.count'=0;;;0;1 'CENFRGW101~ike status#health.up.count'=2;;;0;2
'CENFRGW101~ike status#health.down.count'=0;;;0;2 'CENFRGW101~ike status#health.disabled.count'=0;;;0;2
'CENFRGW101~interfaces#health.up.count'=3;;;0;3 'CENFRGW101~interfaces#health.down.count'=0;;;0;3
'CENFRGW101~interfaces#health.disabled.count'=0;;;0;3 'CENFRGW101~paths#health.up.count'=24;;;0;24
'CENFRGW101~paths#health.down.count'=0;;;0;24 'CENFRGW101~paths#health.disabled.count'=0;;;0;24
'CENFRGW101~physical ports#health.up.count'=0;;;0;0 'CENFRGW101~physical ports#health.down.count'=0;;;0;0
'CENFRGW101~physical ports#health.disabled.count'=0;;;0;0 'CENFRGW101~reachability status#health.up.count'=1;;;0;1
'CENFRGW101~reachability status#health.down.count'=0;;;0;1 'CENFRGW101~reachability status#health.disabled.count'=0;;;0;1
'CENFRGW101~service status#health.up.count'=1;;;0;1 'CENFRGW101~service status#health.down.count'=0;;;0;1
'CENFRGW101~service status#health.disabled.count'=0;;;0;1
checking device 'CENFRGW101' [type: hub]
status services: good [ping: reachable] [sync: in_sync] [path: unavailable] [controller: unavailable]
memory total: 31.42 GB used: 11.49 GB (36.57%) free: 19.93 GB (63.43%)
disk total: 250.00 B used: 18.00 B (7.20%) free: 232.00 B (92.80%)
alarms critical: 0, major: 0, minor: 0, warning: 0, indeterminate: 0
policy violation packets-dropped-novalidlink : 0, packets-dropped-slaaction : 0
health monitor 'bgp adjacencies' up: 3, down: 0, disabled: 0
health monitor 'config sync status' up: 1, down: 0, disabled: 0
health monitor 'ike status' up: 2, down: 0, disabled: 0
health monitor 'interfaces' up: 3, down: 0, disabled: 0
health monitor 'paths' up: 24, down: 0, disabled: 0
health monitor 'physical ports' up: 0, down: 0, disabled: 0
health monitor 'reachability status' up: 1, down: 0, disabled: 0
health monitor 'service status' up: 1, down: 0, disabled: 0

Cette commande supervise un équipement Versa Networks CENFRGW101 (--filter-device-name='^CENFRGW101$') à l'aide l'API Versa Director (--plugin=network::versa::director::restapi::plugin --mode=devices). Le plugin requête l'API du Versa Director 10.0.0.1 (--hostname=10.0.0.1) avec l'utilisateur jdoe et son mot de passe (--api-username='jdoe' --api-password='6fbadZEJbsLG'). Un équipement Versa peut être lié à plusieurs organisations, nous utilisons une wildcard (--organization='.*').

Cette commande retournera une alerte CRITICAL (--critical-status='%{ping_status} ne "reachable" or %{services_status} ne "good"') si :

  • Le 'ping status' de l'équipement est différent de reachable
  • Le 'service_status' de l'équipement est différent de good

Des seuils peuvent être positionnés à l'aide des options --warning-* et --critical-* sur les métriques.

Pour chaque mode, les options disponibles peuvent être consultées en ajoutant l'option --help à la commande:

/usr/lib/centreon/plugins/centreon_versa_snmp.pl \
--plugin=network::versa::director::restapi::plugin \
--mode=devices \
--help

J'obtiens le message d'erreur suivant:​

UNKNOWN: 500 Can't connect to myversadirector:9182 |​

Lors du déploiement de mes contrôles, j'obtiens le message suivant UNKNOWN: 500 Can't connect to myversadirector:9182 |. Cela signifie que Centreon n'a pas réussi à se connecter à l'API du Versa Director. La plupart du temps, il faut préciser le proxy à utiliser pour requêter l'API du Versa Director en utilisant l'option --proxyurl='http://proxy.mycompany:8080'.

UNKNOWN: 501 Protocol scheme 'connect' is not supported |​

Suite à la mise en place du proxy, j'obtiens le message suivant UNKNOWN: 501 Protocol scheme 'connect' is not supported | Cela signifie que le protocole de connexion au proxy n'est pas supporté par la libraire LWP utlisée par défaut par le Plugin Centreon. Cette erreur peut être résolue en utilisant le backend HTTP curl. Pour ce faire, ajoutez l'option --http-backend='curl' à la commande.

UNKNOWN: Cannot load module 'Net::Curl::Easy'​

Ce message d'erreur indique qu'une librairie Perl est maquante pour utiliser le backend curl. Pour corriger ce problème, installer la librairie Perl Net::Curl::Easy à l'aide de la commande suivante :

yum install perl-Net-Curl