Happy New Year

Happy New Year everyone. Hope everyone has a safe New Years celebration. Personally, I'll be happy to see 2009 go. It's been a little too crazy here towards the end. Hoping that 2010 settles down a bit.

 
 

Real-Time Monitoring Tool on Mac OS X

Let me first preface this post by saying that this is in no way a supported configuration, and your mileage may vary. Basically, if it breaks, or doesn't work for you, you're on your own. I'm only posting this after numerous requests for how I got RTMT running on my Mac.

First things first. Go and log into your CCMAdmin and download the Linux version of the Cisco Unified CallManager Serviceability Real-Time Monitoring Tool from the plugins page.

plugins.png

Save this to somewhere you'll remember. Next, open up Terminal and navigate to the folder that you saved the plugin to. (In my case, I saved it to a folder on the desktop named RTMT.)

$ cd ~/Desktop/RTMT
$ ls -l *.bin
-rw-r--r--@ 1 username  staff  59331963 Oct 13 21:58 CcmServRtmtPlugin.bin

Make the .bin file executable:

$ chmod +x ./CcmServRtmtPlugin.bin 
$ ls -l *.bin
-rwxr-xr-x@ 1 username  staff  59331963 Oct 13 21:58 CcmServRtmtPlugin.bin

And finally launch the installer:

$ ./CcmServRtmtPlugin.bin 
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

This will run you through the installer. If you're just looking through this without reading, you'll miss the fact that YES, there are supposed to be errors on the Install summary. These errors when you look at the install log are just the installer trying to install some .desktop files into directories that don't exist on OS X. (On older versions such as 6.x, these errors are different but can also be ignored.)

Setup1.png

Setup2.png

Make sure the install folder is set to your Applications folder, or you can adjust it to wherever you want this to reside.

Setup3.png

Setup4.png

Setup5.png

Setup6.png

Now that it's installed, we need to change one more thing to make this work. You can do this one of two ways, but I suggest the second option for it's simplicity.

Option #1:
Edit the file /Applications/JRtmt/run.sh. Change the "./jre/bin/java" to java so the file looks like this:

java -Dsun.java2d.d3d=false -Xbootclasspath/a:.:./lib/xerces.jar:./lib/log4j.jar:./lib/jcchart450J.jar:./lib/collections.jar:./lib/JbcBeans.jar:./lib/soap-common.jar:./lib/axis.jar:./lib/commons-discovery.jar:./lib/commons-logging.jar:./lib/jaxrpc.jar:./lib/saaj.jar:./lib/wsdl4j.jar: -jar JRtmt.jar

Now you can run RTMT by calling /Applications/JRtmt/run.sh from a command line, or AppleScript, which leads to the better option.

Option #2:
Open up the AppleScript Editor and paste in the following:

do shell script "cd /Applications/JRtmt; java -Dsun.java2d.d3d=false -Xbootclasspath/a:.:./lib/xerces.jar:./lib/log4j.jar:./lib/jcchart450J.jar:./lib/collections.jar:./lib/JbcBeans.jar:./lib/soap-common.jar:./lib/axis.jar:./lib/commons-discovery.jar:./lib/commons-logging.jar:./lib/jaxrpc.jar:./lib/saaj.jar:./lib/wsdl4j.jar: -jar JRtmt.jar"

Run this once to make sure that you get the RTMT login.

rtmt-login.png

Once you do, just hit the Cancel button. Assuming that it's working and does launch, then you can save this script to launch RTMT in the future. Do File > Save As. Change the name to RTMT, and navigate to your Applications folder. Change the File Format to Application, and click Save.

saveas-app.png

That's it. Run this app and you've got RTMT on OS X. Comes in very handy when you need to grab logs and such from systems, now you don't need to fire up your Windows VM to get them.

rtmt-main.png

Oh, and this does support updating the RTMT tool as well. So if you install from a 7.01 install and log into a 7.1 install, RTMT will upgrade itself and work just fine. Have fun. Hope this helps someone else out like it has me.

 
 

Google Wave Testing

Just testing out some embedded wave stuff. I'm planning on working on a habari plugin for this. If all you see is the Wave login, then you won't be able to do anything with this. Those that do have a wave login should be able to use the wave.

If you don't see the wave login... Well, I've been having mixed results with that but think I've got the cause nailed down now.



 
 

Cisco Mobile iPhone Client

Cisco's Mobile Communicator Client for the iPhone is available in the app store now. (Click on any of the thumbnails for a larger image.)

Main Icon.jpgEntrySplash.jpg

So what's this one do for you? Easy. Provides you with quick access to many of your Cisco IP Phone calling features such as:

  • Visual Voicemail - Access your business voicemail system, just like you are at your desk phone.
  • Dial Via Office - Place business calls from your iPhone using your company phone system.
  • Mobile Connect - Receive calls to your work number on your iPhone.
  • Meetings - Join your business meetings directly from your iPhone. Tap a name in your Meeting List to join the audio portion or automatically launch Cisco WebEx Meet to attend the web portion.

I'm not going to cover deployment and configuration here as CUMA has been around for a while. I just wanted to show a few of the screens now that the iPhone client has finally hit the market. Cisco put some decent status/progress icons in this app, to tell you where it is in the startup process as well as it's status. I really wish that they would have done something like this for Cisco Mobile Supervisor.

Connecting.jpg
Connecting 2.jpg
Connected.jpg

They were even nice enough to let you know when some of the services are failing instead of having to dive into a bunch of buried screens:

Svcsoffline.jpg

Here's the main five screens of the app:

  • Favorites - Works the same way that Favorites do on your iPhone, but are separate from the iPhone favorites.
  • Recents - Combines the recent call lists from your iPhone and your Cisco IP Phone. (Somewhat useless if you have mobility enabled.)
  • Contacts - Exact same as the contacts on your iPhone.
  • Meetings - Integration to MP/WebEx.
  • Voicemail - Visual Voicemail interface to your Cisco Voicemail.

(Excuse the blurring of the text in these images. I don't have everything setup in my lab, so don't have demo data to display for the screenshots. Names and numbers blurred to protect the innocent and all that.)

Favorites.jpgRecent.jpgContacts.jpgMeetings.jpgVoicemail1.jpg

The Visual Voicemail gives you the option of drilling into the contact information, as well as giving the option for doing a callback to the contact or number.

Voicemail2.jpgVoicemail_Contact_Detail.jpg

At the top of the main screens, you'll have two buttons, one for dialing, and one for configuration:

DialKey.jpg

Pressing the Dial button will bring up the dial screen as you'd expect. The interesting part happens after you press the Dial key on the keypad. You get the option to place the call via your office phone or your iPhone.

Dial0.jpgDial1.jpgDial2.jpgDial3.jpg

And of course, all of the configuration/settings screens from the application:

Settings1.jpgSettings2.jpgDialOptions.jpgServices.jpgNotifications.jpgConnectionStatus.jpg

Very cool application. Getting lots of use from me.

Cisco FAQ for Cisco Mobile is here. More info on CUMA can be found here.

 
 

Google Analytics Dashboard Plugin

It's finished! I've uploaded the plugin to the -extras repo, so you can grab it there. The current version requires Habari 0.7 to run. I've gone ahead and made a 0.6 branch. I don't have 0.6 installed anywhere right now to test, so if you get the chance to, let me know if it works or not. Once I find out I'll make a tag for it.

The plugin allows you to create your own dashboard modules for any reports that you want to see. Each module is made up from a XML file which tells the plugin what info we need from Google Analytics, and a PHP template that is used to output the modules display.

The templates have access to all of the data from the report. This way if you need to override anything that the plugin functions would handle you can. A perfect example is actually in one of the default modules, Content Overview. That template outputs the module pane without using any internal functions:

<ul class="items">
	<?php foreach ( $data[1] as $k => $v ) { ?>
	<li class="item clear">
		<span class="message pct75 minor"><?php echo $k; ?></span>
		<span class="date pct15 minor"><?php echo $v; ?> views</span>
		<span class="comments pct10"><?php echo number_format( (($v / $data_total) * 100), 2); ?>%</span>
	</li>
	<?php } ?>
</ul>

As I mentioned, you can also override any builtin functions that you need to. Googles GeoMap Visualization doesn't seem to properly detect the width of the DIV that it's contained in, so it tends to be wider than what your div actually is. To work around this, in the template, we actually add in a little detection and do the chart options there instead of in the map_overlay.xml.

<div id="div_<?php echo $slug; ?>"></div>
<script type="text/javascript">
// Get the actual width of the div
var divWidth = document.getElementById("div_<?php echo $slug; ?>").offsetWidth;
// Load up our GeoMap options instead of using builtin $js_opts
var opts = { 
	height: 200,
	width: divWidth,
	showLegend: false
};
<?php echo $js_data; ?>
<?php echo $js_draw; ?>
</script>

So to create your own dashboard modules, just create your report_name.xml and report_name.php in the custom directory. All of your custom modules should go here. I've split this up so that you can upgrade the plugin without losing any custom modules you have already done.

Just to show you how flexible this is, I'll cover how to create a Visitors vs Pageviews module for your dashboard. (Don't worry about copying all of this out. It's available as example_report_1 in the custom directory.) First, we'll create the XML that tells the plugin what dimensions and metrics we want to pull from Google Analytics.

<?xml version="1.0" encoding="utf-8" ?>
<report>
	<name>Visits vs Pageviews</name>
	<type>linechart</type>
	<opts>height: 200, backgroundColor: 'FAFAFA', legendBackgroundColor: 'FAFAFA', legend: 'bottom'</opts>
	<sort>none</sort>
 
	<dataReference order="1">
		<dimensions>ga:month,ga:day</dimensions>
		<metrics>ga:visits</metrics>
		<sort>ga:month</sort>
	</dataReference>
	<dataReference order="2">
		<dimensions>ga:month,ga:day</dimensions>
		<metrics>ga:pageviews</metrics>
		<sort>ga:month</sort>
	</dataReference>
 
	<dataTypes>
		<row type="string">Date</row>
		<row type="number">Visitors</row>
		<row type="number">Pageviews</row>
	</dataTypes>
</report>

And here's the PHP template that it uses:

<div id="div_<?php echo $slug; ?>"></div>
<script type="text/javascript">
	var opts = { <?php echo $js_opts; ?> };
	<?php echo $js_data; ?>
	<?php echo $js_draw; ?>
</script>

Pretty simple, huh? This will output the following on your dashboard module:

example_report_1.jpg

Any questions/problems, you can leave a comment here or catch me in #habari.