Is there anything which can help with msmq monitoring? I'd like to get some event/monit when a message appears in queue and the same on leave.
Check out the Windows Management Performance counters.
If you look in your Administrative Tools and find "Performance Counters", you will be able to dig through there and find detailed metrics on what is happening on each message queue. This can also work for remote servers.
Should you wish to create some sort of automation around the monitoring, check out the .NET libraries for reading these performance counters. There is a very rich and comprehensive API which should give you everything you need!
You can achieve this by using MSMQ triggers
Related
I want to capture firewall Syslog data for the analysis purpose. What are the best practices for the same? In 10 min 300MB+ data is generated, so not sure dumping it in DB would be a feasible approach.
Any recommendations?
There are many tools available for this. I'd recommend LogZilla, since I work there, but a few other popular solutions are Splunk, ELK, and Loglogic. You would need to set up a server to receive the events, then configure your device to send its logs to that server. This would allow you to search those messages, as well as configure alerts for service impacting events. Managing your logs is an important part of network administration and has many benefits, so do your homework to determine your needs before selecting a solution.
After much research with various free and paid solution, we have finalized on https://www.graylog.org. Setup on the digital ocean was very straightforward. Primary because of strong API support besides other good stuff. It has log rotation settings that help to keep the log size under control.
Hope this helps.
I have come across a lot of tools to monitor Linux servers which could generate alerts as well when the CPU usage goes alarmingly high, or the disk space goes very low etc.
However, in terms of Ejabberd I couldn’t find an exisiting module which could do something similar. I am particularly looking to receive alerts pertaining to mnesia getting overloaded, space availability etc. and other basic parameters worth monitoring.
Have a look at Exometer. It can report via SNMP. It doesn't come with the monitoring you're talking about out of the box but you should be able to configure it to report on whatever you need.
SNMP support comes standard with Erlang. You should have a look at Erlang/OTP os_mon. Depending on your needs, it may do what you want out of the box.
Is there an application that is capable of monitoring AND logging information (to file) about another process (in particular IIS aspnet_wp.exe) like (in periods of time):
- memory usage of process
- cpu usage
Or maybe there is another way to monitor IIS process?
Thanks Pawel
You can check Process Monitor from Microsoft.
Process Monitor is an advanced
monitoring tool for Windows that shows
real-time file system, Registry and
process/thread activity. It combines
the features of two legacy
Sysinternals utilities, Filemon and
Regmon, and adds an extensive list of
enhancements including rich and
non-destructive filtering,
comprehensive event properties such
session IDs and user names, reliable
process information, full thread
stacks with integrated symbol support
for each operation, simultaneous
logging to a file, and much more.
One choice would be Process explorer http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
You might want to look at the ANTS Performance and Memory Profilers from Red Gate. I'm using their memory profiler to track down some memory issues as I write this.
Pretty much any monitoring system or framework that allows custom checks is capable of this.
You write your check and just put an extra line in it to post/print/put something to a file of your choice.
I for example use sensu for which I wright custom checks in ruby.
So I can easily do something like
if %x[{ping]}
ok
%x[{ print ‘all is well’ > syslog]}
end
and similar to that you can do for most other monitoring systems like Nagios etc.
From basic things likes page views per second to more advanced stuff like cpu or memory usage. Any ideas?
I think someone has asked the same type of question before here? Though I'm not too sure how helpful it is.
For CPU usage, etc, I would try RRDTool, or maybe something like Cacti.
Web service or web site? Since you mention page views: I believe you mean web site.
Google Analytics will probably give you everything you need to track usage statistics and best of all is free under most circumstances.
You might also want to monitor site up-time and have something to send email alerts if the site is down for some reason. We've used Nagios in the past and it works just fine.
I've been using monit (http://www.tildeslash.com/monit/) for years. It monitors CPU and memory usage as well as downtime for apache/mysql/etc... you can also configure it to notify you of outages and automatically restart services in real time.
I also use munin for reporting: http://munin.projects.linpro.no/
If you want reports on pageviews and whatnot, AWStats is the best I've used.
I use Nagios for general machine monitoring on Linux and I pretty much rely on Google Analytics for website reporting - I know that's not for everyone since some folks have privacy concerns about giving all their site data to Google.
Both are free and easy to install (Nagios is generally available through apt-get and Analytics is a pretty easy install on a site).
Nagios, however, can be a bear to configure.
I cast my vote for monit as well. The nice thing about is that it understands apache-status info and can notify/take actions when say 80% of max num of apache workers are in "busy" state.
but you need something else for hardware and general monitoring, something SNMP-aware, like zennos or zabbix
Munin and Cacti provide very nice interfaces and pre-built scripts for rrdtool. They can also monitor multiple servers and send out warnings and alerts through naigos.
What, at a minimum, should an application health-monitoring system do for you (the developer) and/or your boss (the IT Manager) and/or the operations (on-call) staff?
What else should it do above the minimum requirements?
Is monitoring the 'infrastructure' applications (ms-exchange, apache, etc.) sufficient or do individual user applications, web sites, and databases also need to be monitored?
if the latter, what do you need to know about them?
ADDENDUM: thanks for the input, i was really looking for application-level monitoring not infrastructure monitoring, but it is good to know about both
Whether the application is running.
Unusual cpu/memory/network usage.
Report any unhandled exceptions.
Status of various modules (if applicable).
Status of external components (databases, webservices, fileservers, etc.)
Number of pending background tasks (if applicable).
Maybe track usage of the application and report statistics on most/less used functionalities so you know where optimizations are most beneficial.
The answer is 'it depends'. Why do you need to monitor? How large is your operations staff? Do you need reporting? What is the application environment? Who cares if the application fails? Who cares if an exception happens? Are any of the errors recoverable? I could ask questions like these for a long time.
Great question.
We've been looking for some application-level monitoring solution for our needs some time ago without any luck. Popular monitoring solution are mostly addressed to monitor infrastrcture and - in my opinion - they are too complicated for a requirements of most of small and mid-sized companies.
We required (mainly) following features:
alerts - we wanted to know about
incident as fast as possible
painless management - hosted service wouldbe
the best
visualizations - it's good to know what is going on and take some knowledge from the data
Because we didn't find suitable solution we started to write our own. Finally we've ended with up-and-running service called AlertGrid. (You can check it for free of course.)
The idea behind it is to provide an easy way to handle custom monitoring scenarios. Integration API is very simple (one function with two required parameters). At the momment we and others are using it for:
monitor scheduled tasks (cron jobs)
monitor entire application logic execution
alert on errors in applications
we are also working on examples of basic infrastructure monitoring using AlertGrid
This is such an open ended question, but I would start with physical measurements.
1. Are all the machines I think are hosting this site pingable?
2. Are all the machines which should be serving content actually serving some content? (Ideally this would be hit from an external network.)
3. Is each expected service on each machine running?
3a. Have those services run recently?
4. Does each machine have hard drive space left? (Don't forget the db)
5. Have these machines been backed up? When was the last time?
Once one lays out the physical monitoring of the systems, one can address those specific to a system?
1. Can an automated script log in? How long did it take?
2. How many users are live? Have there been a million fake accounts added?
...
These sorts of questions get more nebulous, and can be very system specific. They also usually can be derived reactively when responding to phsyical measurements. Hard drive fill up, maybe the web server logs got filled up because a bunch of agents created too many fake users. That kind of thing.
While plan A shouldn't necessarily be reactive, it is the way many a site setup a monitoring system.
Minimum: make sure it is running :)
However, some other stuff would be very useful. For example, the CPU load, RAM usage and (in multiuser systems) which user is running what. Also, for applications that access network, a list of network connections for each app. And (if you have access to client computer(s)) it would be cool to be able to see the 'window title' of the app - maybe check each 2-3 minutes if it changed and save it. Also, a list of files open by the application could be very useful, but it is not a must.
I think this is fairly simple - monitor so that you can be warned early enough before something goes wrong. That means monitor dependencies and the application itself.
It's really hard to provide specifics if you're not going to give details on the application you're monitoring, so I'd say use that as a general rule.
At a minimum you want to know that the system is healthy. This is subjective in what defines your system is healthy. Is it computers are up, the needed resources exist, the data is flowing through the system, the data is properly producing results, etc, etc.
In my project we do monitoring of most of this and then some. It really comes down to what is the highest level that you can use to analyze that everything is working. In our case we need to know down to the data output. If you just need to know down to the are these machines up it saves you on trying to show an inexperienced end user what is wrong.
There are also "off the shelf" tools that will do a lot of the hard work for you if you are just looking too hard into data results. I particularly liked Nagios when I was looking around but we needed more than it could easily show so I wrote our own monitoring system. Basically we also watch for "peculiarities" in the system, memory / cpu spikes, etc...
thanks everyone for the input, i was really looking for application-level monitoring not infrastructure monitoring, but it is good to know about both
the difference is:
infrastructure monitoring would be servers plus MS Exchange Server, Apache, IIS, and so forth
application monitoring would be user machines and the specific programs that they use to do their jobs, and/or servers plus the data-moving/backend applications that they run to keep the data flowing
sometimes it's hard to draw the line - an oversimplified definition might be "if your team wrote it, it's an application; if you bought it, it's infrastructure"
i think in practice it is best to monitor both
What you need to do is to break down the business process of the application and then have the software emit events at major business components. In addition, you'll need to create end to end synthetic transactions (eg. emulating end users clicking on a website). All that data would be fed into an monitoring tool. In the past, I've done JMX for applications of which flowed into Tivoli Monitoring's JMX Adapter and then I've done scripts that implement a "fake user" and then pipe in the results into Tivoli Monitoring's Script Adapter. Tivoli Monitoring takes the data and then creates application health and performance charts from that raw data.