06-18-2012 09:51 AM
I found this sample script from section 2.1.7 of the CUBE Management guide,
I'm trying to add it to monitor dial-peer up/down status. I'm using the exact code listed in the guide;
::cisco::eem::event_register_timer watchdog time $check_interval nice 1
#
# Namespace imports
#
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
#--- Check required environment variable(s) has been defined
if {![info exists dial_peer_number]} {
set result "EEM Policy Error: variable dial_peer_number has not been set"
error $result $errorInfo
}
#------------------- " cli open" -------------------
if [catch {cli_open} result] {
error $result $errorInfo
} else {
array set cli $result
}
#----------------------- "enable" ----------------------
if [catch {cli_exec $cli(fd) "enable"} result] { error $result $errorInfo }
#-------------- grab sip ood options-ping and track status --------------
if [catch {cli_exec $cli(fd) "show dial-peer voice $dial_peer_number | inc options-keepalive dial-peer action"} result] {
error $result $errorInfo
}
set cmd_output $result
if [catch {cli_exec $cli(fd) "show track $dial_peer_number | inc State"} result] { error $result $errorinfo
}
set track_state $result
#-------------- set stub status --------------
if [string match "*busyout*" $cmd_output] {
if [string match "*Up*" $track_state] {
if [catch {cli_exec $cli(fd) "conf t" } result] { error $result $errorInfo }
if [catch {cli_exec $cli(fd) "track $dial_peer_number stub-object" } result]
{ error $result $errorInfo }
if [catch {cli_exec $cli(fd) "default-state down" } result]
{ error $result $errorInfo }
if [catch {cli_exec $cli(fd) "end" } result] { error $result $errorInfo }
}
}
if [string match "*active*" $cmd_output] {
if [string match "*Down*" $track_state] {
if [catch {cli_exec $cli(fd) "conf t" } result] { error $result $errorInfo }
if [catch {cli_exec $cli(fd) "track $dial_peer_number stub-object" } result]
{ error $result $errorInfo }
if [catch {cli_exec $cli(fd) "default-state up" } result]
{ error $result $errorInfo }
if [catch {cli_exec $cli(fd) "end" } result] { error $result $errorInfo }
}
}
#--------------------- cli close ------------------------
if [catch {cli_close $cli(fd) $cli(tty_id)} result] {
error $result $errorInfo
}
I can insert it with the open, closed and enable sections but when I add the set stub status section I get the following;
router(config)#event manager policy check_dial_peer_status.tcl
EEM Register event failed:wrong # args: no script following "[catch {cli_exec $cl" argument
while compiling
"if [catch {cli_exec $cli(fd) "track $dial_peer_number stub-object" } result]"
("if" then script line 3)
while compiling
"if [string match "*Up*" $track_state] {
if [catch {cli_exec $cli(fd) "conf t" } result] { error $result $errorInfo }
if [catch {cli_exec $cli(fd) "tra..."
("if" then script line 2)
while compiling
"if [string match "*busyout*" $cmd_output] {
if [string match "*Up*" $track_state] {
if [catch {cli_exec $cli(fd) "conf t" } result] { error $result $e..."
EEM configuration: failed to retrieve intermediate registration result for policy check_dial_peer_status.tcl
I've had someone that nows TCL take a look and everything appears to be good but I can't get it to take. Can anyone assist?
Thanks
Travis
06-18-2012 03:34 PM
06-18-2012 04:44 PM
Thanks Joseph, I'll have to check them out in the moring. I'll let you know how it goes.
Thanks
Travis
06-19-2012 06:00 AM
The TCL script took but not totally sure everything is working since it's my first time working with EEM. Thanks for the help Joseph.
06-19-2012 06:07 AM
Busy out one of your dial-peers, and the script should set the tracked object corresponding to your dial-peer to down.
06-19-2012 06:22 AM
Doesn't it use the options-keepalive action in the sh dial-peer voice instead of the actual dial-peer status? I shut the dial-peer and didn't get an alert.
While the dial-peer was shut I ran "sh dial-peer voice 900 | inc options-keepalive dial-peer action" and it returned nothing but when I do it when the dial peer is up I get "voice class sip options-keepalive dial-peer action = active"
I guess an ACL blocking traffic would work to test wouldn't it?
06-19-2012 07:22 AM
So I setup a test dial-peer and I get the busyout and the track set to down but it doen't trigger anything.
Here's the histroy,
router#show event manager history events
No. Job Id Proc Status Time of Event Event Type Name
1 331 Actv success Tue Jun19 10:19:04 2012 timer watchdog script: check_dial_peer_status.tcl
2 333 Actv success Tue Jun19 10:19:36 2012 track applet: siptrunk_down
3 332 Actv success Tue Jun19 10:19:34 2012 timer watchdog script: check_dial_peer_status.tcl
4 334 Actv success Tue Jun19 10:20:04 2012 timer watchdog script: check_dial_peer_status.tcl
5 335 Actv success Tue Jun19 10:20:34 2012 timer watchdog script: check_dial_peer_status.tcl
6 336 Actv success Tue Jun19 10:21:04 2012 timer watchdog script: check_dial_peer_status.tcl
7 337 Actv success Tue Jun19 10:21:34 2012 timer watchdog script: check_dial_peer_status.tcl
8 338 Actv success Tue Jun19 10:22:04 2012 timer watchdog script: check_dial_peer_status.tcl
9 339 Actv success Tue Jun19 10:22:34 2012 timer watchdog script: check_dial_peer_status.tcl
10 340 Actv success Tue Jun19 10:23:04 2012 timer watchdog script: check_dial_peer_status.tcl
How do I tell if the actions are taking place?
event manager applet siptrunk_down
event track 904 state down
action 10 snmp-trap strdata "trunk DOWN"
action 20 syslog msg "trunk DOWN"
Thanks,
Travis
06-19-2012 08:17 AM
It looks like it's triggering your applet siptrunk_down based on the event history. Are you not seeing the trap and/or syslog?
06-19-2012 08:26 AM
Now that I check I'm seeing it in the logging buffer but not on my syslog server. I see the first line in syslog but not the second.
001708: *Jun 19 14:19:36.110: %TRACKING-5-STATE: 904 stub Up->Down
001709: *Jun 19 14:19:36.122: %HA_EM-6-LOG: siptrunk_down: trunk DOWN
Do you know if this is informational? We are only sending warnings to syslog so I guess that's what's happening.
06-19-2012 08:33 AM
These messages are informational, but sent using the same mechanism that sends debugging messages, so you will need to trap on debug to see them sent to syslog.
06-19-2012 12:55 PM
Thanks Joseph, quick question on the snmp-traps. Do I have to install the MIB to get the traps?
Thanks,
Travis
06-19-2012 05:43 PM
No, but you do need to configure:
snmp-server enable traps event-manager
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