Application monitoring with NetXMS

Started by lomo, July 16, 2013, 11:17:56 PM

Previous topic - Next topic

lomo

I find NetXMS very flexible platform and consider it using with our customers and extend the monitoring area also to application monitoring (Databases/Application Servers/Custom applications...). Technically this can be done using subagents (and probably write new ones).

However so far I could not find any functionality of creating new object types such as Application Server or Database. Only available type where metrics from NetXMS agent can be assigned in Infrastructure services is the Node type.

In NetXMS it seems those custom metrics available through NetXMS are always bound to node where they are actually monitored from. Probably a functionality to create new object types in Infrastructure services and binding performance parameters from NetXMS agents (or other sources such as SNMP) would be sufficient.

Any ideas?

rskolnik

To expand on what my colleague wrote: we consider applications running on certain node to be objects on their own. For example Oracle database (and its running instances, listener, ...) is an object that can be monitored via various ways. State of this object has meaning in  context of some Business Service. Itself it partially depends on resources of the host where it's running (enough CPU and disk space for example) but not entirely (some of its state is not affected and is independent from underlying OS - for example number of connections in pool). This leads us to a concept where such thing (Oracle database) should be an object of its own state driven by its monitored attributes (and affected by propagation from underlying nodes that represent OS or for example storage it uses). This concept of having nodes for higher-level application entities is supported by following scenario: imagine a host where you have Oracle database running and also Apache web server running. Oracle is being used by Business Service 1, Apache is being used by different Business Service 2. Currently there is no way (at least I do not see one) how to propagate status of Oracle into Business Service 1 tree and status of Apache into Business Service 2 tree. Metrics of Oracle and Apache should not be mixed together with its underlying node.

So generally there should be an option for (sub)agents to create instances of application entities it monitors. This would also make an easy way to create "proxy" agents that feed information from other management systems. Does this make sense?

Victor Kirhenshtein

Hi!

It makes perfect sense. I was thinking for some time about representing different entities as separate object classes. Main reason why this not implemented yet is lack of resources (time and/or staff).

System itself can be expanded this way quite easy, and creating new object classes is not a big issue. Also, we already have implemented APIs which allow creation of server modules and corresponding UI plugins to provide additional object classes, so it is even possible to have custom objects. Creating such extension, however, requires good understanding of server and GUI internals.

Another possible option is to allow user to configure custom objects. It can be some simple extension to container (or just allow containers to have DCIs) which allows data collection. Actual data for DCIs defined on such objects can be read from nodes using "proxy node" option in DCIs or transformation scripts.

Some workarounds also exists - for example, you can create additional "fake" nodes without IP address to represent components, and use same proxy node and/or transformation script technique to get data.

Best regards,
Victor

rskolnik

Victor,

thanx for quick answer. Knowing this is possible and even on your list is great. I'd be willing to dedicate some resources and contribute to this as for me NetXMS can be very versatile tool for broad scenarios' usage from event-oriented telcos to more performance oriented ITs. We as a company (http://www.tempest.sk/service-management--it-/188s) have been long active in monitoring area using HP, IBM and BMC tools but the market pushes for more open and cheaper alternatives. We have committed ourselves to have such in portfolio and this so far seems the best choice with broadest functionality existing and still having clean architecture and extensibility (I miss these qualities in solutions like Zabbix).

I'll have a look at source code even I haven't really programmed for some time (and what I did was Java). I'll see if some of my guys would be able to help to move this forward by contributing code.

My take on providing this functionality would be (apart from core stuff itself):

  • Additional types/categories of classes should be manageable - be able to provide new through some administrative interface
  • (Sub)Agent API should probably be extended to be able to provide list of nodes and their metrics

I have another idea which I'd like you to ponder about: to me it seems it would be quite beneficial if a kind of agent/plugin would be created that would allow to utilize "monitoring packs" of other (preferably open-source) solutions to quickly broaden supported range of monitored resources. Something like universal adapter for Zabbix/ZenOSS/... packs. What do you think?