Polymon suggestion

Topics: User Forum
Feb 7, 2007 at 5:35 PM
Hello - I really like what is done so far on this. Is there currently a way to access WMI information or is a WMI Monitor being considered/worked on? I also like the idea of a way to access the status from the web. One concern that I have is the amount of data accumulating in the database...I already have 70MB with just a few days and 5 ping monitors (ok so I have them running every 15 seconds ;). Are you aware of the open source project rrd? There are some concepts there that are nice in terms of data summary. It would be a good idea to publish a road map or task list because even though I have little time I am already using the software and I could help with some of the tasks (unfortunately I only have access to Visual Studio 2003 - but I could work on something using SharpDevelop or VB Express.

Above all else....thanks for making this package available!!

Feb 8, 2007 at 2:04 PM
I had not considered WMI but I will add this to my list.
I have started looking at a web interface, at the very least for monitoring (read-only), and eventually for managing the entire system. Web isn't quite my thing but I have to do a web project recently and it was actually much easier using .Net 2.0 than I remember with standard asp.net when I was still actively doing web development. :-)

As far as database size, you are right, the database will grow quite quickly depending on how often you are running the monitors. I am aware of rrd - my problem with these techniques is that you end up losing the detailed information relatively quickly (if I understand correctly). In many cases I have needed to go back to individual data points from months ago, not just averaged over days or weeks. I have however been thinking about this problem and will end up adding features to create automatic rollups for each monitor for set time periods (daily, weekly, monthly) and putting in a feature with each monitor that will specify how long to maintain individual data points and each rollup data point (so for example - keep data points for 60 days, daily averages for 120 days, weekly averages for 180 days, etc). This should help keep the database size in check.

To give you an idea, I have been running polymon with approx 70 monitors since March 2006. I now have approx 5 million rows in the MonitorEvent table. My database size currently stands at just under 2GB - so it's not too bad, but I can see wanting to rollup and delete some of this data over time.

I will look into putting a roadmap together - great suggestion.

Thanks for your feedback and glad to hear you are finding it useful! (I was basically annoyed at not finding any free windows/sql based monitoring system hence why I wrote this one - I think pricing for some of these other commercial systems is just too egregious).
Feb 13, 2007 at 1:59 PM
Roadmap has been published (or at least the start of one). Link to it can be found on the project home page.
Any feedback and suggestions are welcome!
Feb 15, 2007 at 3:40 AM
WMI Monitor and Monitor Editor (which incorporates a WMI browser and Query builder) has been added. For now, it is available in source code only but I will have a new PolyMon release soon anyway which will incorporate this and some other changes. It will still be a RC release, but V1 should be coming soon - I think the code base has stabilized enough to warrant a first prod release.
Feb 23, 2007 at 7:37 PM
Thank you very much for that! It took a while but I was actually able to compile the project with SharpDevelop 2 - with the exception of the data projects and installations - but that I was able to do manually (I only have access to VS 2003). You can also use the free tools from Microsoft but you have to compile SNMP with the C# compiler and switch to the VB compiler for the rest (and the data & installs you are out of luck). So I have the latest stuff running nicely. I did find one thing that might work better: Instead of using the 'Name' of the WMI object - I would suggest taking the 'DeviceID' instead. The specific problem I had is that I wanted to monitor the CPU load on a multi-core CPU server. Name - returns the exact same value for each core. DeviceID is unique. You only have to add this for the change to work:

'Make Sure Name property is returned so we can figure out instance names
If CounterQuery.SelectedProperties.Count > 0 AndAlso Not (CounterQuery.SelectedProperties.Contains("Name")) Then CounterQuery.SelectedProperties.Add("Name")
If CounterQuery.SelectedProperties.Count > 0 AndAlso Not (CounterQuery.SelectedProperties.Contains("DeviceID")) Then CounterQuery.SelectedProperties.Add("DeviceID")


Try 'Error is thrown if DeviceID property does not exist...
DisplayName = WMIChild.Item("DeviceID").ToString
Try 'Error is thrown if Name property does not exist...
DisplayName = WMIChild.Item("Name").ToString
DisplayName = WMIChild("__RELPATH").ToString()
DisplayName = "?"
End Try
End Try
End Try

I see lots of tables added to (I assume for summarization). Very nice work! Looking forward to the next release.



Feb 24, 2007 at 3:20 PM
I made the change you suggested. From what I have been finding out about WMI, the best thing would be to determine the key field for the requested object and use that as the name in polymon. Problem is that I would need to parse the query to extract the classname, and then query the attributes of each property (in a loop) to determine which property has been flagged as the "key" property - I may go back to this at some point.

But for now, you are right - I have actively been working on creating aggregate tables and retention schemes as well as rewriting the entire History pages (the reports for historical status and counter info) to use a new graphing package I found and the new agg tables. Should be ready (in Source Code) in a couple of weeks - after that need to test the installs, sql scripts, etc. So version 1 release is probably about a month out.