Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Purpose

This article will provide an example of opConfig collecting specific command output based on event characteristics.  The command output becomes embedded into the event allowing network operators to more quickly identify root cause and affect resolution.

Use Case

For this example we'll take actions if an event's stateful element is a BGP Peer.  opEvents will fire scripts that result in useful information for engineers to follow up on.

Related Pages

Configuration

opEvents

In this case the necessary configuration for opEvents is contained in /usr/local/omk/conf/EventActions.nmis.  There are two sections we will be concerned with; script and policy.

...

Code Block
title/usr/local/omk/conf/EventActions.nmis
         'policy' => {
                '10' => {
                        IF => 'event.any',
                        THEN => {
                                '10' => {
                                        IF => 'event.stateful =~ "BGP Peer"',
                                        THEN => 'priority(8) AND script.ping_node() AND script.ping_neighbor() AND script.troubleshoot_bgp()',
                                        BREAK => 'false'
                                },
                        },
          }

opConfig

The /usr/local/omk/conf/command_sets.d directory is where we have files detailing exec commands to be executed on nodes.  For this example we are concerned with ios.nmis.  For this example we are Our IOS_TS_BGP command set will be running the following commands.

...

Code Block
title/usr/local/omk/conf/command_sets.d/ios.nmis
   'IOS_TS_BGP' => {
  
      'os_info' => {
      'version' => '/12.2|12.4|15.\d+/',
      'os' => 'IOS',
    },
      'scheduling_info' => {
      'run_commands_on_separate_connection' => 'false',
      'attempt_timeout_recovery' => 1,
    },
                
    'purging_policy' => {
      'keep_last' => 1000,
      'purge_older_than' => 2592000, # 30 days
      'autoprotect_first_revision' => 'true', 
    },    
    'commands' => [
                        {
        'multipage' => 'true',
        'privileged' => 'true',
        'command' => 'show ip bgp',
        'tags' => [ 'troubleshooting', 'routing', 'detect-change' ],
      },
                        
      {
        'multipage' => 'true',
        'privileged' => 'true',
        'command' => 'show ip bgp summary',
        'tags' => [ 'troubleshooting', 'routing', 'detect-change' ],
      },
                        
      {
        'multipage' => 'true',
        'privileged' => 'true',
        'command' => 'show ip route summary',
        'tags' => [ 'troubleshooting', 'routing', 'detect-change' ],
      },
    ],
  },

Testing and Verification

The easiest way to test this configuration is to administratively shutdown a BGP peer.  After the next NMIS collect cycle a BGP Peer Down alert will be processed by opEvents.  Here's an example from our lab.

...

Notice the Actions section that is notifying us that our scripts fired.  Scrolling down we can view the script output; it's not now embedded into the event.