Recently in Windows Category

OpenNMS 1.6.0 Is Out

| No Comments | No TrackBacks

...and it features a ton of changes since the last stable release. Here's what I put in the release notes as an introduction to the 1.6.0 release:

Release 1.6.0 is the first stable release in the OpenNMS 1.6 series.

It's been 3 and a half years since the last OpenNMS stable version, 1.2, was branched and released as production-ready. In that time, OpenNMS as a project has changed tremendously, the community has grown exponentially, and massive numbers of new features have been incorporated into the "unstable" 1.3.x series.

In that time, the unstable codebase solidified to the point that The OpenNMS Group supported it as if it were stable; it was at least as stable as 1.2.x was, but many users held off on upgrading because of the unstable moniker.

After a lot of work, and a renewed focus on getting the next stable release out the door, we are now prepared to declare OpenNMS 1.6 release-candidate-ready.

Why 1.6 instead of 1.4? 3 years is a lot of time, and a lot has happened in that time. We're not ready to call it 2.0, we want to redo the web UI first, but 1.4 didn't really do the massive changes since 1.2 justice. So: 1.6 it is.

Since it is a lot easier to do a release than it was in the 1.2 series (now that the native code is moved out into separate packages, and OpenNMS itself is distributed as pure-java sources), the goal is to continue to be on a much faster 6-month or year cycle for new releases.

Please, let us know if you have any problems at all in our Bugzilla bug tracker.

To give an idea of what's changed, I put together a list of major changes since 1.2 with a couple of the other OGP folks.

Architecture and New Subsystems

  • Alarms: The largest architectural change from a user point of view is the addition of the concept of Alarms. Events mean so many different things in OpenNMS, it made sense to have a higher-level "event" which represents significant happenings in the system. Alarms fill that role, and as we move towards 2.0, events will be de-emphasized in favor of alarms for reacting to significant events. The new alarms system will allow important events to be "reduced" into alarms. If an event comes in with the same "reduction key" as a previous event, the alarm will increment the "count" of events, yet it will still only take up a single line in the alarm browser. Clicking on the count will bring up the event browser with just the events that have been reduced.
  • Automations: It is now possible to do a variety of automated actions through "automations". For example, say you have an alarm with the severity of Minor that has not been acknowledged in the last 20 minutes you might want to escalate the severity. Vacuumd has been enhanced with a configuration that now allows configuration of processes we're calling Automations that are defined by Triggers and Actions.
  • Windows: OpenNMS now runs on Windows.
  • PostgreSQL: OpenNMS supports running on top of PostgreSQL 7.4 through 8.3.
  • Syslog Improvements: The syslog daemon included with OpenNMS has been significantly enhanced, including regular-expression matching and back-reference support.
  • Model Importer: OpenNMS can now import node, interface, and service information from an external provisioning source. This facility can augment or replace the discovery functionality provided by Capsd.
  • Categories: Nodes can be assigned to one or more categories (eg Production/Test, Datacenter A, Datacenter B); these categories can be used in filter rules. This permits to selectively forward Alarms into certain destination paths based on the node category: "Send Alarms for Production in Datacenter A to Team A, Send Alarms for Test Systems in all Datacenters into the Maintenance Queue".

Polling and Data Collection

  • Generic-indexed data collection modeling makes it easy to collect, graph, and threshold on multi-instanced performance data, such as values residing in SNMP MIB tables.
  • SNMP4J: In addition to the existing SNMPv1 and SNMPv2 support provided by our in-house JoeSNMP Java library, OpenNMS now supports SNMP v1 through v3 using SNMP4J. The SNMP4J strategy is enabled by default, but you can go back to the JoeSNMP one if you have a specific need for bug-for-bug compatibility with OpenNMS 1.2's SNMP behavior.
  • JMX: Support was added for polling and data collection.
  • HTTP Collector: Support was added for data collection via HTTP.
  • NSClient: Support has been added for NSClient (and NSClient++) polling and data collection.
  • Data Export: It is now possible to export RRD data through the web UI.
  • Windows Service Monitoring: Windows services can be monitored through the NSclient support and via a special-purpose poller monitor that uses SNMP.
  • Mail Transport Monitor: It is possible to monitor the complete round-trip availability of a mail system, from sending to checking a mailbox.
  • Page Sequence Monitor: Support has been added for monitoring a complete transaction against a web site, including cookie storage, form submission, and checking the results of the output of a URL.
  • Distributed Monitoring: There is now a distributed monitor that allows you to do service monitoring from multiple locations reported to a single OpenNMS instance.

Thresholding

  • Thresholding for collected performance data is now performed in-line with collection by default. This change makes threshold evaluation virtually instantaneous while drastically lowering the CPU and I/O overhead associated with thresholding. Thresholding for latency data (data from the poller monitors) is still done in the old asynchronous fashion.
  • Absolute Change Thresholds: A new type of threshold useful for monitoring the values of such variables as radio transmitter power (in dB) where a relative change of a given magnitude may not be noteworthy, but an absolute change above some threshold is considered significant.
  • Expression-Based Thresholds: A new type of threshold allowing the user to specify an expression, in standard mathematical terms, involving one or more data source names, operators, and constants.
  • Custom Event UEIs in Thresholds: The types of events generated when thresholds are exceeded or re-armed can now be specified on a per-threshold-definition basis, allowing for much more flexibility in using thresholds as the basis of alarms and notifications.

Notifications

  • Roles: OpenNMS now supports on-call roles. If you have, say, an On-Call role where the users change over time, this feature allows you to schedule them in advance and OpenNMS will manage that schedule for you.
  • Group Duty Schedules: Works like normal duty schedules, except if a Group is listed as a target in a destination path, the duty schedule will apply to the whole group (individual users and roles also in the target are not affected).
  • JavaMail: JavaMail is now the default API used for sending e-mail notifications. This change eliminates the burden of installing, configuring, and troubleshooting a local mail transport agent such as Sendmail or Postfix on the OpenNMS server.
  • Path Outages: A basic path outage capability has been added. This feature addresses the need to suppress notifications for nodes that appear to be down to the OpenNMS system due to a failure in the network path between the nodes and OpenNMS.

Integrations

Web UI

  • Jetty: OpenNMS has a built-in web server (including AJP support), and no longer requires Tomcat for the web UI (although it can still optionally be used)
  • JFreeChart Support: OpenNMS now supports a JFreeChart integration which lets you add charts to the web UI.
  • Zooming: It is now possible to interactively zoom in on graphs.
  • StrafePing: OpenNMS includes an implementation of SmokePing.
  • RSS Feeds: Support has been added for RSS feeds for notifications, outages, alarms, and events.
  • New Look: The OpenNMS web UI got a face lift.

Google Chrome on Mac OS X (In Wine)

| 1 Comment | No TrackBacks

Just a quick note to say that based on these instructions, I was able to get Google Chrome running on Mac OS X, using Fink.

You'll need to enable unstable ("fink configure", followed by "fink selfupdate-rsync"), and then do a "fink install wine cabextract". Then start at the "offline installer" part of the instructions.

Woot!

Google Chrome on Mac OS X (Screenshot)

Microsoft, Why Do You Treat Me Like A Pirate?

| No Comments | No TrackBacks
Windows XP: Legitimate F**king Copy Edition

Do you see that picture on the right? I bought Windows XP when it came out. An actual legitimate copy of Windows XP Home Edition. It promised a lot of things that it eventually pretty much delivered after a couple of service packs. It's moved from machine to machine as I've updated hardware. I've gotten rid of basically all of my old PC hardware and now it lives on my Macbook Pro. I've been reasonably happy with it. Except...

With such a long history, I've long-since passed the time when Microsoft accepted my key without question through internet activation. Do you know what happens when you pass that time? Painful crushing phone activation.

Observe:

Windows XP Phone Activation

First, you have to call a number, and enter 9 sets of 6 digits (they're kind enough to let you use the touch-tone phone to do it, instead of braving their voice recognition system). Then, on the 9th set, it always complains that it didn't understand the last set of digits, until you're forced to tell it to forward you to a human without finishing the automated input.

Then, since it didn't actually record all of those numbers you put in, you get to read them again to the call-center person.

Then, they read a string of numbers back to you, that you have to type in, and finally, in true Microsoft fashion, you hit "Next", followed by "Finish", because it wouldn't be Windows without a wizard with a few extra unnecessary clicks. ;)

Have you seen what you have to do to activate a pirated version of of Windows XP? I did a quick Google search out of curiosity. You use a pre-made serial number, and then run a command that will do the activation for you, and one more command to trick Windows Genuine Advantage(TM). Voila!

It's sad that I find it so tempting to pirate something I legally own just because it's so frustrating to activate the damn thing.

The best part is, the only reason I had to re-activate at all was because the logic board went bad in my MacBook Pro, and Windows no longer recognized it as the hardware it was installed on.

Even better, now that it's done, I have to re-activate every time I switch from booting in VMware to booting natively through Boot Camp, or vice-versa.

Alternatively, you know what I had to do to register my copy of Mac OS X when I installed it? Nothing. Imagine that.

OpenNMS Installer

| 4 Comments | No TrackBacks

So I've spent the last week or so working on a Windows installer for OpenNMS, using IzPack, an awesome Java-based installer. After some trial-and-error getting it to handle paths nicely (some of our code is not spaces-in-paths clean, so I had to hack something up to get the DOS 8.3 filename), it seems to be working!

We're going to spend some time testing it and making sure everything works well enough to be considered an "alpha", but this certainly appears to put us on track to have a nice installer working shortly after 1.3.8 is out -- which should be any day, there are only a couple of bugs left on the blocker list.

...and since IzPack is a Java-based installer, it actually works on Mac OS X and Linux as well, and in theory, anywhere else that supports Java 1.5... (Although it is still recommended you use native package management, since you'll get config-file management and other nice stuff...)

Embracing and Extending OpenNMS

| 1 Comment | No TrackBacks
Embracing and Extending OpenNMS

Let me start with a story. It's a story of answering a simple question in the #fink irc channel. What was my answer? It doesn't really matter. What matters is that I used "..\lib" in my response.

Why does it matter? OH GOD I JUST ACCIDENTALLY USED A BACKSLASH TO REPRESENT A PATH IN IRC!

That's right, this week I've been in the Land Of Evil, working on porting OpenNMS to Windows. I've been so heads-down into it, I actually started thinking in backslashes even in a Mac OS X channel. Oh, the shame. <grin>

Anyways, it actually (surprisingly!) mostly works. The hardest part was porting jicmp, which required setting up a mingw environment and fixing our configure stuff in a lot of ways. And I've gotta say, libtool and I have had our differences in the past, but it performed beautifully at hiding the details of making a .dll file out of our code.

There's still plenty left to do. The docbook stuff doesn't run right. Our GWT maven plugin inexplicably fails, even though the command-line it generates actually works manually. It will be a lot of work putting together an installer. But overall, it was much less trouble than I had expected.

Say what you will about Java, but out of our 250,000 lines of code, it took less than a week to go from 0 to proof-of-concept with code written entirely on UNIX-like systems.

Woot!