26 février 2018

Si vous souhaitez superviser les pools de vos F5 LTM, les possibilités qui s’offrent à vous sont multiples tant au niveau des méthodes, qu’au niveau des outils.

Passer par Splunk procure un avantage certain. Lorsqu’un événement notable est détecté, l’outil émetteur de l’alerte est aussi la plateforme à partir de laquelle vous pourrez directement investiguer sur l’origine de l’incident. Depuis la même interface, il sera en effet possible de rechercher dans les données collectées sur d’autres éléments de votre infrastructure – serveurs Web, applications, bases de données, équipements réseau.

Splunk étant capable d’indexer n’importe quel type de données machine, le choix de la méthode de collecte reste encore large pour les données F5 LTM. La méthode habituelle – récupérer les données au format syslog – permet d’obtenir un premier niveau de visibilité sur le statut des pools :

01070727:5: Pool /Common/Pool_A member /Common/Server1:80 monitor status up.
01070638:5: Pool /Common/Pool_A member /Common/Server1:80 monitor status down.
01010221:3: Pool /Common/Pool_A now has available members
01010028:3: No members available for pool /Common/Pool_A

S’il est possible de configurer des alertes Splunk à partir de ces données, leur niveau de détail et la fréquence à laquelle celles-ci sont générées rendent difficile la conception d’un tableau de bord dédié à la supervision des pools.

Une solution alternative consiste à interroger les F5 LTM sur le statut des pools via SNMP et à indexer les résultats obtenus.

C’est sur les données issues de cette méthode de collecte que nous avons réalisé une App Splunk permettant de superviser les pools F5 LTM. Disponible et documentée sur Splunkbase, nous vous en expliquons ici les principes de fonctionnement.

L’App Splunk F5 LTM Pool Monitoring

Collecte des données

Tout commence avec la commande snmpwalk. Nous l’utilisons pour interroger les F5 LTM sur le statut des pool members :

snmpwalk -v3 -u user -l authPriv -a auth -A pass -x AES -X pass -m +F5-BIGIP-LOCAL-MIB F5_IP ltmPoolMemberMonitorStatus

Les résultats obtenus prennent la forme suivante :

F5-BIGIP-LOCAL-MIB::ltmPoolMemberMonitorStatus."/Common/Pool_A"."/Common/Server1".443 = INTEGER: down(19)
F5-BIGIP-LOCAL-MIB::ltmPoolMemberMonitorStatus."/Common/Pool_B"."/Common/Server2".80 = INTEGER: up(4)
F5-BIGIP-LOCAL-MIB::ltmPoolMemberMonitorStatus."/Common/Pool_C"."/Common/Server3".80 = INTEGER: forced-down(20)

Splunk étant capable de comprendre automatiquement le format clé=valeur, nous utilisons la commande sed pour formater le résultat :

snmpwalk [...] | sed -n 's/F5-BIGIP-LOCAL-MIB::ltmPoolMemberMonitorStatus."\/Common\//pool=/p' | sed -n 's/"."\/Common\// member=/p' | sed -n 's/"./ monitor=/p' | sed -n 's/ = INTEGER: / status=/p' | sed -n 's/([0-9]*)//p'

Ce qui donne :

pool=Pool_A member=Server1 monitor=443 status=down
pool=Pool_B member=Server2 monitor=80 status=up
pool=Pool_C member=Server3 monitor=80 status=forced-down

Les champs pool, member, monitor et status, seront automatiquement appris par Splunk au moment de la recherche :

Champs snmpwalk
Normalisation snmpwalk

Parmi les différents moyens disponibles pour indexer la donnée sur Splunk, il est possible d’exécuter un script à intervalles réguliers et d’en indexer le résultat sous un sourcetype défini.

Dès lors, la commande snmpwalk est placée dans un script shell géré dans un input de type script, il sera exécuté toutes les 2 minutes :

[script://./bin/snmp_f5_monitor_status_big-ip_name.sh]
interval = 120
index = f5ltm
sourcetype = f5:bigip:ltm:snmp:monitor:status
host = f5bigip1

Exploitation des données

Une fois les données ingérées par Splunk, reste à tirer profit du langage de recherche et des fonctionnalités de Splunk pour concevoir un tableau de bord interactif.

État de santé des pools et des pool members avec drilldown :

Santé pools F5

Filtrage sur les différents niveaux :

Filtrage F5 pool

Représentation graphique des statuts de pools members dans le temps :

Statuts F5 pool member

Taux de disponibilité des pools :

Taux disponibilité pools

Pour étayer ce tableau de bord, d’autres informations sont récupérées en SNMP en suivant le même principe.

Nous collectons le statut du cluster ainsi que celui de la synchronisation du boitier, ce qui nous permet d’ajouter ce panel nous indiquant l’état de santé des F5 :

Statut cluster F5

Nous récupérons aussi le nombre de connexions sur chaque pool member, utile pour ajouter du contexte sur leur utilisation :

Connections Statistics F5

Cette connaissance sur les différents pool members qui composent un pool nous permet ensuite de configurer plusieurs alertes.

Une alerte est par exemple générée lorsque l’ensemble des pool members d’un pool sont tombés sur un membre actif :

Alertes F5 Splunk

Tableaux de bord annexes

Pour faciliter la gestion de la supervision, l’App a été agrémentée de divers tableaux de bord.

Une liste de maintenance basée sur l’App Lookup Editor permet d’éviter le déclenchement d’alertes lorsque des pools members sont en maintenance :

Lookup alertes

Un panel permet de vérifier que les données attendues sont bien indexées :

panel index

Une table de correspondance permet de parcourir la MIB F5 si vous souhaitez collecter d’autres données F5 LTM :

mib browser F5

Cette description illustre un cas d’utilisation précis traité avec Splunk, cela peut aussi vous donner des idées pour superviser d’autres équipements ou bien traiter d’autres types de données.

Nous restons en tout cas disponibles si vous souhaitez être accompagnés sur la mise en place de cette App ou sur tout autre type de développement Splunk.

Nous avons par ailleurs mis à disposition nos autres réalisations sur Splunkbase.

Partager :

Auteurs