start:supervision:check_mk:quagga
Ceci est une ancienne révision du document !
Pour vérifier l'état des sessions BGP sur les routeurs Linux tournant Quagga on utilise un plugin local pour check_mk
qui va donc régulièrement interroger Quagga pour connaitre les sessions en cours, et leur état. Un fichier de configuration permet de définir, en spécifiant les numéros d'AS, les sessions à ignorer, ou celles qui sont critiques (un client, un transitaire, par exemple). Par défaut une session qui n'est pas active, et pour laquelle ce n'est pas volontaire (shutdown
) donne un retour WARNING.
Le script communiquant avec Quagga utilise expect.
DISABLEPWD
est le mot de passe Quagga pour pouvoir se connecterENABLEPWD
est le mot de passe Quagga pour pouvoir passerenable
- /usr/lib/check_mk_agent/local/check_bgp_summary
#!/bin/bash conf="/etc/check_mk/bgp.conf" script_expect="/usr/local/bin/bgp_summary localhost bgpd DISABLEPWD ENABLEPWD" # Var NAGIOS STATE_OK="0" STATE_WARNING="1" STATE_CRITICAL="2" STATE_UNKNOWN="3" STATE_DEPENDENT="4" # Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd ( $script_expect |grep -A 9999999 "^Neighbor"|grep -B 999999 "^Total"|egrep "^[0-9]" | sed -e 's/\r//' | \ while read Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ UpDown StatePfxRcd sup ; do # Status ItemName PerformanceData CheckOutput if [[ $(grep -i "^exclude:as$AS:" "$conf") ]] ; then continue # skip when exclude fi infos="$StatePfxRcd" [ "x" != "x$sup" ] && infos="$infos $sup" # Gestion des cas ou l'info est en deux mots count=0 val=$STATE_UNKNOWN if [[ $StatePfxRcd =~ [0-9]+ ]] ; then val=$STATE_OK count=$StatePfxRcd else # Erreur, donc warning val=$STATE_WARNING # Si CRITIQUE, alors on hurle if [[ $(grep -i "^critical:as$AS:" "$conf") ]] ; then val=$STATE_CRITICAL fi # Si c'est volontaire, shut if [[ "$infos" =~ \(Admin\) ]] ; then val=$STATE_OK fi fi echo "$val BGP_AS"$AS"_$Neighbor count=$count Duration: $UpDown - Status: $infos" done )|sort -k 2
- /usr/local/bin/bgp_summary
#!/usr/bin/expect -f # Utilisé par le check_mk_agent pour gérer la vue des sessions BGP # Viva NNX # Note: this script is NOT good example of writting code in Expect at all. if { [llength $argv] != 4 } { puts "Expect 'show ip bgp summary' script for Quagga services." puts "Copyright (C) 2007 Matous Jan Fialka." puts "Released under the terms of GNU/GPL.\n" puts "Usage: hostname { service | port } disable_password enable_password\n" puts "Example: qshru.exp localhost zebra secret password\n" puts "Use with extreme caution! You have been warned..." exit 1 } set hostname [lindex $argv 0] set service [lindex $argv 1] set disable_password [lindex $argv 2] set enable_password [lindex $argv 3] set disable_prompt "^*>" set enable_prompt "^*#" set disable_password_prompt "Password:" set enable_password_prompt "Password:" set terminal_length_command "terminal length 0" set enable_command "enable" set disable_command "disable" set quit_command "quit" set show_running_config_command "show running-config" set show_ip_bgp_summary "show ip bgp summary" set timeout 10 set telnet /usr/bin/telnet spawn "$telnet" "$hostname" "$service" expect "$disable_password_prompt" send "$disable_password\r" expect "$disable_prompt" send "$terminal_length_command\r" expect "$disable_prompt" send "$enable_command\r" expect "$enable_password_prompt" send "$enable_password\r" expect "$enable_prompt" send "$show_ip_bgp_summary\r" #send "$show_running_config_command\r" expect "$enable_prompt" send "$disable_command\r" expect "$disable_prompt" send "$quit_command\r" expect eof puts "\nBye, bye..." exit 0
start/supervision/check_mk/quagga.1356705745.txt.gz · Dernière modification : 2012/12/28 15:42 de domi