I want to monitor server health,ie CPU ,memory,swap and disk usage. what is the difference if I use simple linux commands like top,iostat etc and if I use nagios plugins...
Using the Linux commands are more of a slice in time than a monitoring tool. Nagios allows you to run checks on a specific items like CPU, Memory, swap... This gives you the ability to alert (Email, SMS...) when something is out of a particular metric. For instance, if your drive fills to 80% you can be alerted to go and do something about it. Another example would be if your CPU usage shoots up you can get an alert.
However, Nagios and simple Linux tools only give you a slice of time. Nagios will give you some idea of what is going on over time. If you want to know what your server is doing over a period of time, which is arguably more useful in 'monitoring.' You may consider something like Cacti. Cacti is basically like Nagios, only instead of alerting you, it graphs the performance over time. So, if you have a time period where your CPU is shooting up, you can go and look at the server during that time, and potentially find other issues that are occurring like RAM usage increase.
You can take a look at Cacti here: http://www.cacti.net/
nagios is a system that can alert you if something on your server goes wrong. It can send you emails, and the emails can also be forwarded into SMS if you want to do so.
Using comands like top/iostat always require you to go there, execute them, and look at the output.