You ran the deployment into the VPC private subnet. Code shipped. Proxy up. Health checks green. But when the first bug hit production, the trail went cold. No stdout. No stderr. No way to debug without tearing a hole in the network plan you fought to lock down.
Debug logging inside a private subnet isn’t hard because it’s complex — it’s hard because everything that makes it secure also makes it silent. There’s no public internet to stream logs. No direct SSH. No ping outside the wall. Deploy a proxy in the middle and you gain flexibility, but you also invite failure points.
The fix starts with knowing what’s stopping the logs. In a locked VPC deployment, every port, route, and NAT config matters. Even if your proxy tunnels requests in and out, the path your logs take is not the path your traffic takes. A common mistake is assuming that if the service can fetch, it can also post logs. That’s not always true. TLS handshakes break in hidden ways. IAM roles miss the exact policy you need. S3 or CloudWatch calls time out in silence.
To debug logging access here, trace it layer by layer. Start from the application itself. Can it write to local disk? Can it resolve the logging endpoint from inside the subnet? Is the proxy configured to allow the correct outbound traffic type, not just inbound API requests? Check DNS resolution from inside the app container. Force a minimal logging payload and watch if it exits. This shows whether it’s an application hang or a network block.