Real Time Monitoring Tool on Mac OS X
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.
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
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.