I learnt about few application profiling tools like Jconsole and VisualVM. It is possible to monitor the memory usage and performance of the web application using these tools. But the problem with such kind of tools is that, one has to keep the profiler open and has to manually look at the statistical data. One has to manually save the data whenever required. I am looking for a tool which can run in background and can log the memory utilization data in to separate log files continuously at regular intervals. Can anyone let me know if there is a possibility as such.
I also require features such as creating alerts and setting up automated emails to receive when the server is down or when it is performing poor.
Splunk and Nagios are two very common reporting and alerting tools.
Splunk is more of an ongoing tracking and reporting system (commonly used to monitor log files), and you can generate alerts based on various criteria (a particular message appears in a log file, the value reported for free memory drops below a certain value, ...).
Nagios is dedicated to monitoring and alerting based on the current status of your systems - CPU usage, memory usage, network traffic, size of log files, amount of DB transactions, ...