18 Replies Last post: Mar 12, 2008 11:31 AM by Nick Stephen  
Click to view Erik Dahl's profile Novice 9 posts since
Jan 2, 2008

Jan 21, 2008 2:12 PM

Is it possible to make an open agent?

 

During the BarCampESM I gave a quick talk about the idea of an Open Agent. Today in the network domain there is a standard SNMP agent on pretty much every device. When you move up to the server and application teir things get a little more sketchy. Its it possible to get a standardized agent at the server teir? Check out the deck I presented under the documents tab.

 

-EAD

Click to view Greg Wallace's profile Novice 17 posts since
Dec 31, 2007
Jan 23, 2008 10:39 PM in response to: Erik Dahl
Re: Is it possible to make an open agent?

 

Hi Erik.

 

 

What do you think about Sun's Common Agent Container technology? https://common-agent-container.dev.java.net/

 

 

Greg

 

 

Click to view Greg Wallace's profile Novice 17 posts since
Dec 31, 2007
Jan 26, 2008 8:46 AM in response to: Erik Dahl
Re: Is it possible to make an open agent?

 

as a general rule I agree that java for an agent isn't optimal, but I wonder if the implementation in CAC overcomes some of the historical problems, like being bloated, etc.

 

 

I asked the guy at Sun that owns CAC to wiegh in on this discussion

 

 

Click to view Nick Stephen's profile Novice 1 posts since
Mar 12, 2008
Mar 12, 2008 11:31 AM in response to: Greg Wallace
Re: Is it possible to make an open agent?

 

Hi,

 

 

I'm the lead of the Common Agent Container open-source project. The Common Agent Container (CAC) provides a management daemon designed for JMX and JDMK-based management functionality. CAC accepts modules that extend its existing JMX/JDMK agent with new managed objects, connectors, or more generally, new functionality.

 

 

One of the major differentiators for the CAC project is the multi-model, multi-protocol nature of the daemon, its tie-in to platform security models,

and its ability to run using Java SE for full feature-set or Java ME for small footprint.

 

 

The Common Agent Container open-source project, licensed under GPLv3 with classpath exception, is:

 

  • A cross-platform Java-based management daemon

    • Solaris, Linux, HPUX, Windows; Java SE, Java ME

  • supporting standard management models and protocols

    • JMX, SNMPv1,v2,v3, RMI, web-services

  • and with integrated pluggable security.

    • TLS, PAM, RBAC, SBD, auditing

  • It is a dynamically extensible container

    • Modules can be deployed, undeployed and managed at runtime

  • which is simple to develop for and to use.

    • Full NetBeans integration for Common Agent Container module developers

    • The easy learning curve of JMX

 

The Common Agent Container is used in a wide range of products from Sun Microsystems

Integrated in Solaris 10, xVM Ops Center, JES MF, DS, PS, N1 System Mgr, Storage Portal, Solaris Basic Registration, ...

 

 

Also we have ws-man (JSR 262) support and have developed CIM and WS-CIM but that's not yet released in open-source.

 

 

CAC's weakness is also its strength - it's not designed as a dedicated CIM-OM or as a dedicated SNMP agent, it's very flexible and allows the same instrumentation written against JMX APIs to be leveraged by different protocol adaptors, sometimes with a thin mediation layer, sometimes directly as-is.

 

 

If you have more detailed info, check out the web-site, and feel free to ask questions!

 

 

nick

 

 

 

 

Click to view Berkay's profile Novice 21 posts since
Dec 31, 2007
Jan 26, 2008 10:40 AM in response to: Erik Dahl
Re: Is it possible to make an open agent?

 

I think I may be missing some background discussions on this. What are the shortcomings of existing solutions.. For example the Hyperic agent and the SIGAR layer you mention, what does it not do?

 

 

 

Same question about the Sun agent that is also mentioned. Where do they fall short to require a new agent?

 

 

Click to view Greg Wallace's profile Novice 17 posts since
Dec 31, 2007
Jan 26, 2008 4:26 PM in response to: Berkay
Re: Is it possible to make an open agent?

 

I'll give you my perspective from NetDirector - and it isn't so much that these agents lack anything (or not at least from my pov) but rather how they do what they do

 

 

we actually built the first netdirector agent in C so it would be lightweight and fast. for us, since we always expected netdirector to be deployed in medium to large environments, we were sensitive to the resources that the agent would consume on the managed servers.

 

 

But, we found that C really fell down in terms of portability. So, when we wanted to support non-Linux OSes (Solaris in particular), if we stayed with C, we would have basically had to rewrite the whole agent. And from an ongoing mainenance perspective, it seemed really untenable to have a unique agent code for each OS.

 

 

So, we decided to go with something higher level. We looked at Java, but decided against it because, one, it wasn't open source at the time, and so we worried how much we could customize it, and 2, it was too resource intensive. So we went with Python, which was a good compromise - a little bigger than the C agent, but not much and all the portability we wanted. It's worked really well, and we actually have it running on WIndows in the lab, which is cool.

 

 

Fast forward to today. Java is open source. I am stil a little concerned about its "fatness," but the benefit of not having to maintain our own agent, and the prospect of total ubiquity if Java was selected as (and suitable for) a common agent could persuade me.

 

 

I am a little surprised about Erik's comment regarding Cigar being needed in order for Hyperic's agent to support different OSes, since I was under the impression that Java was portable...So, I'm interested in learning more about this.

 

 

Click to view Berkay's profile Novice 21 posts since
Dec 31, 2007
Jan 26, 2008 4:45 PM in response to: Greg Wallace
Re: Is it possible to make an open agent?

Nothing is portable when you get to the machine specific data. SIGAR is written in C to work with each platform, and it provides Java binding. The important point is that this is a lot of work and it is already written. The differences of each platform is abstracted and there is a single API to access all the system information.

Click to view Thomas Lockney's profile Novice 10 posts since
Nov 11, 2007
Jan 26, 2008 10:09 PM in response to: Berkay
Re: Is it possible to make an open agent?

When it comes to making the kind of low-level system calls necessary for systems management tasks, Java is far from ideal. Honestly, I don't think any language is going to be a panacea here. That said, I'm wondering if anyone has consider using C along with a high portable runtime library like APR? You would still need to write OS-specific portions of the code, but appropriate abstractions should make that not too unmanageable.

Click to view Coté's profile Novice 1 posts since
Dec 30, 2007
Jan 26, 2008 5:40 PM in response to: Erik Dahl
Re: Is it possible to make an open agent?

 

When I worked at BMC, we wrote the agent in Java and it was just fine. Java brings a huge amount of cross-platform portability to make it worth it, besides that, "everyone" knows Java.

 

 

Of course, we had to write adaptors in C/C++ for accessing things like WMI, perfmon, and other interfaces that we couldn't access in Java or break down to plain-text/XML (which could then be access in Java).

 

 

In reading this thread, I wrote up t[he idea of getting BMC to open source it's agent|http://www.redmonk.com/cote/2008/01/26/of-open-agents-and-wheel-reinvention-the- bmc-performance-manager-agent/]. Of course, as pointed out, Sun seems to be jumping the gun here with an agent. Exactly what an "agent" would be is sort of up in the air, but I'm sure both of those agents and the many other out there have things to offer.

 

 

To me, it seems like some third party that writes both spec and code would be where you'd want this effort to go on, something like Eclipse. Standards bodies on their own have a terrible track record of helping the entire IT management community, while orginizations that just code tend to be isolated and have the same success at helping the entire industry. Pulling up the Eclipse example, again, that another method that worked out and it working well to service the commiditization needs of the larger community - namely open sourcing the IDE and tools framework.

 

 

Click to view Greg Wallace's profile Novice 17 posts since
Dec 31, 2007
Jan 26, 2008 6:09 PM in response to: Erik Dahl
Re: Is it possible to make an open agent?

 

All,

 

 

I tossed together a quick spreadsheet that I thought might serve as a starting point for evaluating some of the options.

 

 

You can find it here: http://spreadsheets.google.com/ccc?key=pKdnOssmUJpxbsu_Xw3X-Ng

 

 

 

 

Click to view Michael DeHaan's profile Novice 3 posts since
Jan 28, 2008
Jan 28, 2008 11:25 AM in response to: Erik Dahl
Re: Is it possible to make an open agent?

 

/me stands up and waves.

 

 

 

 

Hi. I'm one of the Func guys.

 

 

If any of you are interested in Func, I'd invite you to stop by https://fedorahosted.org/func and join the mailing list and IRC channel. Feel free to bring up whatever topics you like, and we're there for Q&A too.

 

 

I was on the OMC lists a while back -- and yes, I definitely agree that there is potential in this sort of thing and would love to see it happen. I too originally came from a Java/CIM world, have experience with both, and believe that (especially for a certain class of admins and FOSS developers), alternatives are great to have and are in some ways easier to build a community of admin/developers around.

 

 

If you have questions, or have ideas on how to move this forward, please let us know... preferably on the list, as I may forget to check back here -- though I'll try to remember

 

 

One of the obvious concerns are "do I have to use Python?" and/or Fedora/RHEL... thankfully, no. We do have some guys who have gotten Func running on Debian, SuSE, and FreeBSD... Windows is presumably doable... and someone has written a small Perl module that allows for calling Func minions. As those ports evolve, keeping those in tree, and maintained by the people who are interested in them is important... Minion modules do have to be written in Python presently, though there's nothing saying they can't in turn call other plugins and so forth... for instance NagIOS plugins are just stdin/stdout based and there's a simple module there already (too simple perhaps) for being able to hook into those.

 

 

As time goes on, I see the modules evolving and increasing in number... what's there now is really just a start and it's all pretty much changeable. Patches and other involvement is absolutely welcome. We're really concerned about making a framework that is extremely easy to contribute to, easy to understand, but also offers a secure communications channel that allows things to be audited and controlled in useful ways -- being able to schedule asychronous jobs, address servers in globs ("mailservers*.example.com") and so forth. If there are any features that seem to be missing (for instance, we don't have minion 2 minion communication implemented yet), please bring it up on the list or maybe contribute a patch. I think there are a lot of different places we could take this.

 

 

I look forward to seeing what can happen with this.