09-17-2013 10:48 AM
I need to get traps for several Interfaces when they go up and down.
Serial 0/0/0:0
Serial 0/1/0:9
FXO 0/1/1:21
are some examples
I have been doing so with rmon traps like below
rmon event 10 log trap SIL description RmonEvent owner ABCD
rmon alarm 10 ifOperStatus.10 1 absolute rising-threshold 2 10 falling-threshold 1 10 owner ABCD
The problem is that the ifindex often moves when a router is changed out (which occurs more often than you think.). the Port designation don't change but the ifindex does.
When this happens i have to adjust the rmon stuff manually.
What I need to do is create a EEM script that sets up a trap based on the interface name that traps when it goes up or down.
Is this doeable?
Solved! Go to Solution.
09-18-2013 07:20 PM
You're missing a space.
action 1.3 regexp "= ([0-9]+)" "$_cli_result" match ifindex
09-17-2013 12:14 PM
You can use syslog messages for this. For example:
event manager applet slg-to-trap
event syslog pattern "Line protocol on Interface.*changed state to"
action 1.0 regexp "Interface ([^,]+), changed state to (up|down)" $_syslog_msg match intf state
action 2.0 snmp-trap strdata "Interface $intf changed state to $state"
09-17-2013 01:31 PM
Thanks,
Bear in mind this scripting stuff is new to me.
I tried this and dont think it works.
Does the Serial Port go up and down like an Ethernet port?
I dont see any "Serial0/0/0:10" going up and or down....
09-18-2013 09:42 AM
Okay. If you're not getting syslogs, then you can use the track event detector to do what you want. you will need to create multiple applets, though. For example:
track 1 interface Se0/0/0:10 line-proto
!
event manager applet Se0_0_0_10
event track 1 state any
action 1.0 snmp-trap strdata "Interface Serial0/0/0:10 changed state to $_track_state"
09-18-2013 11:37 AM
That works GREAT on the serial interfaces however, I have an E1 going to a channelbank over DS0 connection that I need to track.
For example: FXO 0/1/1:21 is a channel on a E1 that I need to track up and down.
I can do so with a rmon event on its ifoperstatus.(ifindex) but the ifindex changes between routers.
When I do a track 1 interface ? the controller e1 or the FXO is not there to enter.
Any thoughts on how to fix this one?
Thanks again.
09-18-2013 12:06 PM
You'd have to use something like the timer event detector, but then things become much more complex as you need to track previous state. Why not configure:
snmp-server ifindex persist
So that ifIndex values don't change. then you can continue to use RMON or use the SNMP event detector in EEM to monitor those interfaces.
09-18-2013 12:39 PM
Thanks again Joseph.
If have ifindex persist in my configuration and that keeps the ifindexes from moving between reboots however, I have times when I swap the entire router out and the ifindexes move. For example the ifindex for FXO 0/1/1:21 on Router 1 was 210... When I installed router 2 it is 258.
What I was thinking about doing was creating a bootup event that does the following.
1. Looks up the ifindex of FXO 0/1/1:21 using cli show snmp mib ifmib ifindex | include FXO 0/1/1:21 and puts this value in a variable.
2. Via a cli command, create an rmon event and an rmon alarm using that variable.
I think I know how to do the cli stuff but how to put the ifindex in step 1 into a variable for step 2 is a question...
There has to be a better way but.....
Would this work?
09-18-2013 02:32 PM
I have figured out how to get the results of the "show snmp mib ifmib ifindex | include FXO 0/1/1:21" into $_cli_result.
This variable contains a string like "FXO 0/1/1:21 IFIndex = 258". What I need to do now is to strip off the number at the end to use in the rmon creation.
I have been trying several regular expressions to no avail. Help?
09-18-2013 02:35 PM
This should work:
regexp "= ([0-9]+)" $_cli_result match ifindex
puts "ifIndex is $ifindex"
09-18-2013 03:16 PM
Thanks. I really appreciate your help. That regexp did not work however.
event manager applet HST1
action 1.0 cli command "enable"
action 1.1 cli command "show snmp mib ifmib ifindex | include FXO 0/1/1:21"
action 1.2 puts "$_cli_result"
action 1.3 regexp "=([0-9]+)" "$_cli_result" match ifindex
action 1.4 puts "$ifindex"
Prints out the cli result
FXO 0/1/1:21: Ifindex = 258
Then throws an error...
%HA_EM-3-FMPD_UNKNOWN_ENV: fh_parse_var: could not find environment variable: ifindex
%HA_EM-3-FMPD_ERROR: Error executing applet HST1 statement 1.4
09-18-2013 07:20 PM
You're missing a space.
action 1.3 regexp "= ([0-9]+)" "$_cli_result" match ifindex
09-19-2013 06:06 AM
You absolutely right. missing space...
Works like a champ now....
Thanks Joseph
09-19-2013 02:44 PM
Below is the code that I eneded up using:
event manager applet CreateRMON
event timer countdown time 1
action 1.0 cli command "enable"
action 2.0 set iflist "Serial0/0/0:0:,Serial0/0/0:1:,Serial0/0/0:2:,Serial0/0/0:3:,Serial0/0/0:4:,Serial0/0/0:5:"
action 2.1 append iflist ",Serial0/0/0:6:,Serial0/0/0:7:,Serial0/0/0:8:,Serial0/0/0:9:,Serial0/0/0:11:,Serial0/0/0:12:"
action 2.2 append iflist ",Serial0/0/0:13:,Serial0/0/0:14:,FXO 0/1/1:21:,FXO 0/1/1:22:"
action 3.0 foreach interface $iflist ,
action 4.0 cli command "show snmp mib ifmib ifindex | include $interface"
action 4.1 regexp "= ([0-9]+)" "$_cli_result" match ifindex
action 5.0 cli command "config t"
action 5.1 cli command "no rmon event $ifindex"
action 5.2 cli command "no rmon alarm $ifindex"
action 6.0 cli command "rmon event $ifindex log trap SIL description CCSRmon owner CCSAdmin"
action 6.1 cli command "rmon alarm $ifindex ifOperStatus.$ifindex 1 absolute rising-threshold 2 $ifindex falling-threshold 1 $ifindex owner CCSAdmin"
action 6.2 cli command "end"
action 7.0 end
09-24-2013 03:31 PM
Hi Joseph,
I've largely copied the above script, customized it for a Nexus switch and attempted (albeit round peg in a square hole) to also have the script fwd out an email everytime any of the Ethernet switchports change to a down state. The purpose is to preempt a call from the client about a loss of service & notify our teammates before the client is even aware that a loss of service has occurred.
Please see below and let me know if my advanced "copy & paste" skills are up to par!
conf t
event manager applet CreateRMON
description Report when Source Circuit Drops from the Source on a per interface basis.
event timer countdown time 1
action 1.0 cli command "enable"
action 2.0 set iflist "Ethernet8/1:,Ethernet8/2:,Ethernet8/3:,Ethernet8/4:,Ethernet8/5:,Ethernet8/6:"
action 2.1 append iflist ",Ethernet8/7:,Ethernet8/8:,Ethernet8/9:,Ethernet8/10:,Ethernet8/11:,Ethernet8/12:"
action 2.2 append iflist ",Ethernet8/13:,Ethernet8/14:,Ethernet8/15:,Ethernet8/16:,Ethernet8/17:,Ethernet8/18:"
action 2.3 append iflist ",Ethernet8/19:,Ethernet8/20:,Ethernet8/21:,Ethernet8/22:,Ethernet8/23:,Ethernet8/24:"
action 2.4 append iflist ",Ethernet8/25:,Ethernet8/26:,Ethernet8/27:,Ethernet8/28:,Ethernet8/29:,Ethernet8/30:"
action 2.5 append iflist ",Ethernet8/31:,Ethernet8/32:,Ethernet8/33:,Ethernet8/34:,Ethernet8/35:,Ethernet8/36:"
action 2.6 append iflist ",Ethernet8/37:,Ethernet8/38:,Ethernet8/39:,Ethernet8/40:,Ethernet8/41:,Ethernet8/42:"
action 2.7 append iflist ",Ethernet8/43:,Ethernet8/44:,Ethernet8/45:,Ethernet8/46:,Ethernet8/47:,Ethernet8/48:"
action 2.8 append iflist ",Ethernet9/1:,Ethernet9/2:,Ethernet9/3:,Ethernet9/4:,Ethernet9/5:,Ethernet9/6:"
action 2.9 append iflist ",Ethernet9/7:,Ethernet9/8:,Ethernet9/9:,Ethernet9/10:,Ethernet9/11:,Ethernet9/12:"
action 3.0 append iflist ",Ethernet9/13:,Ethernet9/14:,Ethernet9/15:,Ethernet9/16:,Ethernet9/17:,Ethernet9/18:"
action 3.1 append iflist ",Ethernet9/19:,Ethernet9/20:,Ethernet9/21:,Ethernet9/22:,Ethernet9/23:,Ethernet9/24:"
action 3.2 append iflist ",Ethernet9/25:,Ethernet9/26:,Ethernet9/27:,Ethernet9/28:,Ethernet9/29:,Ethernet9/30:"
action 3.3 append iflist ",Ethernet9/31:,Ethernet9/32:,Ethernet9/33:,Ethernet9/34:,Ethernet9/35:,Ethernet9/36:"
action 3.4 append iflist ",Ethernet9/37:,Ethernet9/38:,Ethernet9/39:,Ethernet9/40:,Ethernet9/41:,Ethernet9/42:"
action 3.5 append iflist ",Ethernet9/43:,Ethernet9/44:,Ethernet9/45:,Ethernet9/46:,Ethernet9/47:,Ethernet9/48:"
action 4.0 foreach interface $iflist ,
action 5.0 cli command "show snmp mib ifmib ifindex | include $interface"
action 5.1 regexp "= ([0-9]+)" "$_cli_result" match ifindex
action 6.0 cli command "config t"
action 6.1 cli command "no rmon event $ifindex"
action 6.2 cli command "no rmon alarm $ifindex"
action 7.0 cli command "rmon event $ifindex log trap SIL description CCSRmon owner CCSAdmin"
action 7.1 cli command "rmon alarm $ifindex ifOperStatus.$ifindex 1 absolute rising-threshold 2 $ifindex falling-threshold 1 $ifindex owner NetworkAdmin"
action 7.2 mail server "192.168.1.146" to "engineer@cisco.com" from "devtest@cisco.com" subject "Interface Outage" body "$_ifOperStatus"
action 7.3 cli command "end"
action 8.0 end
Thanks,
Jay K.
09-25-2013 11:18 AM
This will not work on a Nexus switch. The EEM on NX-OS is nothing like that of IOS. The ability to send email and perform logic within EEM applets is missing.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide