I have total 8 API Request configured to run tests including 5 GET requests and 3 POST requests. When I running this test with 300 concurrent users with 1 min ramp-up time, after a few seconds server utilized 100%. So I want to know that is there any way to monitor which API request consumes more CPU and RAM?
JMeter treats the system as a "black box", if you think that one request is consuming more resources than others you can try to run the requests separately.
If for some reason you cannot split the test to run API request independently you can consider using a profiler tool on server side in order to check which request is to blame.
Additionally you can use Active Threads Over Time, Transactions per Second and Response Times Over Time charts in order to correlate the increasing load with other metrics. The aforementioned charts can be installed using JMeter Plugins Manager
Please refer below blogs from blazmeter and dzone.com which explains on same topic. Below are some urls.
You can use
PerfMon Server Agent JMeter Plugin to monitor server CPU, Memory usage during Load Test.
Follow the guideline mention on BlazeMeter blog