The first thing to do is to make sure that they are actually up.
Once verifying that they are up, you should verify that Marvel is installed on the node
curl -XGET host:port/_cat/plugins?v
After verifying that Marvel is installed on the node, the most commonly observed issue is that the node was not restarted after installation. Each node running the Marvel plugin must be restarted in order to load the Marvel exporter code at startup. If this step does not happen, then it will not report stats about itself.
Finally, the last common issue is that the machines hosting the Marvel cluster are out of sync in terms of their time.
For Unix machines, you can run date -u to get the current date in UTC. For Windows machines, you can run echo %date% %time% (local time). If these times are wildly out of sync, or if they are wildly in the past or in the future, but in sync, then you will see problems.
In the above picture, the node containing the primary shards for Marvel happened to be 6 minutes behind the requester's time (the client machine's browser), which is why the graphs are missing a few minutes of data.
Another node in the Marvel cluster, which happened to contain the replicas, was about 16 minutes ahead of the requester's time. As a result, the times associated with the response to looking for nodes and indices were considered too stale when compared to now from that node. That node happened to be the node used to request Marvel stats and that is why the page is missing node details. If you viewed the other node's Marvel page, then you would see that the node reporting itself as stale and you would not see the other node at all.
On most Linux systems, you can use something like ntp to sync time between servers.