
We downloaded, installed, and are experimenting with APM. We have some in-house written applications that we would like to monitor using an HTTP interface similar to the Tomcat Monitor. I made an experiment and have that template working fetching a custom page I created. I see that something is fetching the web page and parsing the values out of it. I exported the template, and looking at it I see it's a .NET class array serialization. There is "something" underneath this template that is driving what variables are parsed and has the /manager/status part of the URL hard coded into it. It is that "something" I need to be able to write. Is there an API for creating a .NET DLL or ActiveX component that can be installed in Orion to extend APM to be able to monitor custom apps with an HTTP interface? Basically, something very similar to the Tomcat monitor, but preferably I'd provide a more generic GET/POST interface.
Check out the Orion SDK forum for the download and further information that might answer your question.
The Orion SDK is the wrong path for this.
What might help is the Perl script for monitoring the Apache server status page that we used to ship back before we compiled it into its own monitor. It would pick out certain values from the web page and return them to APM as a statistic.
You can find this old Linux script template in the Content Exchange:
I hope you'll be able to customize the script to pick out the statistics you're reporting on your custom status web page.
Thanks, Roger. Why do you say the Orion SDK is the wrong path? Frankly, I have no interest in the server overhead of repeatedly running Perl scripts.
APM currently does not support extensibility by using custom .NET plugins - we don't expose any API to do that. That's why Orion SDK won't help here, it's just not supported.
I agree with Roger, that if default set of monitors in APM doesn't suit your needs, then only option is to write a script that will do what you want and use one of our script monitors (Windows Script Monitor, PowerShell Script Monitor, Linux/Unix Script Monitor) to execute it and parse results.
Thanks, Martin, I agree with you and Roger. I looked at the SDK, and obviously, it's not applicable. I'm looking at doing this with Windows performance counters. If all else fails, to scripting we go.
Actually, Roger and Martin, maybe I'm going about this the wrong way entirely. The software I need to monitor is software I wrote. I can output these counters in just about any manner that would be most efficient for Orion. The only reason I was thinking of using the HTTP interface is that I already have this information available that way. However, we already use Orion NPM for monitoring many of our network elements, the network guys like it a lot, we would like APM anyway for the database server monitoring, and it's just plain nice to have everything wrapped up in one monitoring package. So, it's definitely worth implementing a new facility to support Orion APM.
The data we care about is almost trivially simple: queue counts associated with various enpoint names. In CSV, the output would be like:
QueueCount,endpoint_name_1,124567,233,456,89,2043
QueueCount,endpoint_name_2,34567,123,678,16,4096
QueueCount,endpoint_name_3,345345,234,4235,56,2435
...
QueueCount,endpoint_name_4,23423,345,3456,23423,23235
There are also some singleton time based counters I would like to put out. Just something like:
TotalMessages,4346534
All are simply unsigned 32 bit counts, except, of course, the data element keyword and endpoint names which are simple short strings with no whitespace.
What would be the most efficient means of getting this data to Orion? Flat file? WMI performance counters? Database rows? The one thing I do not want to have to mess around with is SNMP, way too much overhead and rather painful amount of coding.
I'd appreciate anyone's advice on this.
Are you aware that APM natively supports Windows Performance Counters without having to write any special code? In the Admin section of the WebUI for APM you can browse for performance counters on Windows systems and then apply them to an Application Monitor or an Application Template.
Hope this helps!
Thanks, Byron, I was aware of that, but as Windows doesn't natively have performance counters for our applications, there is some code that has to be written. That to create and write to the custom counters.
Database rows, and fetching the column via SQL/ODBC/Oracle Monitor would be by far the easiest.