Superviser la synchronisation HA de Palo Alto est une étape clé pour assurer la fiabilité, la cohérence et la sécurité de votre infrastructure réseau. Grâce à l’API REST et à la clé API Palo Alto, il est possible d’automatiser cette supervision à l’aide d’un script Perl dédié, conçu pour vérifier l’état de la synchronisation entre les membres du cluster HA.
Ce script facilite le monitoring Palo Alto en identifiant rapidement les désynchronisations de configuration. Il peut s’intégrer facilement dans des outils de supervision comme Icinga ou Centreon, offrant une solution simple, efficace et adaptable pour renforcer vos politiques de haute disponibilité.
Sommaire de l'article
- 1 Comment récupérer votre API Key sur un cluster Palo Alto
- 2 Superviser la synchronisation HA de Palo Alto avec le script check_palo_sync.pl
- 3 Explication détaillée du script check_palo_sync.pl
- 3.1 Chargement des modules nécessaires
- 3.2 Déclaration et récupération des arguments
- 3.3 Vérification des paramètres
- 3.4 Construction de l’URL API
- 3.5 Création de l’agent HTTP (avec SSL désactivé)
- 3.6 Envoi de la requête API
- 3.7 Vérifie si la requête a échoué
- 3.8 Conversion du XML en structure Perl
- 3.9 Extraction des valeurs HA
- 3.10 Analyse et retour du statut
- 4 FAQ – Superviser la synchronisation HA de Palo Alto via API
- 4.1 Comment générer une clé API Palo Alto pour le monitoring ?
- 4.2 Pourquoi superviser la synchronisation HA de Palo Alto est-il crucial ?
- 4.3 Quels outils peuvent être utilisés pour le monitoring Palo Alto ?
- 4.4 Quels indicateurs sont vérifiés par le script de supervision ?
- 4.5 Faut-il désactiver la vérification SSL dans le script ?
- 5 En bref
Comment récupérer votre API Key sur un cluster Palo Alto
La première étape sera de générer une API KEY sur vos Palo. Malheureusement, Palo Alto ne fournit pas d’OID SNMP standardisé (publié) qui retourne exactement l’état « Running Config: Synchronized » d’un cluster Palo.
Générer une clé API sur un Palo (API Key)
Avant d’utiliser les requêtes API, vous devez obtenir une clé d’authentification.
Requête :
https://<IP_DU_FIREWALL>/api/?type=keygen&user=<UTILISATEUR>&password=<MOT_DE_PASSE>
Exemple :
https://192.168.1.1/api/?type=keygen&user=admin&password=SuperPassw0rd
Réponse :
<response status="success"> <result> <key>LUFRPT0yQkZ6bGhFcE1...etc</key> </result></response>
Requête pour vérifier l’état HA (y compris “Running Config”)
Si tu veux interroger le state HA et vérifier si tu peux interroger l’API de ton Palo (équivalent CLI : show high-availability state), voici la requête :
https://<IP_DU_FIREWALL>/api/?type=op&cmd=<show><high-availability><state></state></high-availability></show>&key=<TA_CLÉ_API>
Cette requête retourne un XML contenant, entre autres : <enabled>yes</enabled><state>active</state><running-sync>Synchronised</running-sync><config-sync>Configuration is synchronized</config-sync>
Tu peux donc parser les groupes <running-sync> et/ou <config-sync>.
Exemple en ligne de commande (curl)
Tu peux aussi utiliser la commande CURL, pour récupérer les informations sur un Palo.
curl -k 'https://192.168.1.1/api/?type=op&cmd=<show><high-availability><state></state></high-availability></show>&key=LUFRPT0yQkZ6bGhFcE1...'
Astuces
- L’API est disponible par défaut, tant que l’utilisateur a les droits API.
- La bonne pratique est d’utiliser un compte admin read-only si tu veux juste monitorer ton Palo.
- L’API est XML-based par défaut, mais on peut aussi utiliser le mode JSON (à partir de PAN‑OS 9.1+ avec l’option &format=json)
Format XML-Based
Superviser la synchronisation HA de Palo Alto avec le script check_palo_sync.pl
Objectif
Le script check_palo_sync.pl est un plugin de supervision compatible Icinga/Nagios, utilisé pour vérifier l’état de synchronisation HA (High Availability) entre les membres d’un cluster Palo Alto (physique ou virtuel), via l’API XML du pare-feu.
Il vérifie deux indicateurs fournis par l’API :
- running-sync: indique si les configurations sont synchronisées
- running-sync-enabled: indique si la synchronisation est activée
Fonctionnement
Le script :
- Interroge l’API Palo Alto via HTTPS.
- Désactive la vérification SSL pour accepter les certificats auto-signés.
- Parse la réponse XML.
- Évalue les deux champs HA.
- Retourne un code de sortie Nagios/Icinga (OK, WARNING, CRITICAL, UNKNOWN).
API utilisée
Le script utilise l’URL suivante :
https://<firewall_ip>/api/?type=op&cmd=<show><high-availability><state></state></high-availability></show>&key=<api_key>
Le résultat XML contient une structure de ce type :
<result> <group> <running-sync>synchronized</running-sync> <running-sync-enabled>yes</running-sync-enabled> </group></result>
Conditions de sortie pour le plugin
| État HA | Code Icinga | Message renvoyé |
| Sync activée et à jour | OK (0) | OK – Configuration HA synchronisée |
| Sync désactivée | WARNING (1) | WARNING – Synchronisation HA désactivée |
| Sync activée mais pas synchro | CRITICAL (2) | CRITICAL – Synchronisation HA NON synchronisée |
| Erreur de requête/API | CRITICAL (2) | CRITICAL – Erreur HTTP … |
| Mauvais usage ou paramètre | UNKNOWN (3) | UNKNOWN – Paramètres manquants |
Paramètres requis
- –host : IP ou FQDN du pare-feu
- –apikey : Clé API générée pour un utilisateur du firewall
Exemple:
./check_palo_sync.pl --host 192.0.2.1 --apikey abc1234567890
Dépendances
Modules Perl nécessaires :
- LWP::UserAgent (requêtes HTTPS)
- XML::Simple (parsing XML)
- Getopt::Long (gestion des arguments)
Explication détaillée du script check_palo_sync.pl
Chargement des modules nécessaires
use strict; use warnings; use LWP::UserAgent; use XML::Simple; use Getopt::Long;
- strict et warnings : bonnes pratiques Perl, elles empêchent les erreurs de codage courantes.
- LWP::UserAgent : permet d’envoyer des requêtes HTTP/HTTPS.
- XML::Simple : convertit le XML renvoyé par l’API Palo Alto en une structure Perl.
- Getopt::Long : permet de gérer les arguments de ligne de commande (–host, –apikey).
Déclaration et récupération des arguments
my ($host, $apikey); GetOptions( 'host=s' => \$host, 'apikey=s' => \$apikey,);
- Initialise deux variables $host (IP du firewall) et $apikey (clé API).
- GetOptions lit les arguments fournis en ligne de commande avec –host et –apikey.
Vérification des paramètres
if (!$host || !$apikey) {
print "UNKNOWN - Paramètres manquants. Utilisation : --host <ip> --apikey <clé>\n";
exit 3;
}
Si un argument est manquant, le script affiche une erreur UNKNOWN (code de sortie 3) avec un message d’aide.
Construction de l’URL API
my $url = "https://$host/api/?type=op&cmd=<show><high-availability><state></state></high-availability></show>&key=$apikey";
- Compose l’URL pour appeler la commande show high-availability state via l’API XML.
- $apikey est inclus dans l’URL pour authentifier la requête.
Création de l’agent HTTP (avec SSL désactivé)
my $ua = LWP::UserAgent->new(
ssl_opts => { verify_hostname => 0,
SSL_verify_mode => 0x00,
},
timeout => 10,);
Crée un objet UserAgent avec :
-
- verify_hostname => 0 : n’exige pas que le nom du certificat SSL corresponde à l’IP.
- SSL_verify_mode => 0x00 : désactive toute vérification du certificat.
- timeout => 10 : le script échoue si le pare-feu ne répond pas en 10 secondes.
Envoi de la requête API
my $response = $ua->get($url);
- Envoie une requête GET à l’URL construite.
- La réponse est stockée dans $response.
Vérifie si la requête a échoué
if (!$response->is_success) {
print "CRITICAL - Erreur HTTP : " . $response->status_line . "\n";
exit 2;
}
Si le code HTTP n’est pas 200 OK, le script renvoie un CRITICAL (code 2) avec l’erreur HTTP.
Conversion du XML en structure Perl
my $xml = XMLin($response->decoded_content, ForceArray => 0);
- Convertit la réponse XML en une structure de hash Perl accessible comme un dictionnaire.
- ForceArray => 0 évite que les éléments soient mis dans des tableaux si ce n’est pas nécessaire.
Extraction des valeurs HA
my $running_sync = $xml->{result}->{group}->{'running-sync'} // '';
my $running_sync_enabled = $xml->{result}->{group}->{'running-sync-enabled'} // '';
Accède aux deux champs HA :
-
- running-sync : indique si la config est synchronisée (synchronized ou unsynchronized)
- running-sync-enabled : indique si la sync HA est activée (yes ou no)
- Le // » évite les erreurs si une des clés est absente (valeur par défaut : chaîne vide).
Analyse et retour du statut
if (lc($running_sync) eq 'synchronized' && lc($running_sync_enabled) eq 'yes') {
print "OK - Configuration HA synchronisée\n";
exit 0;
} elsif (lc($running_sync_enabled) eq 'no') {
print "WARNING - Synchronisation HA désactivée\n";
exit 1;
} else {
print "CRITICAL - Synchronisation HA NON synchronisée : running_sync='$running_sync'\n";
exit 2;
}
- Si la synchronisation est activée et réussie → OK (code 0).
- Si la sync est désactivée → WARNING (code 1).
- Si elle est activée mais désynchronisée → CRITICAL (code 2).
- Le script utilise lc() pour éviter les problèmes de casse (par ex. Yes vs yes).
Voici un exemple d’utilisation dans le logiciel Icinga :
FAQ – Superviser la synchronisation HA de Palo Alto via API
Comment générer une clé API Palo Alto pour le monitoring ?
Pour superviser vos pare-feux via l’API, vous devez d’abord générer une clé API Palo Alto en appelant l’URL suivante :
https://<IP_FIREWALL>/api/?type=keygen&user=<UTILISATEUR>&password=<MOT_DE_PASSE>
Cette clé sera utilisée dans toutes les requêtes API pour authentifier votre script de supervision.
Pourquoi superviser la synchronisation HA de Palo Alto est-il crucial ?
Superviser la synchronisation HA de Palo Alto permet de détecter rapidement toute désynchronisation entre les nœuds d’un cluster. Cela garantit que les configurations actives sont toujours alignées, ce qui est essentiel pour assurer la haute disponibilité et la sécurité de l’environnement réseau.
Quels outils peuvent être utilisés pour le monitoring Palo Alto ?
Le monitoring Palo Alto peut être intégré dans des solutions comme Icinga, Nagios ou Centreon. Le script check_palo_sync.pl est compatible avec ces outils et permet un contrôle automatisé de l’état de synchronisation HA via l’API XML.
Quels indicateurs sont vérifiés par le script de supervision ?
Le script analyse deux indicateurs clés renvoyés par l’API :
- running-sync : indique si la configuration est synchronisée (synchronized / unsynchronized)
- running-sync-enabled : indique si la synchronisation HA est activée (yes / no)
Faut-il désactiver la vérification SSL dans le script ?
Oui, le script désactive la vérification SSL pour accepter les certificats auto-signés souvent présents sur les pare-feux Palo Alto. Cela permet de garantir la compatibilité, même sans infrastructure PKI complète.
En bref
En résumé, superviser la synchronisation HA de Palo Alto est une démarche incontournable pour garantir l’intégrité et la disponibilité de votre infrastructure réseau. L’utilisation d’un script basé sur l’API REST, combinée à une clé API Palo Alto correctement générée et sécurisée, permet de mettre en place une supervision automatisée, fiable et réactive.
Que ce soit via Icinga, Centreon ou tout autre outil, ce type de solution s’intègre parfaitement dans une stratégie de monitoring Palo Alto moderne et efficace. En adoptant cette approche, vous assurez un suivi constant de l’état HA de vos pare-feux et réduisez les risques liés aux désynchronisations critiques.
Quick-Tutoriel.com Network & System Admin.




