Clip to Evernote

Don't Panic!Real Time Monitoring Tool on Mac OS X

Intro

Apparently this page was the most widely referenced page from my site. I was originally just going to take my site down for about a week while I was migrating but real life got in the way, and time just flew by, and then our daughter was born and I just haven't had the time to work on the site. After a couple of thousand emails (seriously.) I went ahead and put this back on a page for everyones use, and actually updated this with some new steps to follow.

Preparation

Obviously first thing is first. Log into your CUCM and navigate to the plugins page and grab the Cisco Unified CM Real-Time Monitoring Tool - Linux. If you don't have this, please don't email me asking for the file. If you don't have this file, or access to it, then this page is NOT for you. The rest of this walkthrough assumes that you downloaded this to the default ~/Downloads/ directory.

Installation

Open up Terminal.app:

macbookpro:~ ryan$ cd ~/Downloads
macbookpro:Downloads ryan$ chmod +x ./CcmServRtmtPlugin.bin
macbookpro:Downloads ryan$ ./CcmServRtmtPlugin.bin

UPDATE: If you are installing 8.6 or later on Snow Leopard or Mountain Lion you will recieve an error along the lines of:

/tmp/install.dir.320/Linux/resource/jre/bin/java: cannot execute binary file

If you want the full story on what's going on here, UCGuerrilla does a great job at explaining it here. (BTW, @ucguerrilla thanks for putting that up - I've been a bit too busy with the kiddos to update this after finding the same solution for my coworkers.) If you want the short fix, use the following command:

sh CcmServRtmtPlugin.bin LAX_VM /usr/bin/java

UPDATE: If you are installing 10.0 or later and getting a java error along the lines of:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/cisco/ccm/serviceability/rtmt/ui/JRtmtMain : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

This one means that you most likely do not have the latest Java update installed or as in my case, your terminal apps are using a different version. On my system, the web browser would report that I had Java 7 Update 51 installed, but the command line shows that terminal apps are using 1.6:

macbookpro:~ ryan$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

In my case, this is because I have the JDK installed. You can determine this by checking where Java is actually pointing at:

macbookpro:~ ryan$ which java
/usr/bin/java
macbookpro:~ ryan$ ls -l /usr/bin/java
lrwxr-xr-x  1 root  wheel  74 Oct 22 16:29 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

If we were only running the JRE, it would point to somewhere else on the system which does show the same as the web browser:

macbookpro:~ ryan: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

To fix this, simply download the 7u51 JDK and install it. RTMT works right away after installing this. Alternatively you could delete the symlink and point it to the JRE, but I have not tried this to see if there are any other issues.

At this point, you'll run through the installation screens. Just accept the defaults as they normally work for most folks.

Back in Terminal.app:

macbookpro:Downloads ryan$ cd /Applications/JRtmt
macbookpro:JRtmt ryan$ sed -i .orig 's/\.\/jre\/bin/\/usr\/bin/' run.sh

This last command will copy out the run.sh to run.sh.orig and change the location of java to match what is installed on your system.

Depending on which version of RTMT you are running, it will either bomb out on you when you run it the first time, or you may get the message about Timezone information not matching. If you get this prompt, select yes to download it. Either way, you'll still see mention of the tzupdater.jar in the output as shown here.

macbookpro:JRtmt ryan$ ./run.sh

Enter your CUCM IP Address, username and password, and the application will bomb on you, which as I said is just fine. If it didn't bomb out on you, and your in RTMT, then keep this page handy as you'll need to start here to get it running again once you update your Mac. You should see something like this at the end of the output in Terminal.app (this output is from an older plugin - the important part here is the tzupdater.jar):

2010-11-01 08:22:28,496 [SplashThread] INFO  rtmt.control  - [INFO]Timezone ServerVersion:tzdata2009p
2010-11-01 08:22:28,496 [SplashThread] INFO  rtmt.control  - [INFO]Timezone ClientVersion:tzdata2010l
2010-11-01 08:22:28,496 [SplashThread] INFO  rtmt.control  - [INFO]Timezone isUpdateRequired:true
2010-11-01 08:22:28,678 [SplashThread] INFO  rtmt.control  - [INFO]tzupdater.jar downloaded to:/Applications/JRtmt/tzupdater.jar
java.home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
java.vendor: Apple Inc.
java.version: 1.6.0_22
JRE time zone data version: tzdata2010l
There's no tzdata available for this Java runtime.
macbookpro:JRtmt ryan$ 

Or from the newer versions:

2013-10-29 22:37:15,411 [SplashThread] INFO  rtmt.control  - [INFO]Timezone ServerVersion:tzdata2012c
2013-10-29 22:37:15,411 [SplashThread] INFO  rtmt.control  - [INFO]Timezone ClientVersion:tzdata2013d
2013-10-29 22:37:15,411 [SplashThread] INFO  rtmt.control  - [INFO]Timezone isUpdateRequired:true
2013-10-29 22:37:15,412 [SplashThread] INFO  rtmt.control  - [INFO] No tzUpdateFlagfile prompting the user.
2013-10-29 22:37:20,788 [SplashThread] INFO  rtmt.control  - [INFO] trying to download the tzupdater.jar
2013-10-29 22:37:22,651 [SplashThread] INFO  rtmt.control  - [INFO]tzupdater.jar downloaded to:/Applications/JRtmt/tzupdater.jar
2013-10-29 22:37:22,652 [SplashThread] INFO  rtmt.control  - [INFO]:TzDataManager:placeFlagFile: create tzUpdateFlagFile successfully.
2013-10-29 22:37:22,653 [SplashThread] INFO  rtmt.control  - [INFO] tzupdater.jar downloaded need restart, shutting down.
2013-10-29 22:37:22,653 [SplashThread] INFO  rtmt.control  - ======>Exit System

To fix this issue, simply run the following command (I'm including the output as well):

macbookpro:JRtmt ryan$ sudo java -Djava.vendor="Sun Microsystems Inc." -jar ./tzupdater.jar -u -f -v
java.home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0_65
JRE time zone data version: tzdata2013d
Embedded time zone data version: tzdata2012c
Extracting files... done.
Renaming directories... done.
Validating the new time zone data... done.
Time zone data update is complete.
mackbookpro:JRtmt ryan$

That's it!!! Now try and run it again, you'll have to enter your information again for the login window, but afterwords this time you should fire right up into RTMT.

macbookpro:JRtmt ryan$ ./run.sh

Ok. So it runs now. Let's make it so you can run it from the GUI, instead of having to run the shell script every time.

Open up Applescript Editor. Add this single line:

do shell script "cd /Applications/JRtmt; ./run.sh"

Hit the run button and make sure it works for you. Once again, this assumes that you installed to the default location of /Applications/JRtmt. Assuming that it does work for you, click File > Save As, select Application for the File Format and save this wherever you want. Probably in the JRtmt folder would make the most sense, but you can do whatever you want.

That's it. You're done. Have fun.