This script runs on Diego Cells and will output the app_guid, PID, and Cell IP for any application in a CLOSE_WAIT state.
source /var/vcap/jobs/cfdot/bin/setup
for i in $(sudo /var/vcap/packages/runc/bin/runc --root /run/containerd/runc/garden list | grep 'envoy' | awk '{print $2}')
do
sockets=`nsenter -t $i -n ss -ntpo | egrep CLOSE`
if [[ "$sockets" == *"CLOSE"* ]]
then
INSTANCE_GUID=`sudo /var/vcap/packages/runc/bin/runc --root /run/containerd/runc/garden list | grep $i | awk '{print $1}' | sed s/-envoy//`
echo -n "APPGUID="
cfdot actual-lrps | egrep $INSTANCE_GUID| jq -r '.process_guid' | cut -d "-" -f 1,2,3,4,5
echo -n "CELL_ADDRESS="
cfdot actual-lrps | egrep $INSTANCE_GUID| jq -r '.address'
nsenter -t $i -n ss -ntpo | egrep CLOSE
fi
done
To run this command on all Diego Cells, you will need to scp the script to /tmp and then move it to /root with these steps:
bosh scp script diego_cell:/tmp/ bosh ssh diego_cell -c "sudo chmod 775 /tmp/script" bosh ssh diego_cell -c "sudo mv /tmp/script /root"
You can compile a list of app GUIDs in a CLOSE_WAIT state by taking output and running this command: grep APPGUID output | awk -F '=' '{ print $2 }' > app_guids.
You can then take the list of app_guids and feed it into this script - it will output the app name, space, and org for that application.
Note: This needs to be ran from somewhere connected to same foundation with CF CLI (login with UAA admin user).
for i in $(cat app_guids)
do
echo "app guid..." $i
guid=$i
cf curl /v2/apps/$guid | jq .entity.name
cf curl $(cf curl /v2/apps/$guid | jq -r .entity.space_url) | jq .entity.name
cf curl $(cf curl $(cf curl /v2/apps/$guid | jq -r .entity.space_url) | jq -r .entity.organization_url) | jq .entity.name
done