I am running 10 AWS EC2 instances. Each of them running different applications. I am looking for application level monitoring solution. Suppose, if Apache fails in any instance, it should notify me with logs. I know about "Nagios" but it is mainly for infrastructure monitoring. There are few tools for application monitoring (like, "Monit") but I have to install them manually in each server, which is not possible when you are having multiple number of EC2 instances (A global set up would be better, because number of instances will keep increasing).
It looks like your problem is two fold:
You want to monitor the status of critical applications provisioned on virtual machines
You want to be able to install these checks rather intuitively.
I'll answer these in the reverse order.
The easiest answer for #2 is that you can use configuration management like Chef, Ansible, or Puppet to provision machines. That way you could write a cookbook that as a software package is detected on the system a simple agent based check is dropped in as well. Codifying these things makes them much more manageable in the long term.
In terms of #1 you're probably looking for an agent based monitoring tool. Some examples of this would be Prometheus or Sensu but there's an endless list of them out there. These allow you to describe checks on the server and the master just collects whatever information is given to it.