This is a set of useful things that may help you debug CloudFoundry problems.

Finding which cell an app instance is running on

First, get the GUID of the app you want to investigate:

$ cf app APPNAME --guid
c6d1259c-8057-489e-9ac2-beaa896c2bf3

Then use cf curl and jq to extract the information from the stats endpoint:

$ cf curl /v2/apps/c6d1259c-8057-489e-9ac2-beaa896c2bf3/stats | jq 'with_entries(.value = .value.stats.host)'
{
  "0": "10.0.33.4",
  "1": "10.0.34.4"
}

You can use bosh vms to correlate the IPs to BOSH job indexes or VM UUIDs.

Downloading an app container

If there are problems running an app then cf files will not function as the container must be running. An alternative is to grab the droplet image directly from CloudFoundry and unpack it locally. This can also be useful when you need to obtain a copy of a deployed app if you don't have the source.

First, get the GUID of the app you want to investigate:

$ cf app APPNAME --guid
5ffab66f-0be2-4a65-b9ff-40a902a05b50

Then use the cf curl wrapper to make an API call that retrieves the droplet and unpack it:

$ mkdir droplet && cd droplet
$ cf curl /v2/apps/5ffab66f-0be2-4a65-b9ff-40a902a05b50/droplet/download > image.tar.gz
$ tar -zxf image.tar.gz

Note: Tar will exit complaining about invalid gzip blocks - this is because the droplet has other data (such as a signature) appended to the end of the image. This isn't a problem, all the files for the image will be unpacked anyway.

You should now have everything used to run the app and all the build logs. app contains everything the user cf push-ed plus any change from the staging phase (for example, compiled binaries):

$ ls -lah
total 41M
drwxr-xr-x  5 ubuntu ubuntu 4.0K Dec  9 11:55 .
drwxr-xr-x 23 ubuntu ubuntu 4.0K Dec  8 19:43 ..
drwxr--r-- 10 ubuntu ubuntu 4.0K Dec  8 16:04 app
-rw-rw-r--  1 ubuntu ubuntu  41M Dec  8 13:41 image.tar.gz
drwxr-xr-x  2 ubuntu ubuntu 4.0K Dec  8 13:53 logs
-rw-r--r--  1 ubuntu ubuntu  298 Dec  8 13:27 staging_info.yml
drwxr-xr-x  2 ubuntu ubuntu 4.0K Dec  8 13:27 tmp