Build precise queries to find exactly what you need
Press ESC to close
Join our next live webinar: “Advanced Nagios Monitoring Techniques” – Register Now
@bill_mcgonigle
Favorites0
Views
Projects0
just a quick note: put something like this in your config file to enable the management interface: management 127.0.0.1 2194 /etc/openvpn/management-password and pass the relevant options in for this probe. (put your password in that named file and get your permissions right!). I'm using OpenVPN 2.2.2 on CentOS 5 in 2012 and I needed to make a few small changes for a point-to-point link (plus a few warning message tweaks). Unified diff follows. Thank you Jamie - using the management interface is the right way to do this (my previous grep hacks were silly). ------------- --- check_openvpn.pl-dist 2012-04-30 18:21:13.000000000 -0400 +++ check_openvpn.pl 2012-04-30 18:45:07.000000000 -0400 @@ -4,6 +4,9 @@ # # Copyright (c) 2007 Jaime Gascon Romero # +# Modified 2012-04-30 Bill McGonigle +# to handle OpenVPN 2 point-to-point connection checking. +# # License Information: # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,7 +31,7 @@ use Net::Telnet (); use Getopt::Long qw(:config no_ignore_case); use vars qw($PROGNAME $VERSION); -use lib "/usr/nagios/libexec"; +use lib "/usr/lib/nagios/plugins"; use utils qw(%ERRORS); $PROGNAME = "check_openvpn"; @@ -85,7 +88,7 @@ $t->print($opt_P); } $t->waitfor('/^$/'); -@lines = $t->cmd("status 2"); +@lines = $t->cmd("state"); $t->close; }; @@ -97,7 +100,7 @@ if (defined $opt_i || defined $opt_r) { foreach (@lines) { - if ($_ =~ /CLIENT_LIST,.*,(d+.d+.d+.d+):d+,/) { + if ($_ =~ /d+,CONNECTED,SUCCESS,d+.d+.d+.d+,(d+.d+.d+.d+)/) { push @clients_ip, $1; } } @@ -107,10 +110,10 @@ } elsif (defined $opt_r) { if ( ! grep /b$opt_rb/, @clients_ip) { if (defined $opt_c) { - print "OpenVPN CRITICAL: $opt_r don't found"; + print "OpenVPN CRITICAL: $opt_r not found"; exit $ERRORS{'CRITICAL'}; } else { - print "OpenVPN WARNING: $opt_r don't found"; + print "OpenVPN WARNING: $opt_r not found"; exit $ERRORS{'WARNING'}; } } @@ -128,10 +131,10 @@ if (defined $opt_C) { if ( ! grep /b$opt_Cb/, @clients) { if (defined $opt_c) { - print "OpenVPN CRITICAL: $opt_C don't found"; + print "OpenVPN CRITICAL: $opt_C not found"; exit $ERRORS{'CRITICAL'}; } else { - print "OpenVPN WARNING: $opt_C don't found"; + print "OpenVPN WARNING: $opt_C not found"; exit $ERRORS{'WARNING'}; } }
Reviewed 13 years ago