I prefer Rubbernet app for this. It gives a really great breakdown per application. You can also use it to remotely monitor network machines.
Here is the description from the website:
Real-time network dashboard
Rubbernet provides real-time monitoring so you can keep an eye on the
exact state of your live network connections. With the Activity
sidebar, you'll be able to see which applications are currently
communicating over your network. When connections are idle, they will
dim to let you know that traffic has stopped.
App bandwidth usage
Rubbernet provides a breakdown of per-app network usage, so you can
quickly detect apps that phone home, connect to certain servers
without your knowledge, or blame the app that's slowing down your
network.
Live graphs
Real-time charting displays download and upload transfer rates for all
active apps on all monitored Macs. Visualize your network usage and
get a bead on network hogs before they get out of control.
Remote monitoring
Monitor all computers on your network from one Rubbernet instance on
your Mac. No need to get up and open Rubbernet on a remote Mac to see
its network statistics. Unlike other network monitoring tools, there
is no complicated setup. It takes just a second to install or
uninstall the necessary tools for Rubbernet to work. After that, they
sit quietly in the background and provide the app with live data with
minimal resource consumption.
Multi-user support
Have multiple user accounts on your Macs? Rubbernet automatically
assigns every incoming and outgoing connections to the users they
belong to.