- Docs »
- Developer Guide »
- Debugging Failures
-
Debugging Failures/h1>
In this section:
[TOC]
When attempting to resolve issues, a number of potential areas should be checked for errors. For most of these errors, the best way to diagnose is to `SSH` in to the affected machine.
## SSHing in to Machines
You'll need to have a copy of the SSH Private Key specified in the CloudFormation deployment script. For servers in private subnets, you'll need to use SSH Agent Forwarding to tunnel through the NAT.
### Machines in Public Subnets
SSHing in to machines in Public Subnets (eg. Admin Server, File Transfer Server) can be accomplished with the following:
wzxhzdk:0
### Machines in Private Subnets
To get in to private subnet machines (Web Application Servers or PayGov Servers), you'll need to use SSH agent forwarding:
wzxhzdk:1
**Note**: When debugging errors in machines part of autoscaling groups, such as application servers, you may need to check logs in multiple servers to fully understand the error.
## Application Errors (404's, 500's, non-responsive pages)
After SSHing in to the affected machine(s), check the following logs for errors:
- `/var/log/webapp.log` (Django Application Log)
- `/var/log/gunicorn/*.log`
- `/var/log/nginx/*.log`
## PayGov Errors
First, check [Application Errors](#application-errors) on pay.gov servers. You may also want to check the nginx logs on the NAT machine, as that machine proxies requests for pay.gov.
## Odyssey Errors
If errors are encountered with Odyssey transfers, check the following logs for errors:
- `/var/log/webapp.log`
- `/var/log/syslog` (check for cron job failures)
- `/var/log/auth.log` (check for failed SFTP logins from Peace Corps)