[j-nsp] Regular maintenance advice

Skeeve Stevens skeeve+junipernsp at eintellego.net
Tue Apr 3 19:23:51 EDT 2012


I'm really looking for something more interactive when its needed.

*Skeeve Stevens, CEO*
eintellego Pty Ltd
skeeve at eintellego.net ; www.eintellego.net <http://www.eintellego.net.au>

Phone: 1300 753 383 ; Fax: (+612) 8572 9954

Cell +61 (0)414 753 383 ; skype://skeeve

facebook.com/eintellego

twitter.com/networkceoau ; www.linkedin.com/in/skeeve

PO Box 7726, Baulkham Hills, NSW 1755 Australia

The Experts Who The Experts Call
Juniper - Cisco – Brocade - IBM



On Wed, Apr 4, 2012 at 02:18, Morgan Mclean <wrx230 at gmail.com> wrote:

> Why don't you poll all of this via snmp?
>
> Sent from my iPhone
>
> On Apr 3, 2012, at 9:06 AM, Phil Shafer <phil at juniper.net> wrote:
>
> > Skeeve Stevens writes:
> >> I am designing a document for low level technicians to regularly
> >> (depending on sensitivity of the device) login to the Juniper
> >> router/or switch to look around and make sure that things are 'ok'.
> >
> > How much of this is generic (or can be made generic) enough to cook
> > into an op script?  Checks like "indicate system uptime of less
> > than one week" and "indicate if /, /config, or /tmp is more than
> > 90% full" are trivial, and interface flapping is simple enough, but
> > "show suspicious log messages" are more human detectable than
> > scriptable.
> >
> > I'd be happy enough to do the script work if we can come up with
> > a reasonable set of "system health" diagnostic checks.
> >
> > Okay, I worked up a bit of a template for it.  See attached.
> >
> > Thanks,
> > Phil
> >
> > version 1.0;
> >
> > ns junos = "http://xml.juniper.net/junos/*/junos";
> > ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
> > ns jcs extension = "http://xml.juniper.net/junos/commit-scripts/1.0";
> > ns dyn extension = "http://exslt.org/dynamic";
> >
> > import "../import/junos.xsl";
> >
> > param $uptime = 60 * 60 * 24 * 7;
> > param $filesystem-threshold = 80;
> >
> > var $fsnames := {
> >    <fs> "/";
> >    <fs> "/tmp";
> >    <fs> "/config";
> > }
> >
> > var $checks := {
> >    <check> {
> >    <name> "System Uptime";
> >    <rpc> {
> >        <get-system-uptime-information>;
> >    }
> >    <test> "uptime-information/up-time/@junos:seconds < $uptime";
> >    }
> >    <check> {
> >    <name> "Filesystem Space";
> >        <rpc> {
> >        <get-system-storage>;
> >    }
> >    for-each ($fsnames/fs) {
> >        <test message=. _ " is full">
> >            "filesystem[mounted-on = '" _ .
> >                 _ "'][number(used-percent) > $filesystem-threshold]";
> >    }
> >    }
> > }
> >
> > match / {
> >    <op-script-results> {
> >    var $conn = jcs:open();
> >
> >    for-each ($checks/check) {
> >        expr jcs:output("Checking ", name);
> >        var $check = .;
> >        expr jcs:output("    [rpc ", local-name(rpc/node()), "]");
> >        var $res = jcs:execute($conn, rpc);
> >        if ($res/..//xnm:error) {
> >        expr jcs:output("    error from rpc: ", $res/..//xnm:error);
> >        } else {
> >        for-each (test) {
> >            var $test = .;
> >            for-each ($res) {
> >            var $p = dyn:evaluate($test);
> >            if (boolean($p)) {
> >                var $msg = jcs:first-of($test/@message,
> >                            "failed condition");
> >                expr jcs:output("    error from test: ", $msg);
> >            } else {
> >                expr jcs:output("    [passed]");
> >            }
> >            }
> >        }
> >        }
> >    }
> >
> >    expr jcs:close($conn);
> >    }
> > }
> > _______________________________________________
> > juniper-nsp mailing list juniper-nsp at puck.nether.net
> > https://puck.nether.net/mailman/listinfo/juniper-nsp
>


More information about the juniper-nsp mailing list